Hunter (hunter v0.7.0)

Copy Markdown View Source

An Elixir client for the Mastodon API

Summary

Functions

Accepts a follow request

Accept a notification request

Accept multiple notification requests

Retrieve account

Retrieve the user's lists that contain a given account

Add accounts to a list; the user must be following each of them

Block a user

Fetch user's blocked domains

Retrieve user's blocks

Bookmark a status

Fetch the user's bookmarked statuses

Dismiss a single notification

Deletes all notifications from the Mastodon server for the authenticated user

Subscribe to Web Push notifications; each access token can have exactly one subscription, and creating a new one replaces it

Delete a media attachment that is not currently attached to a status

Remove the Web Push subscription tied to the access token

Delete a list

Destroy status

Dismiss a notification group

Dismiss a notification request

Dismiss multiple notification requests

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 grouped notifications, together with the accounts and statuses they reference

Retrieve the number of unread notification groups, capped by the server

Retrieve statuses from a hashtag

Retrieve statuses from the home timeline

Retrieve instance information

Retrieve a list

Retrieve the accounts in a list

Retrieve statuses from the given list's timeline

Retrieve all lists the user owns

Load persisted application's credentials

Retrieve a media attachment, to check the processing status of an asynchronous upload

Mute a user

Mute a conversation, so its thread stops generating notifications

Retrieve user's mutes

Initializes a client

Retrieve single notification

Retrieve a single notification group by its group key

Retrieve the accounts of all notifications in a notification group

Retrieve the notification filtering policy for the user

Retrieve a single notification request

Retrieve notification requests (groups of filtered notifications)

Check whether accepted notification requests have been merged

Retrieve user's notifications

Pin a status to the top of the user's profile

Retrieve a poll

Retrieve statuses from the public timeline

Retrieve the Web Push subscription tied to the access token

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

Retrieve the edit history of a status

Retrieve the plain-text source of a status, for editing

Get a list of statuses by a user

Retrieve multiple statuses by id

Translate a status into some language

Unblock a user

Unblock a domain

Remove a status from bookmarks

Undo a favorite of a status

Unfollow a user

Unmute a user

Unmute a conversation

Unpin a status from the user's profile

Retrieve the number of unread notifications, capped by the server

Undo a reblog of a status

Make changes to the authenticated user

Update a media attachment, before it is attached to a status

Update the notification filtering policy for the user

Update the data portion of the Web Push subscription

User agent of the client

Retrieve account of authenticated user

Returns Hunter version

Vote on one or more options in a poll

Functions

accept_follow_request(conn, id)

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

Accepts a follow request

Parameters

  • conn - connection credentials
  • id - follow request id

accept_notification_request(conn, id)

@spec accept_notification_request(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  boolean()

Accept a notification request

Parameters

  • conn - connection credentials
  • id - notification request identifier

accept_notification_requests(conn, ids)

@spec accept_notification_requests(Hunter.Client.t(), [String.t() | non_neg_integer()]) ::
  boolean()

Accept multiple notification requests

Parameters

  • conn - connection credentials
  • ids - notification request identifiers

account(conn, id)

Retrieve account

Parameters

  • conn - connection credentials
  • id - account identifier

account_lists(conn, account_id)

@spec account_lists(Hunter.Client.t(), String.t() | non_neg_integer()) :: [
  Hunter.List.t()
]

Retrieve the user's lists that contain a given account

Parameters

  • conn - connection credentials
  • account_id - account identifier

add_accounts_to_list(conn, id, account_ids)

@spec add_accounts_to_list(Hunter.Client.t(), String.t() | non_neg_integer(), [
  String.t() | non_neg_integer()
]) :: boolean()

Add accounts to a list; the user must be following each of them

Parameters

  • conn - connection credentials
  • id - list identifier
  • account_ids - account identifiers to add

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 \\ [])

@spec blocked_domains(Hunter.Client.t(), Keyword.t()) :: list()

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

bookmark(conn, id)

Bookmark a status

Parameters

  • conn - connection credentials
  • id - status identifier

bookmarks(conn, options \\ [])

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

Fetch the user's bookmarked statuses

Parameters

  • conn - connection credentials
  • options - option list

Options

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

clear_notification(conn, id)

