status.go
changeset 188 5f4210c4921a
parent 162 68df3a01e1a7
child 203 c7b9ddaa41b9
equal deleted inserted replaced
187:e1b1f4a168b7 188:5f4210c4921a
    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 }