Documentation ¶
Overview ¶
Package client provides a basic REST client for Inbucket
Example ¶
Example demonstrates basic usage for the Inbucket REST client.
package main import ( "fmt" "log" "net/http" "net/http/httptest" "github.com/gorilla/mux" "github.com/inbucket/inbucket/v3/pkg/rest/client" ) // Example demonstrates basic usage for the Inbucket REST client. func main() { // Setup a fake Inbucket server for this example. baseURL, teardown := exampleSetup() defer teardown() // Begin by creating a new client using the base URL of your Inbucket server, i.e. // `localhost:9000`. restClient, err := client.New(baseURL) if err != nil { log.Fatal(err) } // Get a slice of message headers for the mailbox named `user1`. headers, err := restClient.ListMailbox("user1") if err != nil { log.Fatal(err) } for _, header := range headers { fmt.Printf("ID: %v, Subject: %v\n", header.ID, header.Subject) } // Get the content of the first message. message, err := headers[0].GetMessage() if err != nil { log.Fatal(err) } fmt.Printf("\nFrom: %v\n", message.From) fmt.Printf("Text body:\n%v", message.Body.Text) // Delete the second message. err = headers[1].Delete() if err != nil { log.Fatal(err) } } // exampleSetup creates a fake Inbucket server to power Example() below. func exampleSetup() (baseURL string, teardown func()) { router := mux.NewRouter() server := httptest.NewServer(router) // Handle ListMailbox request. router.HandleFunc("/api/v1/mailbox/user1", func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(`[ { "mailbox": "user1", "id": "20180107T224128-0000", "subject": "First subject" }, { "mailbox": "user1", "id": "20180108T121212-0123", "subject": "Second subject" } ]`)) }) // Handle GetMessage request. router.HandleFunc("/api/v1/mailbox/user1/20180107T224128-0000", func(w http.ResponseWriter, r *http.Request) { _, _ = w.Write([]byte(`{ "mailbox": "user1", "id": "20180107T224128-0000", "from": "admin@inbucket.org", "subject": "First subject", "body": { "text": "This is the plain text body" } }`)) }) // Handle Delete request. router.HandleFunc("/api/v1/mailbox/user1/20180108T121212-0123", func(w http.ResponseWriter, r *http.Request) { // Nop. }) return server.URL, func() { server.Close() } }
Output: ID: 20180107T224128-0000, Subject: First subject ID: 20180108T121212-0123, Subject: Second subject From: admin@inbucket.org Text body: This is the plain text body
Index ¶
- type Client
- func (c *Client) DeleteMessage(name, id string) error
- func (c *Client) GetMessage(name, id string) (message *Message, err error)
- func (c *Client) GetMessageSource(name, id string) (*bytes.Buffer, error)
- func (c *Client) ListMailbox(name string) (headers []*MessageHeader, err error)
- func (c *Client) MarkSeen(name, id string) error
- func (c *Client) PurgeMailbox(name string) error
- type Message
- type MessageHeader
- type Option
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Client ¶
type Client struct {
// contains filtered or unexported fields
}
Client accesses the Inbucket REST API v1
func New ¶
New creates a new v1 REST API client given the base URL of an Inbucket server, ex: "http://localhost:9000"
func (*Client) DeleteMessage ¶
DeleteMessage deletes a single message given the mailbox name and message ID.
func (*Client) GetMessage ¶
GetMessage returns the message details given a mailbox name and message ID.
func (*Client) GetMessageSource ¶
GetMessageSource returns the message source given a mailbox name and message ID.
func (*Client) ListMailbox ¶
func (c *Client) ListMailbox(name string) (headers []*MessageHeader, err error)
ListMailbox returns a list of messages for the requested mailbox
func (*Client) PurgeMailbox ¶
PurgeMailbox deletes all messages in the given mailbox
type Message ¶
type Message struct { *model.JSONMessageV1 // contains filtered or unexported fields }
Message represents an Inbucket message including content
type MessageHeader ¶
type MessageHeader struct { *model.JSONMessageHeaderV1 // contains filtered or unexported fields }
MessageHeader represents an Inbucket message sans content
func (*MessageHeader) Delete ¶
func (h *MessageHeader) Delete() error
Delete deletes this message from the mailbox
func (*MessageHeader) GetMessage ¶
func (h *MessageHeader) GetMessage() (message *Message, err error)
GetMessage returns this message with content
type Option ¶
type Option interface {
// contains filtered or unexported methods
}
Option can apply itself to the private options type.
func WithTransport ¶
func WithTransport(transport http.RoundTripper) Option
WithTransport sets the transport for the rest client. Transport specifies the mechanism by which individual HTTP requests are made. If nil, http.DefaultTransport is used.