Hunter (hunter v0.6.0)

Copy Markdown View Source

An Elixir client for the Mastodon API

Summary

Functions

Accepts a follow request

Retrieve account

Block a user

Fetch user's blocked domains

Retrieve user's blocks

Dismiss a single notification

Deletes all notifications from the Mastodon server for the authenticated user

Destroy status

Favorite a status

Fetch the list of users who favourited the status

Fetch a user's favourites

Follow a user

Retrieve a list of follow requests

Get a list of followers

Get a list of followed accounts

Retrieve statuses from a hashtag

Retrieve statuses from the home timeline

Retrieve instance information

Load persisted application's credentials

Mute a user

Retrieve user's mutes

Initializes a client

Retrieve single notification

Retrieve user's notifications

Retrieve statuses from the public timeline

Reblog a status

Fetch the list of users who reblogged the status.

Rejects a follow request

Get the relationships of authenticated user towards given other users

Search for accounts

Retrieve status

Retrieve status context

Get a list of statuses by a user

Unblock a user

Unblock a domain

Undo a favorite of a status

Unfollow a user

Unmute a user

Undo a reblog of a status

Make changes to the authenticated user

User agent of the client

Retrieve account of authenticated user

Returns Hunter version

Functions

accept_follow_request(conn, id)

@spec accept_follow_request(Hunter.Client.t(), non_neg_integer()) ::
  Hunter.Relationship.t()

Accepts a follow request

Parameters

  • conn - connection credentials
  • id - follow request id

account(conn, id)

Retrieve account

Parameters

  • conn - connection credentials
  • id - account identifier

block(conn, id)

Block a user

Parameters

  • conn - connection credentials
  • id - user identifier

block_domain(conn, domain)

@spec block_domain(Hunter.Client.t(), String.t()) :: boolean()

Block a domain

Parameters

  • conn - connection credentials
  • domain - domain to block

blocked_domains(conn, options \\ [])

Fetch user's blocked domains

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of blocks with id less than or equal this value
  • since_id - get a list of blocks with id greater than this value
  • limit - maximum number of blocks to get, default: 40, max: 80

blocks(conn, options \\ [])

@spec blocks(Hunter.Client.t(), Keyword.t()) :: [Hunter.Account.t()]

Retrieve user's blocks

Parameters

  • conn - connection credentials

Options

  • max_id - get a list of blocks with id less than or equal this value
  • since_id - get a list of blocks with id greater than this value
  • limit - maximum number of blocks to get, default: 40, max: 80

clear_notification(conn, id)

@spec clear_notification(Hunter.Client.t(), non_neg_integer()) :: boolean()

Dismiss a single notification

Parameters

  • conn - connection credentials
  • id - notification id

clear_notifications(conn)

@spec clear_notifications(Hunter.Client.t()) :: boolean()

Deletes all notifications from the Mastodon server for the authenticated user

Parameters

  • conn - connection credentials

create_app(name, redirect_uri \\ "urn:ietf:wg:oauth:2.0:oob", scopes \\ ["read"], website \\ nil, options \\ [])

@spec create_app(String.t(), String.t(), [String.t()], nil | String.t(), Keyword.t()) ::
  Hunter.Application.t() | no_return()

Register a new OAuth client app on the target instance

Parameters

  • name - name of your application
  • redirect_uri - where the user should be redirected after authorization, default: urn:ietf:wg:oauth:2.0:oob (no redirect)
  • scopes - scope list, see the scope section for more details, default: read
  • website - URL to the homepage of your app, default: nil
  • options - option list

Scopes

  • read - read data
  • write - post statuses and upload media for statuses
  • follow - follow, unfollow, block, unblock

Multiple scopes can be requested during the authorization phase with the scope query param

Options

  • save? - persists your application information to a file, so, you can use them later. default: false
  • api_base_url - specifies if you want to register an application on a different instance. default: https://mastodon.social

create_status(conn, status, options \\ [])

