message_service.go   A
last analyzed

Size/Duplication

Total Lines 66
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
cc 9
eloc 37
dl 0
loc 66
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A httpsms.*MessageService.Send 0 17 4
B httpsms.*MessageService.Index 0 29 5
1
package httpsms
2
3
import (
4
	"context"
5
	"encoding/json"
6
	"net/http"
7
	"strconv"
8
)
9
10
// MessageService is the API client for the `/` endpoint
11
type MessageService service
12
13
// Send adds a new SMS message to be sent by the android phone
14
//
15
// API Docs: https://api.httpsms.com/index.html#/Messages/post_messages_send
16
func (service *MessageService) Send(ctx context.Context, params *MessageSendParams) (*MessageResponse, *Response, error) {
17
	request, err := service.client.newRequest(ctx, http.MethodPost, "/v1/messages/send", params)
18
	if err != nil {
19
		return nil, nil, err
20
	}
21
22
	response, err := service.client.do(request)
23
	if err != nil {
24
		return nil, response, err
25
	}
26
27
	message := new(MessageResponse)
28
	if err = json.Unmarshal(*response.Body, message); err != nil {
29
		return nil, response, err
30
	}
31
32
	return message, response, nil
33
}
34
35
// Index returns a list of messages which are sent between 2 phone numbers. It will be sorted by timestamp in descending order.
36
//
37
// API Docs: https://api.httpsms.com/index.html#/Messages/get_messages
38
func (service *MessageService) Index(ctx context.Context, params *MessageIndexParams) (*MessagesResponse, *Response, error) {
39
	request, err := service.client.newRequest(ctx, http.MethodGet, "/v1/messages", nil)
40
	if err != nil {
41
		return nil, nil, err
42
	}
43
44
	q := request.URL.Query()
45
	q.Add("skip", strconv.Itoa(params.Skip))
46
	q.Add("owner", params.Owner)
47
	q.Add("contact", params.Contact)
48
	q.Add("limit", strconv.Itoa(params.Limit))
49
50
	if params.Query != nil {
51
		q.Add("query", *params.Query)
52
	}
53
54
	request.URL.RawQuery = q.Encode()
55
56
	response, err := service.client.do(request)
57
	if err != nil {
58
		return nil, response, err
59
	}
60
61
	messages := new(MessagesResponse)
62
	if err = json.Unmarshal(*response.Body, messages); err != nil {
63
		return nil, response, err
64
	}
65
66
	return messages, response, nil
67
}
68