status.go
author Mikael Berthe <mikael@lilotux.net>
Sat, 29 Apr 2017 17:30:58 +0200
changeset 157 6e9d927d5e32
parent 155 0c581e0108da
child 159 408aa794d9bb
permissions -rw-r--r--
Bump library version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
130
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
     1
/*
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
     2
Copyright 2017 Mikael Berthe
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
     3
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 120
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: 120
diff changeset
     5
*/
c450bb73f59a Update credits
Mikael Berthe <mikael@lilotux.net>
parents: 120
diff changeset
     6
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
     7
package madon
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
     8
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
     9
import (
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    10
	"fmt"
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    11
	"strconv"
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    12
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    13
	"github.com/sendgrid/rest"
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    14
)
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    15
108
3f21113728f4 Fix typo in comment
Mikael Berthe <mikael@lilotux.net>
parents: 106
diff changeset
    16
// updateStatusOptions contains option fields for POST and DELETE API calls
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    17
type updateStatusOptions struct {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    18
	// The ID is used for most commands
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    19
	ID int
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    20
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    21
	// The following fields are used for posting a new status
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    22
	Status      string
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    23
	InReplyToID int
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    24
	MediaIDs    []int
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    25
	Sensitive   bool
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    26
	SpoilerText string
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    27
	Visibility  string // "direct", "private", "unlisted" or "public"
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    28
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    29
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    30
// queryStatusData queries the statuses API
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    31
// The operation 'op' can be empty or "status" (the status itself), "context",
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    32
// "card", "reblogged_by", "favourited_by".
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    33
// The data argument will receive the object(s) returned by the API server.
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
    34
func (mc *Client) queryStatusData(statusID int, op string, data interface{}) error {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    35
	if statusID < 1 {
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    36
		return ErrInvalidID
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    37
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    38
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    39
	endPoint := "statuses/" + strconv.Itoa(statusID)
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    40
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    41
	if op != "" && op != "status" {
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    42
		switch op {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    43
		case "context", "card", "reblogged_by", "favourited_by":
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    44
		default:
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    45
			return ErrInvalidParameter
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    46
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    47
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    48
		endPoint += "/" + op
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    49
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    50
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
    51
	return mc.apiCall(endPoint, rest.Get, nil, nil, nil, data)
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    52
}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
    53
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    54
// updateStatusData updates the statuses
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    55
// The operation 'op' can be empty or "status" (to post a status), "delete"
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    56
// (for deleting a status), "reblog", "unreblog", "favourite", "unfavourite".
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    57
// The data argument will receive the object(s) returned by the API server.
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
    58
func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    59
	method := rest.Post
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    60
	endPoint := "statuses"
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    61
	params := make(apiCallParams)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    62
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    63
	switch op {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    64
	case "", "status":
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    65
		op = "status"
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    66
		if opts.Status == "" {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    67
			return ErrInvalidParameter
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    68
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    69
		switch opts.Visibility {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    70
		case "", "direct", "private", "unlisted", "public":
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    71
			// Okay
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    72
		default:
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    73
			return ErrInvalidParameter
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    74
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    75
		if len(opts.MediaIDs) > 4 {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    76
			return fmt.Errorf("too many (>4) media IDs")
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    77
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    78
	case "delete":
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    79
		method = rest.Delete
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    80
		if opts.ID < 1 {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    81
			return ErrInvalidID
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    82
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    83
		endPoint += "/" + strconv.Itoa(opts.ID)
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    84
	case "reblog", "unreblog", "favourite", "unfavourite":
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    85
		if opts.ID < 1 {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    86
			return ErrInvalidID
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    87
		}
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    88
		endPoint += "/" + strconv.Itoa(opts.ID) + "/" + op
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    89
	default:
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    90
		return ErrInvalidParameter
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    91
	}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    92
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    93
	// Form items for a new toot
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    94
	if op == "status" {
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    95
		params["status"] = opts.Status
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    96
		if opts.InReplyToID > 0 {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
    97
			params["in_reply_to_id"] = strconv.Itoa(opts.InReplyToID)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    98
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
    99
		for i, id := range opts.MediaIDs {
134
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 132
diff changeset
   100
			if id < 1 {
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 132
diff changeset
   101
				return ErrInvalidID
588edbc9e14b Add checks on ID list values
Mikael Berthe <mikael@lilotux.net>
parents: 132
diff changeset
   102
			}
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   103
			qID := fmt.Sprintf("media_ids[%d]", i+1)
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
   104
			params[qID] = strconv.Itoa(id)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   105
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   106
		if opts.Sensitive {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
   107
			params["sensitive"] = "true"
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   108
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   109
		if opts.SpoilerText != "" {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
   110
			params["spoiler_text"] = opts.SpoilerText
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   111
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   112
		if opts.Visibility != "" {
120
579912e9d0ef Refactor API calls
Mikael Berthe <mikael@lilotux.net>
parents: 110
diff changeset
   113
			params["visibility"] = opts.Visibility
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   114
		}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   115
	}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   116
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   117
	return mc.apiCall(endPoint, method, params, nil, nil, data)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   118
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   119
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   120
// GetStatus returns a status
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   121
// The returned status can be nil if there is an error or if the
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   122
// requested ID does not exist.
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   123
func (mc *Client) GetStatus(statusID int) (*Status, error) {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   124
	var status Status
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   125
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   126
	if err := mc.queryStatusData(statusID, "status", &status); err != nil {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   127
		return nil, err
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   128
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   129
	if status.ID == 0 {
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   130
		return nil, ErrEntityNotFound
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   131
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   132
	return &status, nil
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   133
}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   134
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   135
// GetStatusContext returns a status context
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   136
func (mc *Client) GetStatusContext(statusID int) (*Context, error) {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   137
	var context Context
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   138
	if err := mc.queryStatusData(statusID, "context", &context); err != nil {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   139
		return nil, err
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   140
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   141
	return &context, nil
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   142
}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   143
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   144
// GetStatusCard returns a status card
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   145
func (mc *Client) GetStatusCard(statusID int) (*Card, error) {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   146
	var card Card
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   147
	if err := mc.queryStatusData(statusID, "card", &card); err != nil {
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   148
		return nil, err
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   149
	}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   150
	return &card, nil
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   151
}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   152
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   153
// GetStatusRebloggedBy returns a list of the accounts who reblogged a status
149
5f922977d7c7 Add support for limits and paging ({since,max}_id) API parameters
Mikael Berthe <mikael@lilotux.net>
parents: 138
diff changeset
   154
func (mc *Client) GetStatusRebloggedBy(statusID int, lopt *LimitParams) ([]Account, error) {
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   155
	o := &getAccountsOptions{ID: statusID, Limit: lopt}
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   156
	return mc.getMultipleAccounts("reblogged_by", o)
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   157
}
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   158
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   159
// GetStatusFavouritedBy returns a list of the accounts who favourited a status
149
5f922977d7c7 Add support for limits and paging ({since,max}_id) API parameters
Mikael Berthe <mikael@lilotux.net>
parents: 138
diff changeset
   160
func (mc *Client) GetStatusFavouritedBy(statusID int, lopt *LimitParams) ([]Account, error) {
155
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   161
	o := &getAccountsOptions{ID: statusID, Limit: lopt}
0c581e0108da Use links from headers
Mikael Berthe <mikael@lilotux.net>
parents: 149
diff changeset
   162
	return mc.getMultipleAccounts("favourited_by", o)
103
9860bb68a0a6 Add status (GET) methods
Mikael Berthe <mikael@lilotux.net>
parents: 8
diff changeset
   163
}
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   164
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   165
// PostStatus posts a new "toot"
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   166
// All parameters but "text" can be empty.
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   167
// Visibility must be empty, or one of "direct", "private", "unlisted" and "public".
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   168
func (mc *Client) PostStatus(text string, inReplyTo int, mediaIDs []int, sensitive bool, spoilerText string, visibility string) (*Status, error) {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   169
	var status Status
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   170
	o := updateStatusOptions{
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   171
		Status:      text,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   172
		InReplyToID: inReplyTo,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   173
		MediaIDs:    mediaIDs,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   174
		Sensitive:   sensitive,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   175
		SpoilerText: spoilerText,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   176
		Visibility:  visibility,
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   177
	}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   178
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   179
	err := mc.updateStatusData("status", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   180
	if err != nil {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   181
		return nil, err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   182
	}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   183
	if status.ID == 0 {
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   184
		return nil, ErrEntityNotFound // TODO Change error message
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   185
	}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   186
	return &status, err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   187
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   188
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   189
// DeleteStatus deletes a status
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   190
func (mc *Client) DeleteStatus(statusID int) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   191
	var status Status
132
639bbcddb4fe Make identifiers less ambiguous
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
   192
	o := updateStatusOptions{ID: statusID}
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   193
	err := mc.updateStatusData("delete", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   194
	return err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   195
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   196
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   197
// ReblogStatus reblogs a status
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   198
func (mc *Client) ReblogStatus(statusID int) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   199
	var status Status
132
639bbcddb4fe Make identifiers less ambiguous
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
   200
	o := updateStatusOptions{ID: statusID}
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   201
	err := mc.updateStatusData("reblog", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   202
	return err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   203
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   204
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   205
// UnreblogStatus unreblogs a status
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   206
func (mc *Client) UnreblogStatus(statusID int) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   207
	var status Status
132
639bbcddb4fe Make identifiers less ambiguous
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
   208
	o := updateStatusOptions{ID: statusID}
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   209
	err := mc.updateStatusData("unreblog", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   210
	return err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   211
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   212
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   213
// FavouriteStatus favourites a status
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   214
func (mc *Client) FavouriteStatus(statusID int) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   215
	var status Status
132
639bbcddb4fe Make identifiers less ambiguous
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
   216
	o := updateStatusOptions{ID: statusID}
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   217
	err := mc.updateStatusData("favourite", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   218
	return err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   219
}
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   220
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   221
// UnfavouriteStatus unfavourites a status
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   222
func (mc *Client) UnfavouriteStatus(statusID int) error {
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   223
	var status Status
132
639bbcddb4fe Make identifiers less ambiguous
Mikael Berthe <mikael@lilotux.net>
parents: 130
diff changeset
   224
	o := updateStatusOptions{ID: statusID}
138
23d3a518d0ad Update package name in source files
Mikael Berthe <mikael@lilotux.net>
parents: 134
diff changeset
   225
	err := mc.updateStatusData("unfavourite", o, &status)
105
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   226
	return err
e2a16e19eb8b Add missing status commands
Mikael Berthe <mikael@lilotux.net>
parents: 103
diff changeset
   227
}