@spec create_status(Hunter.Client.t(), String.t(), Keyword.t()) ::
  Hunter.Status.t() | no_return()

Create new status

Parameters

  • conn - connection credentials
  • status - text of the status
  • options - option list

Options

  • in_reply_to_id - local ID of the status you want to reply to
  • media_ids - list of media IDs to attach to the status (maximum: 4)
  • sensitive - whether the media of the status is NSFW
  • spoiler_text - text to be shown as a warning before the actual content
  • visibility - either direct, private, unlisted or public

destroy_status(conn, id)

@spec destroy_status(Hunter.Client.t(), non_neg_integer()) :: boolean()

Destroy status

Parameters

  • conn - connection credentials
  • id - status identifier

favourite(conn, id)

@spec favourite(Hunter.Client.t(), non_neg_integer()) :: Hunter.Status.t()

Favorite a status

Parameters

  • conn - connection credentials
  • id - status identifier

favourited_by(conn, id, options \\ [])

@spec favourited_by(Hunter.Client.t(), non_neg_integer(), Keyword.t()) :: [
  Hunter.Account.t()
]

Fetch the list of users who favourited the status

Parameters

  • conn - connection credentials
  • id - status identifier
  • options - option list

Options

  • max_id - get a list of favourited by ids less than or equal this value
  • since_id - get a list of favourited by ids greater than this value
  • limit - maximum number of favourited by to get, default: 40, max: 80

favourites(conn, options \\ [])

@spec favourites(Hunter.Client.t(), Keyword.t()) :: [Hunter.Status.t()]

Fetch a user's favourites

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of favourites with id less than or equal this value
  • since_id - get a list of favourites with id greater than this value
  • limit - maximum of favourites to get, default: 20, max: 40

follow(conn, id)

Follow a user

Parameters

  • conn - connection credentials
  • id - user identifier

follow_requests(conn, options \\ [])

@spec follow_requests(Hunter.Client.t(), Keyword.t()) :: [Hunter.Account.t()]

Retrieve a list of follow requests

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of follow requests with id less than or equal this value
  • since_id - get a list of follow requests with id greater than this value
  • limit - maximum number of requests to get, default: 40, max: 80

followers(conn, id, options \\ [])

@spec followers(Hunter.Client.t(), non_neg_integer(), Keyword.t()) :: [
  Hunter.Account.t()
]

Get a list of followers

Parameters

  • conn - connection credentials
  • id - account identifier
  • options - options list

Options

  • max_id - get a list of followers with id less than or equal this value
  • since_id - get a list of followers with id greater than this value
  • limit - maximum number of followers to get, default: 40, maximum: 80

following(conn, id, options \\ [])

@spec following(Hunter.Client.t(), non_neg_integer(), Keyword.t()) :: [
  Hunter.Account.t()
]

Get a list of followed accounts

Parameters

  • conn - connection credentials
  • id - account identifier
  • options - options list

Options

  • max_id - get a list of followings with id less than or equal this value
  • since_id - get a list of followings with id greater than this value
  • limit - maximum number of followings to get, default: 40, maximum: 80

hashtag_timeline(conn, hashtag, options \\ [])

@spec hashtag_timeline(Hunter.Client.t(), [String.t()], Keyword.t()) :: [
  Hunter.Status.t()
]

Retrieve statuses from a hashtag

Parameters

  • conn - connection credentials
  • hashtag - string list
  • options - option list

Options

  • local - only return statuses originating from this instance
  • max_id - get a list of timelines with id less than or equal this value
  • since_id - get a list of timelines with id greater than this value
  • limit - maximum number of statuses on the requested timeline to get, default: 20, max: 40

home_timeline(conn, options \\ [])

@spec home_timeline(Hunter.Client.t(), Keyword.t()) :: [Hunter.Status.t()]

Retrieve statuses from the home timeline

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of timelines with id less than or equal this value
  • since_id - get a list of timelines with id greater than this value
  • limit - maximum number of statuses on the requested timeline to get, default: 20, max: 40

