|
|
@@ -264,3 +264,38 @@ func (c *Client) PinPost(alias string, pp *PinnedPostParams) error { |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
// UnpinPost unpins a post from the given collection. |
|
|
|
// See https://developers.write.as/docs/api/#unpin-a-post-from-a-collection |
|
|
|
func (c *Client) UnpinPost(alias string, pp *PinnedPostParams) error { |
|
|
|
res := &[]BatchPostResult{} |
|
|
|
env, err := c.post(fmt.Sprintf("/collections/%s/unpin", alias), []*PinnedPostParams{pp}, res) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
|
|
|
|
var ok bool |
|
|
|
if res, ok = env.Data.(*[]BatchPostResult); !ok { |
|
|
|
return fmt.Errorf("Wrong data returned from API.") |
|
|
|
} |
|
|
|
|
|
|
|
// Check for basic request errors on top level response |
|
|
|
status := env.Code |
|
|
|
if status != http.StatusOK { |
|
|
|
if c.isNotLoggedIn(status) { |
|
|
|
return fmt.Errorf("Not authenticated.") |
|
|
|
} |
|
|
|
return fmt.Errorf("Problem unpinning post: %d. %v\n", status, err) |
|
|
|
} |
|
|
|
|
|
|
|
// Check the individual post result |
|
|
|
if len(*res) == 0 || len(*res) > 1 { |
|
|
|
return fmt.Errorf("Wrong data returned from API.") |
|
|
|
} |
|
|
|
if (*res)[0].Code != http.StatusOK { |
|
|
|
return fmt.Errorf("Problem unpinning post: %d", (*res)[0].Code) |
|
|
|
// TODO: return ErrorMessage (right now it'll be empty) |
|
|
|
// return fmt.Errorf("Problem unpinning post: %v", res[0].ErrorMessage) |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |