Go to file
2017-04-30 22:16:50 +09:00
cmd/mstdn Fix streaming for mstdn 2017-04-28 14:19:40 +09:00
testdata add missing file 2017-04-17 14:03:40 +09:00
.gitignore add .gitignore 2017-04-14 23:47:04 +09:00
.travis.yml add .travis.yml 2017-04-14 17:14:55 +09:00
accounts_test.go Fix error message 2017-04-24 17:33:45 +09:00
accounts.go Merge branch 'next' 2017-04-18 17:18:39 +09:00
apps_test.go Add fail test cover to TestRegisterApp 2017-04-21 02:29:22 +09:00
apps.go Correct context uses 2017-04-19 18:53:55 +09:00
example_test.go Fix example 2017-04-27 12:07:21 +09:00
helper_test.go Fix test want 2017-04-20 20:55:45 +09:00
helper.go Fix to parse API error 2017-04-19 14:32:53 +09:00
instance_test.go Add TestGetInstance 2017-04-20 22:09:11 +09:00
instance.go add "next" variable 2017-04-18 17:14:39 +09:00
LICENSE add LICENSE 2017-04-27 09:20:14 +09:00
mastodon_test.go Fix test json property name 2017-04-20 19:37:24 +09:00
mastodon.go Fix for ineffassign . 2017-04-20 21:29:10 +09:00
notification_test.go add tests for GetNotifications/GetNotification/ClearNotifications 2017-04-19 18:32:20 +09:00
notification.go Fix for golint ./... 2017-04-20 21:20:40 +09:00
README.md Fix README 2017-04-27 12:03:11 +09:00
report_test.go add test for Report/GetReports 2017-04-19 18:09:48 +09:00
report.go Fix for golint ./... 2017-04-20 21:20:40 +09:00
status_test.go Add TestGetTimelineMedia 2017-04-29 00:43:53 +09:00
status.go Add GetTimelineMedia 2017-04-29 00:36:13 +09:00
streaming_test.go Fix local streaming 2017-04-28 14:09:10 +09:00
streaming_ws_test.go Fix order of streaming WebSocket test 2017-04-30 22:16:50 +09:00
streaming_ws.go Fix WebSocket close 2017-04-30 22:14:02 +09:00
streaming.go Fix local streaming 2017-04-28 14:09:10 +09:00

go-mastodon

Build Status Coverage Status GoDoc Go Report Card

Usage

Application

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattn/go-mastodon"
)

func main() {
	app, err := mastodon.RegisterApp(context.Background(), &mastodon.AppConfig{
		Server:     "https://mstdn.jp",
		ClientName: "client-name",
		Scopes:     "read write follow",
		Website:    "https://github.com/mattn/go-mastodon",
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("client-id    : %s\n", app.ClientID)
	fmt.Printf("client-secret: %s\n", app.ClientSecret)
}

Client

package main

import (
	"context"
	"fmt"
	"log"

	"github.com/mattn/go-mastodon"
)

func main() {
	c := mastodon.NewClient(&mastodon.Config{
		Server:       "https://mstdn.jp",
		ClientID:     "client-id",
		ClientSecret: "client-secret",
	})
	err := c.Authenticate(context.Background(), "your-email", "your-password")
	if err != nil {
		log.Fatal(err)
	}
	timeline, err := c.GetTimelineHome(context.Background())
	if err != nil {
		log.Fatal(err)
	}
	for i := len(timeline) - 1; i >= 0; i-- {
		fmt.Println(timeline[i])
	}
}

Status of implementations

  • GET /api/v1/accounts/:id
  • GET /api/v1/accounts/verify_credentials
  • PATCH /api/v1/accounts/update_credentials
  • GET /api/v1/accounts/:id/followers
  • GET /api/v1/accounts/:id/following
  • GET /api/v1/accounts/:id/statuses
  • POST /api/v1/accounts/:id/follow
  • POST /api/v1/accounts/:id/unfollow
  • GET /api/v1/accounts/:id/block
  • GET /api/v1/accounts/:id/unblock
  • GET /api/v1/accounts/:id/mute
  • GET /api/v1/accounts/:id/unmute
  • GET /api/v1/accounts/relationships
  • GET /api/v1/accounts/search
  • POST /api/v1/apps
  • GET /api/v1/blocks
  • GET /api/v1/favourites
  • GET /api/v1/follow_requests
  • POST /api/v1/follow_requests/:id/authorize
  • POST /api/v1/follow_requests/:id/reject
  • POST /api/v1/follows
  • GET /api/v1/instance
  • POST /api/v1/media
  • GET /api/v1/mutes
  • GET /api/v1/notifications
  • GET /api/v1/notifications/:id
  • POST /api/v1/notifications/clear
  • GET /api/v1/reports
  • POST /api/v1/reports
  • GET /api/v1/search
  • GET /api/v1/statuses/:id
  • GET /api/v1/statuses/:id/context
  • GET /api/v1/statuses/:id/card
  • GET /api/v1/statuses/:id/reblogged_by
  • GET /api/v1/statuses/:id/favourited_by
  • POST /api/v1/statuses
  • DELETE /api/v1/statuses/:id
  • POST /api/v1/statuses/:id/reblog
  • POST /api/v1/statuses/:id/unreblog
  • POST /api/v1/statuses/:id/favourite
  • POST /api/v1/statuses/:id/unfavourite
  • GET /api/v1/timelines/home
  • GET /api/v1/timelines/public
  • GET /api/v1/timelines/tag/:hashtag

Installation

$ go get github.com/mattn/go-mastodon

License

MIT

Author

Yasuhiro Matsumoto (a.k.a. mattn)