instance_info(conn)

@spec instance_info(Hunter.Client.t()) :: Hunter.Instance.t()

Retrieve instance information

Parameters

  • conn - connection credentials

load_credentials(name)

@spec load_credentials(String.t()) :: Hunter.Application.t()

Load persisted application's credentials

Parameters

  • name - application's name

log_in(app, username, password, base_url \\ "https://mastodon.social")

Retrieve access token

Parameters

  • app - application details, see: Hunter.Application.create_app/5 for more details.
  • username - account's email
  • password - account's password
  • base_url - API base url, default: https://mastodon.social

log_in_oauth(app, oauth_code, base_url \\ "https://mastodon.social")

@spec log_in_oauth(Hunter.Application.t(), String.t(), String.t()) ::
  Hunter.Client.t()

Retrieve access token via OAuth

Parameters

  • app - application details, see: Hunter.Application.create_app/5 for more details.
  • oauth_code - OAuth authentication code
  • base_url - API base url, default: https://mastodon.social

mute(conn, id)

Mute a user

Parameters

  • conn - connection credentials
  • id - user identifier

mutes(conn, options \\ [])

@spec mutes(Hunter.Client.t(), Keyword.t()) :: [Hunter.Account.t()]

Retrieve user's mutes

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of mutes with id less than or equal this value
  • since_id - get a list of mutes with id greater than this value
  • limit - maximum number of mutes to get, default: 40, max: 80

new(options \\ [])

@spec new(Keyword.t()) :: Hunter.Client.t()

Initializes a client

Options

  • base_url - URL of the instance you want to connect to
  • access_token - [String] OAuth access token for your authenticated user

notification(conn, id)

@spec notification(Hunter.Client.t(), non_neg_integer()) :: Hunter.Notification.t()

Retrieve single notification

Parameters

  • conn - connection credentials
  • id - notification identifier

notifications(conn, options \\ [])

@spec notifications(Hunter.Client.t(), Keyword.t()) :: [Hunter.Notification.t()]

Retrieve user's notifications

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get a list of notifications with id less than or equal this value
  • since_id - get a list of notifications with id greater than this value
  • limit - maximum number of notifications to get, default: 15, max: 30

public_timeline(conn, options \\ [])

@spec public_timeline(Hunter.Client.t(), Keyword.t()) :: [Hunter.Status.t()]

Retrieve statuses from the public timeline

Parameters

  • conn - connection credentials
  • options - option list

Options

  • local - only return statuses originating from this instance
  • max_id - get a list of timelines with id less than or equal this value
  • since_id - get a list of timelines with id greater than this value
  • limit - maximum number of statuses on the requested timeline to get, default: 20, max: 40

reblog(conn, id)

Reblog a status

Parameters

  • conn - connection credentials
  • id - status identifier

reblogged_by(conn, id, options \\ [])

@spec reblogged_by(Hunter.Client.t(), non_neg_integer(), Keyword.t()) :: [
  Hunter.Account.t()
]

Fetch the list of users who reblogged the status.

Parameters

  • conn - connection credentials
  • id - status identifier
  • options - option list

Options

  • max_id - get a list of reblogged by ids less than or equal this value
  • since_id - get a list of reblogged by ids greater than this value
  • limit - maximum number of reblogged by to get, default: 40, max: 80

reject_follow_request(conn, id)

@spec reject_follow_request(Hunter.Client.t(), non_neg_integer()) ::
  Hunter.Relationship.t()

Rejects a follow request

Parameters

  • conn - connection credentials
  • id - follow request id

relationships(conn, ids)

@spec relationships(Hunter.Client.t(), [non_neg_integer()]) :: [
  Hunter.Relationship.t()
]

Get the relationships of authenticated user towards given other users

Parameters

  • conn - connection credentials
  • id - list of relationship IDs

report(conn, account_id, status_ids, comment)

Report a user

