/hastodon

mastodon client module for Haskell

Primary LanguageHaskellMIT LicenseMIT

Hastodon

Build Status Hackage-Deps

mastodon client module for Haskell

Quickstart

If you don't have client id and client secret, call postApps at first.

import Web.Hastodon
  appRes <- postApps "mastodon.social" "HastodonClientApp"
    case appRes of
      Right app -> do
        let clientId = oauthClientClientId app
        let clientSecret = oauthClientClientSecret app

Fill client id, client secret, your username and password, then call functions.

import Web.Hastodon

main :: IO ()
main = do
  let clientId = "???"
  let clientSecret = "???"
  let username = "???"
  let password = "???"
  maybeClient <- mkHastodonClient clientId clientSecret username password "mastodon.social"
  case maybeClient of
    Just client -> do
      timeline <- getAccountById 93150 client
      print timeline
      result <- postStatus "test toot from hastodon!" client
      print result

Status of implementations

Mastodon APIs

  • 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
  • POST /api/v1/accounts/:id/block
  • POST /api/v1/accounts/:id/unblock
  • POST /api/v1/accounts/:id/mute
  • POST /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

Auth

  • the interface of POST /oauth/token

License

MIT

Author

Ryo Okubo syucream1031@gmail.com

Contributors