mastodon-api 1.1.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/mastodon.rb +2 -0
- data/lib/mastodon/access_token.rb +21 -0
- data/lib/mastodon/account.rb +44 -2
- data/lib/mastodon/app.rb +8 -1
- data/lib/mastodon/card.rb +41 -0
- data/lib/mastodon/client.rb +8 -1
- data/lib/mastodon/conversation.rb +25 -0
- data/lib/mastodon/emoji.rb +21 -0
- data/lib/mastodon/entities/app.rb +12 -0
- data/lib/mastodon/entities/hashtag.rb +12 -0
- data/lib/mastodon/entities/media.rb +13 -1
- data/lib/mastodon/entities/mention.rb +1 -1
- data/lib/mastodon/field.rb +18 -0
- data/lib/mastodon/filter.rb +29 -0
- data/lib/mastodon/hashtag.rb +19 -0
- data/lib/mastodon/instance.rb +33 -0
- data/lib/mastodon/list.rb +15 -0
- data/lib/mastodon/media.rb +16 -2
- data/lib/mastodon/notification.rb +30 -0
- data/lib/mastodon/relationship.rb +23 -2
- data/lib/mastodon/rest/accounts.rb +52 -9
- data/lib/mastodon/rest/api.rb +24 -0
- data/lib/mastodon/rest/apps.rb +7 -0
- data/lib/mastodon/rest/conversations.rb +34 -0
- data/lib/mastodon/rest/custom_emojis.rb +16 -0
- data/lib/mastodon/rest/domain_blocks.rb +32 -0
- data/lib/mastodon/rest/endorsements.rb +36 -0
- data/lib/mastodon/rest/filters.rb +61 -0
- data/lib/mastodon/rest/instances.rb +28 -0
- data/lib/mastodon/rest/lists.rb +77 -0
- data/lib/mastodon/rest/media.rb +17 -3
- data/lib/mastodon/rest/notifications.rb +34 -0
- data/lib/mastodon/rest/relationships.rb +68 -1
- data/lib/mastodon/rest/reports.rb +20 -0
- data/lib/mastodon/rest/request.rb +7 -3
- data/lib/mastodon/rest/scheduled_statuses.rb +43 -0
- data/lib/mastodon/rest/search.rb +20 -0
- data/lib/mastodon/rest/statuses.rb +57 -5
- data/lib/mastodon/rest/suggestions.rb +13 -2
- data/lib/mastodon/rest/timelines.rb +19 -0
- data/lib/mastodon/rest/utils.rb +3 -3
- data/lib/mastodon/results.rb +18 -0
- data/lib/mastodon/scheduled_status.rb +25 -0
- data/lib/mastodon/status.rb +49 -4
- data/lib/mastodon/streaming/client.rb +96 -0
- data/lib/mastodon/streaming/connection.rb +44 -0
- data/lib/mastodon/streaming/events/filters_change.rb +7 -0
- data/lib/mastodon/streaming/events/status_delete.rb +16 -0
- data/lib/mastodon/streaming/message_parser.rb +23 -0
- data/lib/mastodon/streaming/response.rb +42 -0
- data/lib/mastodon/version.rb +2 -2
- data/mastodon.gemspec +5 -3
- metadata +68 -9
@@ -0,0 +1,30 @@
|
|
1
|
+
module Mastodon
|
2
|
+
class Notification < Mastodon::Base
|
3
|
+
# @!attribute [r] id
|
4
|
+
# @return [String]
|
5
|
+
# @!attribute [r] type
|
6
|
+
# @return [String]
|
7
|
+
# @!attribute [r] created_at
|
8
|
+
# @return [String]
|
9
|
+
# @!attribute [r] account
|
10
|
+
# @return [Mastodon::Account]
|
11
|
+
# @!attribute [r] status
|
12
|
+
# @return [Mastodon::Status]
|
13
|
+
|
14
|
+
normal_attr_reader :id, :type, :created_at
|
15
|
+
|
16
|
+
object_attr_reader :account, Mastodon::Account
|
17
|
+
object_attr_reader :status, Mastodon::Status
|
18
|
+
|
19
|
+
def initialize(attributes = {})
|
20
|
+
attributes.fetch('id')
|
21
|
+
super
|
22
|
+
end
|
23
|
+
|
24
|
+
# Does this notification include a status?
|
25
|
+
# @return [Boolean] true if a status is included, false otherwise
|
26
|
+
def status?
|
27
|
+
attributes.key?('status')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,16 +1,37 @@
|
|
1
1
|
module Mastodon
|
2
2
|
class Relationship < Mastodon::Base
|
3
3
|
# @!attribute [r] id
|
4
|
-
# @return [
|
4
|
+
# @return [String] Account ID
|
5
5
|
# @!attribute [r] following?
|
6
6
|
# @return [Boolean]
|
7
7
|
# @!attribute [r] followed_by?
|
8
8
|
# @return [Boolean]
|
9
9
|
# @!attribute [r] blocking?
|
10
10
|
# @return [Boolean]
|
11
|
+
# @!attribute [r] muting?
|
12
|
+
# @return [Boolean]
|
13
|
+
# @!attribute [r] muting_notifications?
|
14
|
+
# @return [Boolean]
|
15
|
+
# @!attribute [r] requested?
|
16
|
+
# @return [Boolean]
|
17
|
+
# @!attribute [r] domain_blocking?
|
18
|
+
# @return [Boolean]
|
19
|
+
# @!attribute [r] showing_reblogs?
|
20
|
+
# @return [Boolean]
|
21
|
+
# @!attribute [r] endorsed?
|
22
|
+
# @return [Boolean]
|
11
23
|
|
12
24
|
normal_attr_reader :id
|
13
|
-
|
25
|
+
|
26
|
+
predicate_attr_reader :following,
|
27
|
+
:followed_by,
|
28
|
+
:blocking,
|
29
|
+
:muting,
|
30
|
+
:muting_notifications,
|
31
|
+
:requested,
|
32
|
+
:domain_blocking,
|
33
|
+
:showing_reblogs,
|
34
|
+
:endorsed
|
14
35
|
|
15
36
|
def initialize(attributes = {})
|
16
37
|
attributes.fetch('id')
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'mastodon/rest/utils'
|
2
2
|
require 'mastodon/account'
|
3
|
+
require 'mastodon/access_token'
|
3
4
|
|
4
5
|
module Mastodon
|
5
6
|
module REST
|
@@ -12,6 +13,22 @@ module Mastodon
|
|
12
13
|
perform_request_with_object(:get, '/api/v1/accounts/verify_credentials', {}, Mastodon::Account)
|
13
14
|
end
|
14
15
|
|
16
|
+
# Update authenticated account attributes
|
17
|
+
# @param params [Hash]
|
18
|
+
# @option params :display_name [String] The name to display in the user's profile
|
19
|
+
# @option params :note [String] A new biography for the user
|
20
|
+
# @option params :avatar [File, StringIO, HTTP::FormData::File]
|
21
|
+
# @option params :header [File, StringIO, HTTP::FormData::File]
|
22
|
+
# @return [Mastodon::Account]
|
23
|
+
def update_credentials(params = {})
|
24
|
+
%i(avatar header).each do |key|
|
25
|
+
next unless params.key?(key)
|
26
|
+
params[key] = params[key].is_a?(HTTP::FormData::File) ? params[key] : HTTP::FormData::File.new(params[key])
|
27
|
+
end
|
28
|
+
|
29
|
+
perform_request_with_object(:patch, '/api/v1/accounts/update_credentials', params, Mastodon::Account)
|
30
|
+
end
|
31
|
+
|
15
32
|
# Retrieve account
|
16
33
|
# @param id [Integer]
|
17
34
|
# @return [Mastodon::Account]
|
@@ -21,23 +38,49 @@ module Mastodon
|
|
21
38
|
|
22
39
|
# Get a list of followers
|
23
40
|
# @param id [Integer]
|
41
|
+
# @param options [Hash]
|
42
|
+
# @option options :max_id [Integer]
|
43
|
+
# @option options :since_id [Integer]
|
44
|
+
# @option options :min_id [Integer]
|
45
|
+
# @option options :limit [Integer]
|
24
46
|
# @return [Mastodon::Collection<Mastodon::Account>]
|
25
|
-
def followers(id)
|
26
|
-
perform_request_with_collection(:get, "/api/v1/accounts/#{id}/followers",
|
47
|
+
def followers(id, options = {})
|
48
|
+
perform_request_with_collection(:get, "/api/v1/accounts/#{id}/followers", options, Mastodon::Account)
|
27
49
|
end
|
28
50
|
|
29
51
|
# Get a list of followed accounts
|
30
52
|
# @param id [Integer]
|
53
|
+
# @param options [Hash]
|
54
|
+
# @option options :max_id [Integer]
|
55
|
+
# @option options :since_id [Integer]
|
56
|
+
# @option options :min_id [Integer]
|
57
|
+
# @option options :limit [Integer]
|
31
58
|
# @return [Mastodon::Collection<Mastodon::Account>]
|
32
|
-
def following(id)
|
33
|
-
perform_request_with_collection(:get, "/api/v1/accounts/#{id}/following",
|
59
|
+
def following(id, options = {})
|
60
|
+
perform_request_with_collection(:get, "/api/v1/accounts/#{id}/following", options, Mastodon::Account)
|
34
61
|
end
|
35
62
|
|
36
|
-
#
|
37
|
-
# @param
|
38
|
-
# @
|
39
|
-
|
40
|
-
|
63
|
+
# Sign up (requires authentication with client credentials)
|
64
|
+
# @param params [Hash]
|
65
|
+
# @option params :username [String]
|
66
|
+
# @option params :email [String]
|
67
|
+
# @option params :password [String]
|
68
|
+
# @option params :agreement [Boolean]
|
69
|
+
# @option params :locale [String]
|
70
|
+
# @return [Mastodon::AccessToken]
|
71
|
+
def create_account(params = {})
|
72
|
+
perform_request_with_object(:post, '/api/v1/accounts', params, Mastodon::AccessToken)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Search accounts
|
76
|
+
# @param query [String]
|
77
|
+
# @param params [Hash]
|
78
|
+
# @option params :limit [Integer]
|
79
|
+
# @option params :resolve [Boolean] Whether to attempt resolving unknown remote accounts
|
80
|
+
# @option params :following [Boolean] Only return matches the authenticated user follows
|
81
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
82
|
+
def search_accounts(query, params = {})
|
83
|
+
perform_request_with_collection(:get, '/api/v1/accounts/search', { q: query }.merge(params), Mastodon::Account)
|
41
84
|
end
|
42
85
|
end
|
43
86
|
end
|
data/lib/mastodon/rest/api.rb
CHANGED
@@ -1,10 +1,22 @@
|
|
1
1
|
require 'mastodon/rest/statuses'
|
2
2
|
require 'mastodon/rest/accounts'
|
3
3
|
require 'mastodon/rest/timelines'
|
4
|
+
require 'mastodon/rest/notifications'
|
5
|
+
require 'mastodon/rest/search'
|
4
6
|
require 'mastodon/rest/relationships'
|
5
7
|
require 'mastodon/rest/media'
|
6
8
|
require 'mastodon/rest/suggestions'
|
7
9
|
require 'mastodon/rest/apps'
|
10
|
+
require 'mastodon/rest/instances'
|
11
|
+
require 'mastodon/rest/custom_emojis'
|
12
|
+
require 'mastodon/rest/domain_blocks'
|
13
|
+
require 'mastodon/rest/filters'
|
14
|
+
require 'mastodon/rest/endorsements'
|
15
|
+
require 'mastodon/rest/suggestions'
|
16
|
+
require 'mastodon/rest/reports'
|
17
|
+
require 'mastodon/rest/lists'
|
18
|
+
require 'mastodon/rest/scheduled_statuses'
|
19
|
+
require 'mastodon/rest/conversations'
|
8
20
|
|
9
21
|
module Mastodon
|
10
22
|
module REST
|
@@ -12,10 +24,22 @@ module Mastodon
|
|
12
24
|
include Mastodon::REST::Statuses
|
13
25
|
include Mastodon::REST::Accounts
|
14
26
|
include Mastodon::REST::Timelines
|
27
|
+
include Mastodon::REST::Notifications
|
28
|
+
include Mastodon::REST::Search
|
15
29
|
include Mastodon::REST::Relationships
|
16
30
|
include Mastodon::REST::Media
|
17
31
|
include Mastodon::REST::Suggestions
|
18
32
|
include Mastodon::REST::Apps
|
33
|
+
include Mastodon::REST::Instances
|
34
|
+
include Mastodon::REST::CustomEmojis
|
35
|
+
include Mastodon::REST::DomainBlocks
|
36
|
+
include Mastodon::REST::Filters
|
37
|
+
include Mastodon::REST::Endorsements
|
38
|
+
include Mastodon::REST::Suggestions
|
39
|
+
include Mastodon::REST::Reports
|
40
|
+
include Mastodon::REST::Lists
|
41
|
+
include Mastodon::REST::ScheduledStatuses
|
42
|
+
include Mastodon::REST::Conversations
|
19
43
|
end
|
20
44
|
end
|
21
45
|
end
|
data/lib/mastodon/rest/apps.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'mastodon/rest/utils'
|
2
2
|
require 'mastodon/app'
|
3
|
+
require 'mastodon/entities/app'
|
3
4
|
|
4
5
|
module Mastodon
|
5
6
|
module REST
|
@@ -15,6 +16,12 @@ module Mastodon
|
|
15
16
|
def create_app(name, redirect_uri, scopes = 'read', website = nil)
|
16
17
|
perform_request_with_object(:post, '/api/v1/apps', { client_name: name, redirect_uris: redirect_uri, scopes: scopes, website: website }, Mastodon::App)
|
17
18
|
end
|
19
|
+
|
20
|
+
# Return currently used app and confirm that client credentials are valid
|
21
|
+
# @return [Mastodon::Entities::App]
|
22
|
+
def verify_app_credentials
|
23
|
+
perform_request_with_object(:get, '/api/v1/apps/verify_credentials', {}, Mastodon::Entities::App)
|
24
|
+
end
|
18
25
|
end
|
19
26
|
end
|
20
27
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/conversation'
|
3
|
+
|
4
|
+
module Mastodon
|
5
|
+
module REST
|
6
|
+
module Conversations
|
7
|
+
include Mastodon::REST::Utils
|
8
|
+
|
9
|
+
# Get a list of conversations
|
10
|
+
# @param options [Hash]
|
11
|
+
# @option options :max_id [Integer]
|
12
|
+
# @option options :since_id [Integer]
|
13
|
+
# @option options :min_id [Integer]
|
14
|
+
# @option options :limit [Integer]
|
15
|
+
# @return [Mastodon::Collection<Mastodon::Conversation>]
|
16
|
+
def conversations(options = {})
|
17
|
+
perform_request_with_collection(:get, '/api/v1/conversations', options, Mastodon::Conversation)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Mark a conversation as read
|
21
|
+
# @param id [Integer]
|
22
|
+
# @return [Mastodon::Conversation]
|
23
|
+
def mark_conversation_as_read(id)
|
24
|
+
perform_request_with_object(:post, "/api/v1/conversations/#{id}/read", {}, Mastodon::Conversation)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Delete a conversation. Does not delete statuses in the conversation
|
28
|
+
# @param id [Integer]
|
29
|
+
def delete_conversation(id)
|
30
|
+
perform_request(:delete, "/api/v1/conversations/#{id}")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/emoji'
|
3
|
+
|
4
|
+
module Mastodon
|
5
|
+
module REST
|
6
|
+
module CustomEmojis
|
7
|
+
include Mastodon::REST::Utils
|
8
|
+
|
9
|
+
# Get a list of custom emojis on the server
|
10
|
+
# @return [Mastodon::Collection<Mastodon::Emoji>]
|
11
|
+
def custom_emojis
|
12
|
+
perform_request_with_collection('/api/v1/custom_emojis', {}, Mastodon::Emoji)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
|
3
|
+
module Mastodon
|
4
|
+
module REST
|
5
|
+
module DomainBlocks
|
6
|
+
include Mastodon::REST::Utils
|
7
|
+
|
8
|
+
# Get a list of blocked domains
|
9
|
+
# @param options [Hash]
|
10
|
+
# @option options :max_id [Integer]
|
11
|
+
# @option options :since_id [Integer]
|
12
|
+
# @option options :min_id [Integer]
|
13
|
+
# @option options :limit [Integer]
|
14
|
+
# @return [Mastodon::Collection<String>]
|
15
|
+
def domain_blocks(options = {})
|
16
|
+
perform_request_with_collection('/api/v1/domain_blocks', options, String)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Block a domain
|
20
|
+
# @param domain [String]
|
21
|
+
def block_domain(domain)
|
22
|
+
perform_request(:post, '/api/v1/domain_blocks', domain: domain)
|
23
|
+
end
|
24
|
+
|
25
|
+
# Unblock a domain
|
26
|
+
# @param domain [String]
|
27
|
+
def unblock_domain(domain)
|
28
|
+
perform_request(:delete, '/api/v1/domain_blocks', domain: domain)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/account'
|
3
|
+
require 'mastodon/relationship'
|
4
|
+
|
5
|
+
module Mastodon
|
6
|
+
module REST
|
7
|
+
module Endorsements
|
8
|
+
include Mastodon::REST::Utils
|
9
|
+
|
10
|
+
# Get a list of endorsed accounts
|
11
|
+
# @param options [Hash]
|
12
|
+
# @option options :max_id [Integer]
|
13
|
+
# @option options :since_id [Integer]
|
14
|
+
# @option options :min_id [Integer]
|
15
|
+
# @option options :limit [Integer]
|
16
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
17
|
+
def endorsements(options = {})
|
18
|
+
perform_request_with_collection('/api/v1/endorsements', options, Mastodon::Account)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Endorse an account (feature on own profile)
|
22
|
+
# @param account_id [Integer]
|
23
|
+
# @return [Mastodon::Relationship]
|
24
|
+
def endorse(account_id)
|
25
|
+
perform_request_with_object(:post, "/api/v1/accounts/#{account_id}/pin", {}, Mastodon::Relationship)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Unendorse an account (no longer feature it on own profile)
|
29
|
+
# @param account_id [Integer]
|
30
|
+
# @return [Mastodon::Relationship]
|
31
|
+
def unendorse(account_id)
|
32
|
+
perform_request_with_object(:post, "/api/v1/accounts/#{account_id}/unpin", {}, Mastodon::Relationship)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/filter'
|
3
|
+
|
4
|
+
module Mastodon
|
5
|
+
module REST
|
6
|
+
module Filters
|
7
|
+
include Mastodon::REST::Utils
|
8
|
+
|
9
|
+
# Get a list of filters
|
10
|
+
# @param options [Hash]
|
11
|
+
# @option options :max_id [Integer]
|
12
|
+
# @option options :since_id [Integer]
|
13
|
+
# @option options :min_id [Integer]
|
14
|
+
# @option options :limit [Integer]
|
15
|
+
# @return [Mastodon::Collection<Mastodon::Filter>]
|
16
|
+
def filters(options = {})
|
17
|
+
perform_request_with_collection('/api/v1/filters', options, Mastodon::Filter)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Retrieve a filter
|
21
|
+
# @param id [Integer]
|
22
|
+
# @return [Mastodon::Filter]
|
23
|
+
def filter(id)
|
24
|
+
perform_request_with_object(:put, "/api/v1/filters/#{id}", {}, Mastodon::Filter)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Create a filter
|
28
|
+
# @param params [Hash]
|
29
|
+
# @option params :phrase [String]
|
30
|
+
# @option params :context [Array<String>]
|
31
|
+
# @option params :irreversible [Boolean]
|
32
|
+
# @option params :whole_word [Boolean]
|
33
|
+
# @option params :expires_in [Integer]
|
34
|
+
# @return [Mastodon::Filter]
|
35
|
+
def create_filter(params = {})
|
36
|
+
params[:'context[]'] = params.delete(:context) if params.key?(:context)
|
37
|
+
perform_request_with_object(:post, '/api/v1/filters', params, Mastodon::Filter)
|
38
|
+
end
|
39
|
+
|
40
|
+
# Update a filter
|
41
|
+
# @param id [Integer]
|
42
|
+
# @param params [Hash]
|
43
|
+
# @option params :phrase [String]
|
44
|
+
# @option params :context [Array<String>]
|
45
|
+
# @option params :irreversible [Boolean]
|
46
|
+
# @option params :whole_word [Boolean]
|
47
|
+
# @option params :expires_in [Integer]
|
48
|
+
# @return [Mastodon::Filter]
|
49
|
+
def update_filter(id, params = {})
|
50
|
+
params[:'context[]'] = params.delete(:context) if params.key?(:context)
|
51
|
+
perform_request_with_object(:put, "/api/v1/filters/#{id}", params, Mastodon::Filter)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Delete a filter
|
55
|
+
# @param id [Integer]
|
56
|
+
def delete_filter(id)
|
57
|
+
perform_request(:delete, "/api/v1/filters/#{id}")
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/instance'
|
3
|
+
|
4
|
+
module Mastodon
|
5
|
+
module REST
|
6
|
+
module Instances
|
7
|
+
include Mastodon::REST::Utils
|
8
|
+
|
9
|
+
# Retrieve the current instance. Does not require authentication
|
10
|
+
# @return [Mastodon::Instance]
|
11
|
+
def instance
|
12
|
+
perform_request_with_object(:get, '/api/v1/instance', {}, Mastodon::Instance)
|
13
|
+
end
|
14
|
+
|
15
|
+
# Retrieve activity statistics for the current instance. Does not require authentication
|
16
|
+
# @return [Mastodon::Collection<Hash>]
|
17
|
+
def activity
|
18
|
+
perform_request_with_collection(:get, '/api/v1/instance/activity', {}, Hash)
|
19
|
+
end
|
20
|
+
|
21
|
+
# Retrieve domains of instances known to the current instance. Does not require authentication
|
22
|
+
# @return [Mastodon::Collection<String>]
|
23
|
+
def peers
|
24
|
+
perform_request_with_collection(:get, '/api/v1/instance/peers', {}, String)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require 'mastodon/rest/utils'
|
2
|
+
require 'mastodon/list'
|
3
|
+
require 'mastodon/account'
|
4
|
+
|
5
|
+
module Mastodon
|
6
|
+
module REST
|
7
|
+
module Lists
|
8
|
+
include Mastodon::REST::Utils
|
9
|
+
|
10
|
+
# Get a list of your lists
|
11
|
+
# @param options [Hash]
|
12
|
+
# @option options :max_id [Integer]
|
13
|
+
# @option options :since_id [Integer]
|
14
|
+
# @option options :limit [Integer]
|
15
|
+
# @return [Mastodon::Collection<Mastodon::List>]
|
16
|
+
def lists(options = {})
|
17
|
+
perform_request_with_collection(:get, '/api/v1/lists', options, Mastodon::List)
|
18
|
+
end
|
19
|
+
|
20
|
+
# Retrieve a list
|
21
|
+
# @param id [Integer]
|
22
|
+
# @return [Mastodon::List]
|
23
|
+
def list(id)
|
24
|
+
perform_request_with_object(:get, "/api/v1/lists/#{id}", {}, Mastodon::List)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Create a list
|
28
|
+
# @param params [Hash]
|
29
|
+
# @option params :title
|
30
|
+
# @return [Mastodon::List]
|
31
|
+
def create_list(params = {})
|
32
|
+
perform_request_with_object(:post, '/api/v1/lists/', params, Mastodon::List)
|
33
|
+
end
|
34
|
+
|
35
|
+
# Update a list
|
36
|
+
# @param id [Integer]
|
37
|
+
# @param params [Hash]
|
38
|
+
# @option params :title
|
39
|
+
# @return [Mastodon::List]
|
40
|
+
def update_list(id, params = {})
|
41
|
+
perform_request_with_object(:put, "/api/v1/lists/#{id}", params, Mastodon::List)
|
42
|
+
end
|
43
|
+
|
44
|
+
# Delete a list
|
45
|
+
# @param id [Integer]
|
46
|
+
def delete_list(id)
|
47
|
+
perform_request(:delete, "/api/v1/lists/#{id}")
|
48
|
+
end
|
49
|
+
|
50
|
+
# Get a list of accounts on the list
|
51
|
+
# @param id [Integer]
|
52
|
+
# @param options [Hash]
|
53
|
+
# @option options :max_id [Integer]
|
54
|
+
# @option options :since_id [Integer]
|
55
|
+
# @option options :min_id [Integer]
|
56
|
+
# @option options :limit [Integer]
|
57
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
58
|
+
def list_accounts(id, options = {})
|
59
|
+
perform_request_with_collection(:get, "/api/v1/lists/#{id}/accounts", options, Mastodon::Account)
|
60
|
+
end
|
61
|
+
|
62
|
+
# Add accounts to a list
|
63
|
+
# @param id [Integer]
|
64
|
+
# @param account_ids [Array<Integer>]
|
65
|
+
def add_accounts_to_list(id, account_ids = [])
|
66
|
+
perform_request(:post, "/api/v1/lists/#{id}/accounts", { 'account_ids[]': account_ids })
|
67
|
+
end
|
68
|
+
|
69
|
+
# Remove accounts from list
|
70
|
+
# @param id [Integer]
|
71
|
+
# @param account_ids [Array<Integer>]
|
72
|
+
def remove_accounts_from_list(id, account_ids = [])
|
73
|
+
perform_request(:delete, "/api/v1/lists/#{id}/accounts", { 'account_ids[]': account_ids })
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|