Add PinStatus/UnpinStatus
authorMikael Berthe <mikael@lilotux.net>
Mon, 19 Mar 2018 11:28:37 +0100
changeset 203 c7b9ddaa41b9
parent 202 30bea35361cf
child 204 5cf1e0b45073
Add PinStatus/UnpinStatus
status.go
--- a/status.go	Sun Mar 18 23:30:43 2018 +0100
+++ b/status.go	Mon Mar 19 11:28:37 2018 +0100
@@ -78,8 +78,8 @@
 
 // updateStatusData updates the statuses
 // The operation 'op' can be empty or "status" (to post a status), "delete"
-// (for deleting a status), "reblog", "unreblog", "favourite", "unfavourite",
-// mute or unmute (for conversations).
+// (for deleting a status), "reblog"/"unreblog", "favourite"/"unfavourite",
+// "mute"/"unmute" (for conversations) or "pin"/"unpin".
 // The data argument will receive the object(s) returned by the API server.
 func (mc *Client) updateStatusData(op string, opts updateStatusOptions, data interface{}) error {
 	method := rest.Post
@@ -112,7 +112,7 @@
 			return ErrInvalidID
 		}
 		endPoint += "/" + strconv.FormatInt(opts.ID, 10) + "/" + op
-	case "mute", "unmute":
+	case "mute", "unmute", "pin", "unpin":
 		if opts.ID < 1 {
 			return ErrInvalidID
 		}
@@ -257,6 +257,22 @@
 	return err
 }
 
+// PinStatus pins a status
+func (mc *Client) PinStatus(statusID int64) error {
+	var status Status
+	o := updateStatusOptions{ID: statusID}
+	err := mc.updateStatusData("pin", o, &status)
+	return err
+}
+
+// UnpinStatus unpins a status
+func (mc *Client) UnpinStatus(statusID int64) error {
+	var status Status
+	o := updateStatusOptions{ID: statusID}
+	err := mc.updateStatusData("unpin", o, &status)
+	return err
+}
+
 // MuteConversation mutes the conversation containing a status
 func (mc *Client) MuteConversation(statusID int64) (*Status, error) {
 	var status Status