diff -r 5cf1e0b45073 -r b27e7d229fdd account.go --- a/account.go Mon Mar 19 11:41:20 2018 +0100 +++ b/account.go Mon Mar 19 13:16:44 2018 +0100 @@ -36,7 +36,7 @@ // The operation 'op' can be "follow", "unfollow", "block", "unblock", // "mute", "unmute". // The id is optional and depends on the operation. -func (mc *Client) updateRelationship(op string, id int64) (*Relationship, error) { +func (mc *Client) updateRelationship(op string, id int64, params apiCallParams) (*Relationship, error) { var endPoint string method := rest.Post strID := strconv.FormatInt(id, 10) @@ -49,7 +49,7 @@ } var rel Relationship - if err := mc.apiCall(endPoint, method, nil, nil, nil, &rel); err != nil { + if err := mc.apiCall(endPoint, method, params, nil, nil, &rel); err != nil { return nil, err } return &rel, nil @@ -194,7 +194,7 @@ // FollowAccount follows an account func (mc *Client) FollowAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("follow", accountID) + rel, err := mc.updateRelationship("follow", accountID, nil) if err != nil { return nil, err } @@ -206,7 +206,7 @@ // UnfollowAccount unfollows an account func (mc *Client) UnfollowAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("unfollow", accountID) + rel, err := mc.updateRelationship("unfollow", accountID, nil) if err != nil { return nil, err } @@ -238,7 +238,7 @@ // BlockAccount blocks an account func (mc *Client) BlockAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("block", accountID) + rel, err := mc.updateRelationship("block", accountID, nil) if err != nil { return nil, err } @@ -250,7 +250,7 @@ // UnblockAccount unblocks an account func (mc *Client) UnblockAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("unblock", accountID) + rel, err := mc.updateRelationship("unblock", accountID, nil) if err != nil { return nil, err } @@ -261,8 +261,21 @@ } // MuteAccount mutes an account -func (mc *Client) MuteAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("mute", accountID) +// Note that with current Mastodon API, muteNotifications defaults to true +// when it is not provided. +func (mc *Client) MuteAccount(accountID int64, muteNotifications *bool) (*Relationship, error) { + var params apiCallParams + + if muteNotifications != nil { + params = make(apiCallParams) + if *muteNotifications { + params["notifications"] = "true" + } else { + params["notifications"] = "false" + } + } + + rel, err := mc.updateRelationship("mute", accountID, params) if err != nil { return nil, err } @@ -274,7 +287,7 @@ // UnmuteAccount unmutes an account func (mc *Client) UnmuteAccount(accountID int64) (*Relationship, error) { - rel, err := mc.updateRelationship("unmute", accountID) + rel, err := mc.updateRelationship("unmute", accountID, nil) if err != nil { return nil, err }