Skip to content

Commit

Permalink
Merge pull request #16 from tiwillia/ping
Browse files Browse the repository at this point in the history
Implement simple ping functionality
  • Loading branch information
keighl committed Jun 5, 2017
2 parents 2d4a292 + 990b4de commit 1775dd4
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 7 deletions.
38 changes: 31 additions & 7 deletions mandrill.go
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,22 @@ func ClientWithKey(key string) *Client {
}
}

func (c *Client) Ping() (pong string, err error) {
var data struct {
Key string `json:"key"`
}

data.Key = c.Key

body, err := c.sendApiRequest(data, "users/ping.json")
if err != nil {
return pong, err
}

err = json.Unmarshal(body, &pong)
return pong, err
}

// MessagesSend sends a message via an API client
func (c *Client) MessagesSend(message *Message) (responses []*Response, err error) {

Expand Down Expand Up @@ -279,28 +295,36 @@ func (c *Client) sendMessagePayload(data interface{}, path string) (responses []
return nil, errors.New("SANDBOX_ERROR")
}

body, err := c.sendApiRequest(data, path)
if err != nil {
return responses, err
}
responses = make([]*Response, 0)
err = json.Unmarshal(body, &responses)
return responses, err
}

func (c *Client) sendApiRequest(data interface{}, path string) (body []byte, err error) {
payload, _ := json.Marshal(data)

resp, err := c.HTTPClient.Post(c.BaseURL+path, "application/json", bytes.NewReader(payload))
if err != nil {
return responses, err
return body, err
}

defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
body, err = ioutil.ReadAll(resp.Body)
if err != nil {
return responses, err
return body, err
}

if resp.StatusCode >= 400 {
resError := &Error{}
err = json.Unmarshal(body, resError)
return responses, resError
return body, resError
}

responses = make([]*Response, 0)
err = json.Unmarshal(body, &responses)
return responses, err
return body, err
}

// AddRecipient appends a recipient to the message
Expand Down
27 changes: 27 additions & 0 deletions mandrill_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,33 @@ func Test_MessageSend_Fail(t *testing.T) {
expect(t, reflect.DeepEqual(correctResponse, err), true)
}

// Ping //////////

func Test_Ping_Success(t *testing.T) {
server, m := testTools(200, `"PONG!"`)
defer server.Close()
response, err := m.Ping()

expect(t, response, "PONG!")
expect(t, err, nil)
}

func Test_Ping_Fail(t *testing.T) {
server, m := testTools(400, `{"status":"error","code":-1,"name":"Invalid_Key","message":"Invalid API key"}`)
defer server.Close()
response, err := m.Ping()

expect(t, response, "")

correctMessagesResponse := &Error{
Status: "error",
Code: -1,
Name: "Invalid_Key",
Message: "Invalid API key",
}
expect(t, reflect.DeepEqual(correctMessagesResponse, err), true)
}

// TEST Keys //////////

func Test_SANDBOX_SUCCESS(t *testing.T) {
Expand Down

0 comments on commit 1775dd4

Please sign in to comment.