// Copyright (c) Alex Ellis 2017. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

package queue

import (
	"net/http"
	"net/url"
)

// Request for asynchronous processing
type Request struct {
	// Header from HTTP request
	Header http.Header

	// Host from HTTP request
	Host string

	// Body from HTTP request to use for invocation
	Body []byte

	// Method from HTTP request
	Method string

	// Path from HTTP request
	Path string

	// QueryString from HTTP request
	QueryString string

	// Function name to invoke
	Function string

	// QueueName to publish the request to, leave blank
	// for default.
	QueueName string

	// Used by queue worker to submit a result
	CallbackURL *url.URL `json:"CallbackUrl"`
}

// RequestQueuer can public a request to be executed asynchronously
type RequestQueuer interface {
	Queue(req *Request) error
}

// CanQueueRequests can take on asynchronous requests
type CanQueueRequests interface {
	Queue(req *Request) error
}

// Copyright (c) Alex Ellis 2017. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

package queue

import "net/url"
import "net/http"

// Request for asynchronous processing
type Request struct {
	Header      http.Header
	Host        string
	Body        []byte
	Method      string
	Path        string
	QueryString string
	Function    string
	CallbackURL *url.URL `json:"CallbackUrl"`
}

// CanQueueRequests can take on asynchronous requests
type CanQueueRequests interface {
	Queue(req *Request) error
}

--- 
+++ 
@@ -3,19 +3,45 @@
 
 package queue
 
-import "net/url"
-import "net/http"
+import (
+	"net/http"
+	"net/url"
+)
 
 // Request for asynchronous processing
 type Request struct {
-	Header      http.Header
-	Host        string
-	Body        []byte
-	Method      string
-	Path        string
+	// Header from HTTP request
+	Header http.Header
+
+	// Host from HTTP request
+	Host string
+
+	// Body from HTTP request to use for invocation
+	Body []byte
+
+	// Method from HTTP request
+	Method string
+
+	// Path from HTTP request
+	Path string
+
+	// QueryString from HTTP request
 	QueryString string
-	Function    string
+
+	// Function name to invoke
+	Function string
+
+	// QueueName to publish the request to, leave blank
+	// for default.
+	QueueName string
+
+	// Used by queue worker to submit a result
 	CallbackURL *url.URL `json:"CallbackUrl"`
+}
+
+// RequestQueuer can public a request to be executed asynchronously
+type RequestQueuer interface {
+	Queue(req *Request) error
 }
 
 // CanQueueRequests can take on asynchronous requests
Add QueueName to async requests

The queue's name will be consumed by the queue worker to
publish to other topics / slow queues.

Signed-off-by: Alex Ellis (OpenFaaS Ltd) <5f7133baa0f5c7ca63ff11e11f2e2b0d2cf077c8@gmail.com>
