pull/64/head
Yasuhiro Matsumoto 2017-10-25 15:22:17 +09:00
parent e0cf1e0650
commit aef736e991
8 changed files with 58 additions and 57 deletions

View File

@ -2,7 +2,6 @@ package mastodon
import (
"context"
"fmt"
"net/http"
"net/url"
)
@ -24,11 +23,11 @@ func (c *Client) GetReports(ctx context.Context) ([]*Report, error) {
}
// Report reports the report
func (c *Client) Report(ctx context.Context, accountID int64, ids []int64, comment string) (*Report, error) {
func (c *Client) Report(ctx context.Context, accountID ID, ids []ID, comment string) (*Report, error) {
params := url.Values{}
params.Set("account_id", fmt.Sprint(accountID))
params.Set("account_id", string(accountID))
for _, id := range ids {
params.Add("status_ids[]", fmt.Sprint(id))
params.Add("status_ids[]", string(id))
}
params.Set("comment", comment)
var report Report

View File

@ -65,26 +65,26 @@ func TestReport(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
rp, err := client.Report(context.Background(), 121, nil, "")
rp, err := client.Report(context.Background(), "121", nil, "")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
rp, err = client.Report(context.Background(), 122, nil, "")
rp, err = client.Report(context.Background(), "122", nil, "")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
if rp.ID != 1234 {
t.Fatalf("want %v but %v", 1234, rp.ID)
t.Fatalf("want %q but %q", "1234", rp.ID)
}
if rp.ActionTaken {
t.Fatalf("want %v but %v", true, rp.ActionTaken)
}
rp, err = client.Report(context.Background(), 123, []int64{567}, "")
rp, err = client.Report(context.Background(), "123", []ID{"567"}, "")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
if rp.ID != 1234 {
t.Fatalf("want %v but %v", 1234, rp.ID)
t.Fatalf("want %q but %q", "1234", rp.ID)
}
if !rp.ActionTaken {
t.Fatalf("want %v but %v", false, rp.ActionTaken)

View File

@ -57,9 +57,9 @@ func (c *Client) GetFavourites(ctx context.Context, pg *Pagination) ([]*Status,
}
// GetStatus return status specified by id.
func (c *Client) GetStatus(ctx context.Context, id int64) (*Status, error) {
func (c *Client) GetStatus(ctx context.Context, id ID) (*Status, error) {
var status Status
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%d", id), nil, &status, nil)
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%s", id), nil, &status, nil)
if err != nil {
return nil, err
}
@ -67,9 +67,9 @@ func (c *Client) GetStatus(ctx context.Context, id int64) (*Status, error) {
}
// GetStatusContext return status specified by id.
func (c *Client) GetStatusContext(ctx context.Context, id int64) (*Context, error) {
func (c *Client) GetStatusContext(ctx context.Context, id ID) (*Context, error) {
var context Context
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%d/context", id), nil, &context, nil)
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%s/context", id), nil, &context, nil)
if err != nil {
return nil, err
}
@ -77,9 +77,9 @@ func (c *Client) GetStatusContext(ctx context.Context, id int64) (*Context, erro
}
// GetStatusCard return status specified by id.
func (c *Client) GetStatusCard(ctx context.Context, id int64) (*Card, error) {
func (c *Client) GetStatusCard(ctx context.Context, id ID) (*Card, error) {
var card Card
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%d/card", id), nil, &card, nil)
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%s/card", id), nil, &card, nil)
if err != nil {
return nil, err
}
@ -87,9 +87,9 @@ func (c *Client) GetStatusCard(ctx context.Context, id int64) (*Card, error) {
}
// GetRebloggedBy returns the account list of the user who reblogged the toot of id.
func (c *Client) GetRebloggedBy(ctx context.Context, id int64, pg *Pagination) ([]*Account, error) {
func (c *Client) GetRebloggedBy(ctx context.Context, id ID, pg *Pagination) ([]*Account, error) {
var accounts []*Account
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%d/reblogged_by", id), nil, &accounts, pg)
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%s/reblogged_by", id), nil, &accounts, pg)
if err != nil {
return nil, err
}
@ -97,9 +97,9 @@ func (c *Client) GetRebloggedBy(ctx context.Context, id int64, pg *Pagination) (
}
// GetFavouritedBy returns the account list of the user who liked the toot of id.
func (c *Client) GetFavouritedBy(ctx context.Context, id int64, pg *Pagination) ([]*Account, error) {
func (c *Client) GetFavouritedBy(ctx context.Context, id ID, pg *Pagination) ([]*Account, error) {
var accounts []*Account
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%d/favourited_by", id), nil, &accounts, pg)
err := c.doAPI(ctx, http.MethodGet, fmt.Sprintf("/api/v1/statuses/%s/favourited_by", id), nil, &accounts, pg)
if err != nil {
return nil, err
}
@ -107,9 +107,9 @@ func (c *Client) GetFavouritedBy(ctx context.Context, id int64, pg *Pagination)
}
// Reblog is reblog the toot of id and return status of reblog.
func (c *Client) Reblog(ctx context.Context, id int64) (*Status, error) {
func (c *Client) Reblog(ctx context.Context, id ID) (*Status, error) {
var status Status
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%d/reblog", id), nil, &status, nil)
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%s/reblog", id), nil, &status, nil)
if err != nil {
return nil, err
}
@ -117,9 +117,9 @@ func (c *Client) Reblog(ctx context.Context, id int64) (*Status, error) {
}
// Unreblog is unreblog the toot of id and return status of the original toot.
func (c *Client) Unreblog(ctx context.Context, id int64) (*Status, error) {
func (c *Client) Unreblog(ctx context.Context, id ID) (*Status, error) {
var status Status
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%d/unreblog", id), nil, &status, nil)
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%s/unreblog", id), nil, &status, nil)
if err != nil {
return nil, err
}
@ -127,9 +127,9 @@ func (c *Client) Unreblog(ctx context.Context, id int64) (*Status, error) {
}
// Favourite is favourite the toot of id and return status of the favourite toot.
func (c *Client) Favourite(ctx context.Context, id int64) (*Status, error) {
func (c *Client) Favourite(ctx context.Context, id ID) (*Status, error) {
var status Status
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%d/favourite", id), nil, &status, nil)
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%s/favourite", id), nil, &status, nil)
if err != nil {
return nil, err
}
@ -137,9 +137,9 @@ func (c *Client) Favourite(ctx context.Context, id int64) (*Status, error) {
}
// Unfavourite is unfavourite the toot of id and return status of the unfavourite toot.
func (c *Client) Unfavourite(ctx context.Context, id int64) (*Status, error) {
func (c *Client) Unfavourite(ctx context.Context, id ID) (*Status, error) {
var status Status
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%d/unfavourite", id), nil, &status, nil)
err := c.doAPI(ctx, http.MethodPost, fmt.Sprintf("/api/v1/statuses/%s/unfavourite", id), nil, &status, nil)
if err != nil {
return nil, err
}
@ -234,8 +234,8 @@ func (c *Client) PostStatus(ctx context.Context, toot *Toot) (*Status, error) {
}
// DeleteStatus delete the toot.
func (c *Client) DeleteStatus(ctx context.Context, id int64) error {
return c.doAPI(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/statuses/%d", id), nil, nil, nil)
func (c *Client) DeleteStatus(ctx context.Context, id ID) error {
return c.doAPI(ctx, http.MethodDelete, fmt.Sprintf("/api/v1/statuses/%s", id), nil, nil, nil)
}
// Search search content with query.

View File

@ -53,11 +53,11 @@ func TestGetStatus(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.GetStatus(context.Background(), 123)
_, err := client.GetStatus(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
status, err := client.GetStatus(context.Background(), 1234567)
status, err := client.GetStatus(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -83,11 +83,11 @@ func TestGetStatusCard(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.GetStatusCard(context.Background(), 123)
_, err := client.GetStatusCard(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
card, err := client.GetStatusCard(context.Background(), 1234567)
card, err := client.GetStatusCard(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -113,11 +113,11 @@ func TestGetStatusContext(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.GetStatusContext(context.Background(), 123)
_, err := client.GetStatusContext(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
context, err := client.GetStatusContext(context.Background(), 1234567)
context, err := client.GetStatusContext(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -152,11 +152,11 @@ func TestGetRebloggedBy(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.GetRebloggedBy(context.Background(), 123, nil)
_, err := client.GetRebloggedBy(context.Background(), "123", nil)
if err == nil {
t.Fatalf("should be fail: %v", err)
}
rbs, err := client.GetRebloggedBy(context.Background(), 1234567, nil)
rbs, err := client.GetRebloggedBy(context.Background(), "1234567", nil)
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -188,11 +188,11 @@ func TestGetFavouritedBy(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.GetFavouritedBy(context.Background(), 123, nil)
_, err := client.GetFavouritedBy(context.Background(), "123", nil)
if err == nil {
t.Fatalf("should be fail: %v", err)
}
fbs, err := client.GetFavouritedBy(context.Background(), 1234567, nil)
fbs, err := client.GetFavouritedBy(context.Background(), "1234567", nil)
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -224,11 +224,11 @@ func TestReblog(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.Reblog(context.Background(), 123)
_, err := client.Reblog(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
status, err := client.Reblog(context.Background(), 1234567)
status, err := client.Reblog(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -254,11 +254,11 @@ func TestUnreblog(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.Unreblog(context.Background(), 123)
_, err := client.Unreblog(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
status, err := client.Unreblog(context.Background(), 1234567)
status, err := client.Unreblog(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -284,11 +284,11 @@ func TestFavourite(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.Favourite(context.Background(), 123)
_, err := client.Favourite(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
status, err := client.Favourite(context.Background(), 1234567)
status, err := client.Favourite(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -314,11 +314,11 @@ func TestUnfavourite(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
_, err := client.Unfavourite(context.Background(), 123)
_, err := client.Unfavourite(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
status, err := client.Unfavourite(context.Background(), 1234567)
status, err := client.Unfavourite(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}
@ -449,11 +449,11 @@ func TestDeleteStatus(t *testing.T) {
ClientSecret: "bar",
AccessToken: "zoo",
})
err := client.DeleteStatus(context.Background(), 123)
err := client.DeleteStatus(context.Background(), "123")
if err == nil {
t.Fatalf("should be fail: %v", err)
}
err = client.DeleteStatus(context.Background(), 1234567)
err = client.DeleteStatus(context.Background(), "1234567")
if err != nil {
t.Fatalf("should not be fail: %v", err)
}

View File

@ -4,6 +4,7 @@ import (
"bufio"
"context"
"encoding/json"
"fmt"
"io"
"net/http"
"net/url"
@ -27,7 +28,7 @@ type NotificationEvent struct {
func (e *NotificationEvent) event() {}
// DeleteEvent is struct for passing deletion event to app.
type DeleteEvent struct{ ID int64 }
type DeleteEvent struct{ ID ID }
func (e *DeleteEvent) event() {}
@ -73,7 +74,7 @@ func handleReader(q chan Event, r io.Reader) error {
var id int64
id, err = strconv.ParseInt(strings.TrimSpace(token[1]), 10, 64)
if err == nil {
q <- &DeleteEvent{id}
q <- &DeleteEvent{ID(fmt.Sprintf("%20d", id))}
}
}
if err != nil {

View File

@ -45,8 +45,8 @@ data: 1234567
}
case *DeleteEvent:
passDelete = true
if event.ID != 1234567 {
t.Fatalf("want %d but %d", 1234567, event.ID)
if event.ID != "1234567" {
t.Fatalf("want %q but %q", "1234567", event.ID)
}
case *ErrorEvent:
passError = true

View File

@ -3,6 +3,7 @@ package mastodon
import (
"context"
"encoding/json"
"fmt"
"net/url"
"path"
@ -127,7 +128,7 @@ func (c *WSClient) handleWS(ctx context.Context, rawurl string, q chan Event) er
q <- &NotificationEvent{Notification: &notification}
}
case "delete":
q <- &DeleteEvent{ID: int64(s.Payload.(float64))}
q <- &DeleteEvent{ID: ID(fmt.Sprint(int64(s.Payload.(float64))))}
}
if err != nil {
q <- &ErrorEvent{err}

View File

@ -118,10 +118,10 @@ func wsTest(t *testing.T, q chan Event, cancel func()) {
t.Fatalf("want %q but %q", "foo", events[0].(*UpdateEvent).Status.Content)
}
if events[1].(*NotificationEvent).Notification.ID != "123" {
t.Fatalf("want %d but %d", 123, events[1].(*NotificationEvent).Notification.ID)
t.Fatalf("want %q but %q", "123", events[1].(*NotificationEvent).Notification.ID)
}
if events[2].(*DeleteEvent).ID != 1234567 {
t.Fatalf("want %d but %d", 1234567, events[2].(*DeleteEvent).ID)
if events[2].(*DeleteEvent).ID != "1234567" {
t.Fatalf("want %q but %q", "1234567", events[2].(*DeleteEvent).ID)
}
if errorEvent, ok := events[3].(*ErrorEvent); !ok {
t.Fatalf("should be fail: %v", errorEvent.err)