mastodon client for golang
Go
Switch branches/tags
Nothing to show
Clone or download
Permalink
Failed to load latest commit information.
cmd/mstdn add some fields for instance command Jan 29, 2018
testdata add missing file Apr 17, 2017
.gitignore add .gitignore Apr 14, 2017
.travis.yml add .travis.yml Apr 14, 2017
LICENSE add LICENSE Apr 27, 2017
README.md Add GetInstanceActivity and GetInstancePeers Jan 29, 2018
accounts.go Fix type of IDs. Oct 23, 2017
accounts_test.go Fix type of IDs. Oct 23, 2017
apps.go fix #68 Nov 30, 2017
apps_test.go add test Nov 30, 2017
compat.go add missing file Oct 23, 2017
example_test.go also convert to string in attachments, pagenation Oct 25, 2017
helper.go Fix Pagination variable from *int64 to int64 May 6, 2017
helper_test.go Fix Pagination variable from *int64 to int64 May 6, 2017
instance.go fix Jan 29, 2018
instance_test.go add tests for instance Jan 29, 2018
mastodon.go Add Emojis to Status Oct 26, 2017
mastodon_test.go also convert to string in attachments, pagenation Oct 25, 2017
notification.go Fix: forgot to (*Client)GetNotification's parameter: int64 -> ID Oct 25, 2017
notification_test.go Fix: forgot to (*Client)GetNotification's parameter: int64 -> ID Oct 25, 2017
report.go fix IDs Oct 25, 2017
report_test.go fix IDs Oct 25, 2017
status.go Add Emojis to Status Oct 26, 2017
status_test.go fix test Oct 26, 2017
streaming.go fix #66 Nov 20, 2017
streaming_test.go fix IDs Oct 25, 2017
streaming_ws.go handle float64/string both Nov 20, 2017
streaming_ws_test.go fix IDs Oct 25, 2017
unixtime.go Add GetInstanceActivity and GetInstancePeers Jan 29, 2018

README.md

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(), nil)
	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
  • GET /api/v1/instance/activity
  • GET /api/v1/instance/peers
  • 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)