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 // 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. |
83 func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error { |
84 func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error { |
84 method := rest.Post |
85 method := rest.Post |
85 endPoint := "statuses" |
86 endPoint := "statuses" |
86 params := make(apiCallParams) |
87 params := make(apiCallParams) |
105 if opts.ID < 1 { |
106 if opts.ID < 1 { |
106 return ErrInvalidID |
107 return ErrInvalidID |
107 } |
108 } |
108 endPoint += "/" + strconv.FormatInt(opts.ID, 10) |
109 endPoint += "/" + strconv.FormatInt(opts.ID, 10) |
109 case "reblog", "unreblog", "favourite", "unfavourite": |
110 case "reblog", "unreblog", "favourite", "unfavourite": |
|
111 if opts.ID < 1 { |
|
112 return ErrInvalidID |
|
113 } |
|
114 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
|
115 case "mute", "unmute": |
110 if opts.ID < 1 { |
116 if opts.ID < 1 { |
111 return ErrInvalidID |
117 return ErrInvalidID |
112 } |
118 } |
113 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
119 endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op |
114 default: |
120 default: |
248 var status Status |
254 var status Status |
249 o := updateStatusOptions{ID: statusID} |
255 o := updateStatusOptions{ID: statusID} |
250 err := mc.updateStatusData("unfavourite", o, &status) |
256 err := mc.updateStatusData("unfavourite", o, &status) |
251 return err |
257 return err |
252 } |
258 } |
|
259 |
|
260 // MuteConversation mutes the conversation containing a status |
|
261 func (mc *Client) MuteConversation(statusID int64) (*Status, error) { |
|
262 var status Status |
|
263 o := updateStatusOptions{ID: statusID} |
|
264 err := mc.updateStatusData("mute", o, &status) |
|
265 return &status, err |
|
266 } |
|
267 |
|
268 // UnmuteConversation unmutes the conversation containing a status |
|
269 func (mc *Client) UnmuteConversation(statusID int64) (*Status, error) { |
|
270 var status Status |
|
271 o := updateStatusOptions{ID: statusID} |
|
272 err := mc.updateStatusData("unmute", o, &status) |
|
273 return &status, err |
|
274 } |