From 1a101faaae6a0fb1ac36dd8119f8c3e535bcf326 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 20 Apr 2017 02:04:20 +0900 Subject: [PATCH] add delete command --- cmd/mstdn/cmd_delete.go | 28 ++++++++++++++++++++++++ cmd/mstdn/cmd_delete_test.go | 41 ++++++++++++++++++++++++++++++++++++ cmd/mstdn/cmd_test.go | 2 ++ cmd/mstdn/main.go | 5 +++++ 4 files changed, 76 insertions(+) create mode 100644 cmd/mstdn/cmd_delete.go create mode 100644 cmd/mstdn/cmd_delete_test.go diff --git a/cmd/mstdn/cmd_delete.go b/cmd/mstdn/cmd_delete.go new file mode 100644 index 0000000..83755c5 --- /dev/null +++ b/cmd/mstdn/cmd_delete.go @@ -0,0 +1,28 @@ +package main + +import ( + "context" + "errors" + "strconv" + + "github.com/mattn/go-mastodon" + "github.com/urfave/cli" +) + +func cmdDelete(c *cli.Context) error { + client := c.App.Metadata["client"].(*mastodon.Client) + if !c.Args().Present() { + return errors.New("arguments required") + } + for i := 0; i < c.NArg(); i++ { + id, err := strconv.ParseInt(c.Args().Get(i), 10, 64) + if err != nil { + return err + } + err = client.DeleteStatus(context.Background(), id) + if err != nil { + return err + } + } + return nil +} diff --git a/cmd/mstdn/cmd_delete_test.go b/cmd/mstdn/cmd_delete_test.go new file mode 100644 index 0000000..e37442d --- /dev/null +++ b/cmd/mstdn/cmd_delete_test.go @@ -0,0 +1,41 @@ +package main + +import ( + "fmt" + "net/http" + "testing" + + "github.com/urfave/cli" +) + +func TestCmdDelete(t *testing.T) { + ok := false + f := func(w http.ResponseWriter, r *http.Request) { + switch r.URL.Path { + case "/api/v1/statuses/123": + fmt.Fprintln(w, `{}`) + ok = true + return + } + http.Error(w, http.StatusText(http.StatusNotFound), http.StatusNotFound) + return + } + testWithServer( + f, func(app *cli.App) { + app.Run([]string{"mstdn", "delete", "122"}) + }, + ) + if ok { + t.Fatal("something wrong to sequence to follow account") + } + + ok = false + testWithServer( + f, func(app *cli.App) { + app.Run([]string{"mstdn", "delete", "123"}) + }, + ) + if !ok { + t.Fatal("something wrong to sequence to follow account") + } +} diff --git a/cmd/mstdn/cmd_test.go b/cmd/mstdn/cmd_test.go index cd0ed6d..37142c0 100644 --- a/cmd/mstdn/cmd_test.go +++ b/cmd/mstdn/cmd_test.go @@ -13,6 +13,8 @@ func testWithServer(h http.HandlerFunc, testFunc func(*cli.App)) string { ts := httptest.NewServer(h) defer ts.Close() + cli.OsExiter = func(n int) {} + client := mastodon.NewClient(&mastodon.Config{ Server: ts.URL, ClientID: "foo", diff --git a/cmd/mstdn/main.go b/cmd/mstdn/main.go index 3e3de9c..9acf5ac 100644 --- a/cmd/mstdn/main.go +++ b/cmd/mstdn/main.go @@ -257,6 +257,11 @@ func makeApp() *cli.App { Usage: "upload file", Action: cmdUpload, }, + { + Name: "delete", + Usage: "delete status", + Action: cmdDelete, + }, } app.Setup() return app