report.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 29 Apr 2017 17:27:15 +0200
changeset 156 70aadba26338
parent 155 0c581e0108da
child 159 408aa794d9bb
permissions -rw-r--r--
Add field "All" to LimitParams, change Limit behaviour If All is true, the library will send several requests (if needed) until the API server has sent all the results. If not, and if a Limit is set, the library will try to fetch at least this number of results.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
130
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     1
/*
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     2
Copyright 2017 Mikael Berthe
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     3
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     4
Licensed under the MIT license.  Please see the LICENSE file is this directory.
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     5
*/
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 125
diff changeset
     6
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
     7
package madon
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
     8
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
     9
import (
125
2bbb72b9ebf6 Rework the API wrappers to handle arrays of parameters
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
    10
	"fmt"
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    11
	"strconv"
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    12
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    13
	"github.com/sendgrid/rest"
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    14
)
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    15
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    16
// GetReports returns the current user's reports
156
70aadba26338 Add field "All" to LimitParams, change Limit behaviour
Mikael Berthe <mikael@lilotux.net>
parents: 155
diff changeset
    17
// (I don't know if the limit options are used by the API server.)
149
5f922977d7c7 Add support for limits and paging ({since,max}_id) API parameters
Mikael Berthe <mikael@lilotux.net>
parents: 138
diff changeset
    18
func (mc *Client) GetReports(lopt *LimitParams) ([]Report, error) {
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    19
	var reports []Report
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
    20
	if err := mc.apiCall("reports", rest.Get, nil, lopt, nil, &reports); err != nil {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 116
diff changeset
    21
		return nil, err
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    22
	}
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    23
	return reports, nil
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    24
}
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    25
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    26
// ReportUser reports the user account
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
    27
func (mc *Client) ReportUser(accountID int, statusIDs []int, comment string) (*Report, error) {
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    28
	if accountID < 1 || comment == "" || len(statusIDs) < 1 {
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    29
		return nil, ErrInvalidParameter
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    30
	}
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    31
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 116
diff changeset
    32
	params := make(apiCallParams)
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 116
diff changeset
    33
	params["account_id"] = strconv.Itoa(accountID)
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 116
diff changeset
    34
	params["comment"] = comment
125
2bbb72b9ebf6 Rework the API wrappers to handle arrays of parameters
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
    35
	for i, id := range statusIDs {
134
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
    36
		if id < 1 {
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
    37
			return nil, ErrInvalidID
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
    38
		}
125
2bbb72b9ebf6 Rework the API wrappers to handle arrays of parameters
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
    39
		qID := fmt.Sprintf("status_ids[%d]", i+1)
2bbb72b9ebf6 Rework the API wrappers to handle arrays of parameters
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
    40
		params[qID] = strconv.Itoa(id)
2bbb72b9ebf6 Rework the API wrappers to handle arrays of parameters
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
    41
	}
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    42
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    43
	var report Report
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
    44
	if err := mc.apiCall("reports", rest.Post, params, nil, nil, &report); err != nil {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 116
diff changeset
    45
		return nil, err
116
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    46
	}
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    47
	return &report, nil
d237ffdd75c0 Add reports API calls
Mikael Berthe <mikael@lilotux.net>
parents: 19
diff changeset
    48
}