Parameters

  • conn - connection credentials
  • account_id - the ID of the account to report
  • status_ids - the IDs of statuses to report
  • comment - a comment to associate with the report

search(conn, query, options \\ [])

@spec search(Hunter.Client.t(), String.t(), Keyword.t()) :: Hunter.Result.t()

Search for content

Parameters

  • conn - connection credentials
  • q - the search query
  • options - option list

Options

  • resolve - whether to resolve non-local accounts

search_account(conn, options)

@spec search_account(Hunter.Client.t(), Keyword.t()) :: [Hunter.Account.t()]

Search for accounts

Parameters

  • conn - connection credentials
  • options - option list

Options

  • q: what to search for
  • limit: maximum number of matching accounts to return, default: 40

status(conn, id)

Retrieve status

Parameters

  • conn - connection credentials
  • id - status identifier

status_context(conn, id)

@spec status_context(Hunter.Client.t(), non_neg_integer()) :: Hunter.Context.t()

Retrieve status context

Parameters

  • conn - connection credentials
  • id - status identifier

statuses(conn, account_id, options \\ [])

@spec statuses(Hunter.Client.t(), non_neg_integer(), Keyword.t()) :: [
  Hunter.Status.t()
]

Get a list of statuses by a user

Parameters

  • conn - connection credentials -
  • account_id - account identifier
  • options - option list

Options

  • only_media - only return Hunter.Status.t that have media attachments
  • exclude_replies - skip statuses that reply to other statuses
  • max_id - get a list of statuses with id less than or equal this value
  • since_id - get a list of statuses with id greater than this value
  • limit - maximum number of statuses to get, default: 20, max: 40

unblock(conn, id)

Unblock a user

  • conn - connection credentials
  • id - user identifier

unblock_domain(conn, domain)

@spec unblock_domain(Hunter.Client.t(), String.t()) :: boolean()

Unblock a domain

Parameters

  • conn - connection credentials
  • domain - domain to unblock

unfavourite(conn, id)

@spec unfavourite(Hunter.Client.t(), non_neg_integer()) :: Hunter.Status.t()

Undo a favorite of a status

Parameters

  • conn - connection credentials
  • id - status identifier

unfollow(conn, id)

Unfollow a user

Parameters

  • conn - connection credentials
  • id - user identifier

unmute(conn, id)

Unmute a user

Parameters

  • conn - connection credentials
  • id - user identifier

unreblog(conn, id)

@spec unreblog(Hunter.Client.t(), non_neg_integer()) :: Hunter.Status.t()

Undo a reblog of a status

Parameters

  • conn - connection credentials
  • id - status identifier

update_credentials(conn, data)

@spec update_credentials(Hunter.Client.t(), map()) :: Hunter.Account.t()

Make changes to the authenticated user

Parameters

  • conn - connection credentials
  • data - data payload

Possible keys for payload

  • display_name - name to display in the user's profile
  • note - new biography for the user
  • avatar - base64 encoded image to display as the user's avatar (e.g. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADrCAYAAAA...)
  • header - base64 encoded image to display as the user's header image (e.g. data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUoAAADrCAYAAAA...)

upload_media(conn, file, options \\ [])

@spec upload_media(Hunter.Client.t(), Path.t(), Keyword.t()) :: Hunter.Attachment.t()

Upload a media file

Parameters

  • conn - connection credentials
  • file - media to be uploaded
  • options - option list

Options

  • description - plain-text description of the media for accessibility (max 420 chars)
  • focus - two floating points, comma-delimited

Note: the v2 media endpoint processes large files asynchronously: the returned attachment's url may be nil until the server finishes processing (HTTP 202). The id can be attached to a status with create_status as soon as processing completes.

user_agent()

@spec user_agent() :: String.t()

User agent of the client

verify_credentials(conn)

@spec verify_credentials(Hunter.Client.t()) :: Hunter.Account.t()

Retrieve account of authenticated user

Parameters

  • conn - connection credentials

version()

@spec version() :: String.t()

Returns Hunter version