76 return mc.apiCall(endPoint, rest.Get, nil, nil, nil, data) |
76 return mc.apiCall(endPoint, rest.Get, nil, nil, nil, data) |
77 } |
77 } |
78 |
78 |
79 // updateStatusData updates the statuses |
79 // updateStatusData updates the statuses |
80 // The operation 'op' can be empty or "status" (to post a status), "delete" |
80 // The operation 'op' can be empty or "status" (to post a status), "delete" |
81 // (for deleting a status), "reblog", "unreblog", "favourite", "unfavourite", |
81 // (for deleting a status), "reblog"/"unreblog", "favourite"/"unfavourite", |
82 // mute or unmute (for conversations). |
82 // "mute"/"unmute" (for conversations) or "pin"/"unpin". |
83 // The data argument will receive the object(s) returned by the API server. |
83 // The data argument will receive the object(s) returned by the API server. |
84 func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error { |
84 func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error { |
85 method := rest.Post |
85 method := rest.Post |
86 endPoint := "statuses" |
86 endPoint := "statuses" |
87 params := make(apiCallParams) |
87 params := make(apiCallParams) |
110 case "reblog", "unreblog", "favourite", "unfavourite": |
110 case "reblog", "unreblog", "favourite", "unfavourite": |
111 if opts.ID < 1 { |
111 if opts.ID < 1 { |
112 return ErrInvalidID |
112 return ErrInvalidID |
113 } |
113 } |
114 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
114 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
115 case "mute", "unmute": |
115 case "mute", "unmute", "pin", "unpin": |
116 if opts.ID < 1 { |
116 if opts.ID < 1 { |
117 return ErrInvalidID |
117 return ErrInvalidID |
118 } |
118 } |
119 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
119 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
120 default: |
120 default: |
255 o := updateStatusOptions{ID: statusID} |
255 o := updateStatusOptions{ID: statusID} |
256 err := mc.updateStatusData("unfavourite", o, &status) |
256 err := mc.updateStatusData("unfavourite", o, &status) |
257 return err |
257 return err |
258 } |
258 } |
259 |
259 |
|
260 // PinStatus pins a status |
|
261 func (mc *Client) PinStatus(statusID int64) error { |
|
262 var status Status |
|
263 o := updateStatusOptions{ID: statusID} |
|
264 err := mc.updateStatusData("pin", o, &status) |
|
265 return err |
|
266 } |
|
267 |
|
268 // UnpinStatus unpins a status |
|
269 func (mc *Client) UnpinStatus(statusID int64) error { |
|
270 var status Status |
|
271 o := updateStatusOptions{ID: statusID} |
|
272 err := mc.updateStatusData("unpin", o, &status) |
|
273 return err |
|
274 } |
|
275 |
260 // MuteConversation mutes the conversation containing a status |
276 // MuteConversation mutes the conversation containing a status |
261 func (mc *Client) MuteConversation(statusID int64) (*Status, error) { |
277 func (mc *Client) MuteConversation(statusID int64) (*Status, error) { |
262 var status Status |
278 var status Status |
263 o := updateStatusOptions{ID: statusID} |
279 o := updateStatusOptions{ID: statusID} |
264 err := mc.updateStatusData("mute", o, &status) |
280 err := mc.updateStatusData("mute", o, &status) |