status.go
changeset 203 c7b9ddaa41b9
parent 188 5f4210c4921a
child 207 301d5b94be3f
equal deleted inserted replaced
202:30bea35361cf 203:c7b9ddaa41b9
    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)