@spec clear_notification(Hunter.Client.t(), String.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(client_name, redirect_uris \\ "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

Examples

iex> Hunter.create_app("hunter", "urn:ietf:wg:oauth:2.0:oob", ["read", "write", "follow"], nil, [save?: true, api_base_url: "https://example.com"])
%Hunter.Application{client_id: "1234567890",
 client_secret: "1234567890",
 id: "1234"}

create_list(conn, title, options \\ [])

@spec create_list(Hunter.Client.t(), String.t(), Keyword.t()) :: Hunter.List.t()

Create a new list

Parameters

  • conn - connection credentials
  • title - the title of the list
  • options - option list

Options

  • replies_policy - which replies should be shown in the list, one of: followed, list, none; default: list
  • exclusive - whether members of the list are removed from the home timeline

create_push_subscription(conn, subscription, data \\ %{})

@spec create_push_subscription(Hunter.Client.t(), map(), map()) ::
  Hunter.WebPushSubscription.t()

Subscribe to Web Push notifications; each access token can have exactly one subscription, and creating a new one replaces it

Parameters

  • conn - connection credentials
  • subscription - map with endpoint, keys (p256dh and auth) and optionally standard
  • data - optional map with alerts and policy

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

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
  • language - ISO 639-1 language code for the status
  • poll - map with options (list of choices) and expires_in (seconds); optional: multiple, hide_totals
  • quoted_status_id - ID of a status to quote
  • scheduled_at - ISO 8601 datetime (at least 5 minutes ahead) at which the status should be published; the call returns a Hunter.ScheduledStatus instead of a Hunter.Status
  • idempotency_key - unique string sent as the Idempotency-Key header to prevent duplicate submissions

delete_media(conn, id)

@spec delete_media(Hunter.Client.t(), String.t() | non_neg_integer()) :: boolean()

Delete a media attachment that is not currently attached to a status

Parameters

  • conn - connection credentials
  • id - attachment identifier

delete_push_subscription(conn)

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

Remove the Web Push subscription tied to the access token

Parameters

  • conn - connection credentials

destroy_list(conn, id)

@spec destroy_list(Hunter.Client.t(), String.t() | non_neg_integer()) :: boolean()

Delete a list

Parameters

  • conn - connection credentials
  • id - list identifier

destroy_status(conn, id)

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

Destroy status

Parameters

  • conn - connection credentials
  • id - status identifier

dismiss_notification_group(conn, group_key)

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

Dismiss a notification group

Parameters

  • conn - connection credentials
  • group_key - notification group key

dismiss_notification_request(conn, id)

@spec dismiss_notification_request(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  boolean()

Dismiss a notification request

Parameters

  • conn - connection credentials
  • id - notification request identifier

dismiss_notification_requests(conn, ids)

@spec dismiss_notification_requests(Hunter.Client.t(), [
  String.t() | non_neg_integer()
]) :: boolean()

Dismiss multiple notification requests

Parameters

  • conn - connection credentials
  • ids - notification request identifiers

edit_status(conn, id, status, options \\ [])

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

Edit a status

Parameters

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

Options

  • spoiler_text - text to be shown as a warning before the actual content
  • sensitive - whether the media of the status is NSFW
  • language - ISO 639-1 language code for the status
  • media_ids - list of media IDs to attach to the status
  • poll - map with options (list of choices) and expires_in (seconds); replaces the current poll

favourite(conn, id)

@spec favourite(Hunter.Client.t(), String.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(), String.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(), String.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

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

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

@spec following(Hunter.Client.t(), String.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

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

grouped_notifications(conn, options \\ [])

@spec grouped_notifications(Hunter.Client.t(), Keyword.t()) ::
  Hunter.GroupedNotificationsResults.t()

Retrieve grouped notifications, together with the accounts and statuses they reference

Parameters

  • conn - connection credentials
  • options - option list

Options

  • max_id - get groups with id less than or equal this value
  • since_id - get groups with id greater than this value
  • limit - maximum number of groups to get, default: 40, max: 80
  • types - notification types to include
  • exclude_types - notification types to exclude
  • grouped_types - which types can be grouped together

grouped_unread_count(conn)

@spec grouped_unread_count(Hunter.Client.t()) :: non_neg_integer()

Retrieve the number of unread notification groups, capped by the server

Parameters

  • conn - connection credentials

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

Examples

iex> conn = Hunter.new([base_url: "https://social.lou.lt", access_token: "123456"])
%Hunter.Client{base_url: "https://social.lou.lt", access_token: "123456"}
iex> Hunter.instance_info(conn)
%Hunter.Instance{description: "Mostly French  instance - <a href=\"/about/more#rules\">Read full description</a> for rules.",
          domain: "social.lou.lt", title: "Loultstodon", version: "4.3.8"}

list(conn, id)

Retrieve a list

Parameters

  • conn - connection credentials
  • id - list identifier

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

@spec list_accounts(Hunter.Client.t(), String.t() | non_neg_integer(), Keyword.t()) ::
  [
    Hunter.Account.t()
  ]

Retrieve the accounts in a list

Parameters

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

Options

  • max_id - get a list of accounts with id less than or equal this value
  • since_id - get a list of accounts with id greater than this value
  • limit - maximum number of accounts to get, default: 40; set to 0 to get all accounts in the list

list_timeline(conn, list_id, options \\ [])

@spec list_timeline(Hunter.Client.t(), String.t() | non_neg_integer(), Keyword.t()) ::
  [
    Hunter.Status.t()
  ]

Retrieve statuses from the given list's timeline

Parameters

  • conn - connection credentials
  • list_id - list identifier
  • 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

lists(conn)

@spec lists(Hunter.Client.t()) :: [Hunter.List.t()]

Retrieve all lists the user owns

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.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.create_app/5 for more details.
  • oauth_code - OAuth authentication code
  • base_url - API base url, default: https://mastodon.social

media_attachment(conn, id)

@spec media_attachment(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.Attachment.t()

Retrieve a media attachment, to check the processing status of an asynchronous upload

Parameters

  • conn - connection credentials
  • id - attachment identifier

mute(conn, id)

Mute a user

Parameters

  • conn - connection credentials
  • id - user identifier

mute_conversation(conn, id)

@spec mute_conversation(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.Status.t()

Mute a conversation, so its thread stops generating notifications

Parameters

  • conn - connection credentials
  • id - status 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)

Retrieve single notification

Parameters

  • conn - connection credentials
  • id - notification identifier

Examples

Hunter.notification(conn, 17_476)
#=> %Hunter.Notification{account: %{"acct" => "paperswelove@mstdn.io", ...}

notification_group(conn, group_key)

@spec notification_group(Hunter.Client.t(), String.t()) ::
  Hunter.GroupedNotificationsResults.t()

Retrieve a single notification group by its group key

Parameters

  • conn - connection credentials
  • group_key - notification group key

notification_group_accounts(conn, group_key)

@spec notification_group_accounts(Hunter.Client.t(), String.t()) :: [
  Hunter.Account.t()
]

Retrieve the accounts of all notifications in a notification group

Parameters

  • conn - connection credentials
  • group_key - notification group key

notification_policy(conn)

@spec notification_policy(Hunter.Client.t()) :: Hunter.NotificationPolicy.t()

Retrieve the notification filtering policy for the user

Parameters

  • conn - connection credentials

notification_request(conn, id)

@spec notification_request(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.NotificationRequest.t()

Retrieve a single notification request

Parameters

  • conn - connection credentials
  • id - notification request identifier

notification_requests(conn, options \\ [])

@spec notification_requests(Hunter.Client.t(), Keyword.t()) :: [
  Hunter.NotificationRequest.t()
]

Retrieve notification requests (groups of filtered notifications)

Parameters

  • conn - connection credentials
  • options - option list

Options

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

notification_requests_merged?(conn)

@spec notification_requests_merged?(Hunter.Client.t()) :: boolean()

Check whether accepted notification requests have been merged

Parameters

  • conn - connection credentials

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

Examples

Hunter.notifications(conn)
#=> [%Hunter.Notification{account: %{"acct" => "paperswelove@mstdn.io", ...}]

pin(conn, id)

Pin a status to the top of the user's profile

Parameters

  • conn - connection credentials
  • id - status identifier

poll(conn, id)

Retrieve a poll

Parameters

  • conn - connection credentials
  • id - poll identifier

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

push_subscription(conn)

@spec push_subscription(Hunter.Client.t()) :: Hunter.WebPushSubscription.t()

Retrieve the Web Push subscription tied to the access token

Parameters

  • conn - connection credentials

reblog(conn, id)

Reblog a status

Parameters

  • conn - connection credentials
  • id - status identifier

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

@spec reblogged_by(Hunter.Client.t(), String.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(), String.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(), [String.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

remove_accounts_from_list(conn, id, account_ids)

@spec remove_accounts_from_list(Hunter.Client.t(), String.t() | non_neg_integer(), [
  String.t() | non_neg_integer()
]) :: boolean()

Remove accounts from a list

Parameters

  • conn - connection credentials
  • id - list identifier
  • account_ids - account identifiers to remove

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(), String.t() | non_neg_integer()) ::
  Hunter.Context.t()

Retrieve status context

Parameters

  • conn - connection credentials
  • id - status identifier

status_history(conn, id)

@spec status_history(Hunter.Client.t(), String.t() | non_neg_integer()) :: [
  Hunter.StatusEdit.t()
]

Retrieve the edit history of a status

Parameters

  • conn - connection credentials
  • id - status identifier

status_source(conn, id)

@spec status_source(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.StatusSource.t()

Retrieve the plain-text source of a status, for editing

Parameters

  • conn - connection credentials
  • id - status identifier

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

@spec statuses(Hunter.Client.t(), String.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

statuses_by_ids(conn, ids)

@spec statuses_by_ids(Hunter.Client.t(), [String.t() | non_neg_integer()]) :: [
  Hunter.Status.t()
]

Retrieve multiple statuses by id

Parameters

  • conn - connection credentials
  • ids - list of status identifiers

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

@spec translate_status(Hunter.Client.t(), String.t() | non_neg_integer(), Keyword.t()) ::
  Hunter.Translation.t()

Translate a status into some language

Parameters

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

Options

  • lang - ISO 639-1 language code the status should be translated into; defaults to the user's current locale

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

unbookmark(conn, id)

@spec unbookmark(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.Status.t()

Remove a status from bookmarks

Parameters

  • conn - connection credentials
  • id - status identifier

unfavourite(conn, id)

@spec unfavourite(Hunter.Client.t(), String.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

unmute_conversation(conn, id)

@spec unmute_conversation(Hunter.Client.t(), String.t() | non_neg_integer()) ::
  Hunter.Status.t()

Unmute a conversation

Parameters

  • conn - connection credentials
  • id - status identifier

unpin(conn, id)

Unpin a status from the user's profile

Parameters

  • conn - connection credentials
  • id - status identifier

unread_count(conn)

@spec unread_count(Hunter.Client.t()) :: non_neg_integer()

Retrieve the number of unread notifications, capped by the server

Parameters

  • conn - connection credentials

unreblog(conn, id)

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...)

update_list(conn, id, options)

@spec update_list(Hunter.Client.t(), String.t() | non_neg_integer(), Keyword.t()) ::
  Hunter.List.t()

Update a list

Parameters

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

Options

  • title - the new title of the list
  • replies_policy - which replies should be shown in the list, one of: followed, list, none
  • exclusive - whether members of the list are removed from the home timeline

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

Update a media attachment, before it is attached to a status

Parameters

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

Options

  • description - plain-text description of the media for accessibility
  • focus - two floating points between -1.0 and 1.0, comma-delimited
  • thumbnail - path of a custom thumbnail image

update_notification_policy(conn, options)

@spec update_notification_policy(Hunter.Client.t(), Keyword.t()) ::
  Hunter.NotificationPolicy.t()

Update the notification filtering policy for the user

Parameters

  • conn - connection credentials
  • options - option list

Options

Each takes one of accept, filter or drop:

  • for_not_following
  • for_not_followers
  • for_new_accounts
  • for_private_mentions
  • for_limited_accounts

update_push_subscription(conn, data)

@spec update_push_subscription(Hunter.Client.t(), map()) ::
  Hunter.WebPushSubscription.t()

Update the data portion of the Web Push subscription

Parameters

  • conn - connection credentials
  • data - map with alerts and/or policy

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

Examples

  iex> conn = Hunter.new([base_url: "https://social.lou.lt", access_token: "123456"])
  %Hunter.Client{base_url: "https://social.lou.lt", access_token: "123456"}
  iex> Hunter.verify_credentials(conn)
  %Hunter.Account{acct: "milmazz",
          avatar: "https://social.lou.lt/avatars/original/missing.png",
          avatar_static: "https://social.lou.lt/avatars/original/missing.png",
          created_at: "2017-04-06T17:43:55.325Z",
          display_name: "Milton Mazzarri", followers_count: 4,
          following_count: 4,
          header: "https://social.lou.lt/headers/original/missing.png",
          header_static: "https://social.lou.lt/headers/original/missing.png",
          id: "8039", locked: false, note: "", statuses_count: 3,
          url: "https://social.lou.lt/@milmazz", username: "milmazz"}

version()

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

Returns Hunter version

vote(conn, id, choices)

Vote on one or more options in a poll

Parameters

  • conn - connection credentials
  • id - poll identifier
  • choices - list of option indices to vote for (zero-based)