moostodon 0.2.0 → 0.4.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 +5 -5
- data/lib/mastodon/account.rb +9 -1
- data/lib/mastodon/client.rb +1 -1
- data/lib/mastodon/error.rb +2 -0
- data/lib/mastodon/field.rb +14 -0
- data/lib/mastodon/filter.rb +32 -0
- data/lib/mastodon/instance.rb +7 -1
- data/lib/mastodon/rest/accounts.rb +80 -2
- data/lib/mastodon/rest/api.rb +14 -10
- data/lib/mastodon/rest/apps.rb +2 -2
- data/lib/mastodon/rest/client.rb +2 -2
- data/lib/mastodon/rest/filters.rb +69 -0
- data/lib/mastodon/rest/instances.rb +27 -2
- data/lib/mastodon/rest/lists.rb +92 -0
- data/lib/mastodon/rest/media.rb +18 -3
- data/lib/mastodon/rest/notifications.rb +2 -2
- data/lib/mastodon/rest/relationships.rb +2 -2
- data/lib/mastodon/rest/request.rb +2 -2
- data/lib/mastodon/rest/search.rb +2 -2
- data/lib/mastodon/rest/statuses.rb +22 -2
- data/lib/mastodon/rest/suggestions.rb +10 -2
- data/lib/mastodon/rest/timelines.rb +2 -2
- data/lib/mastodon/rest/utils.rb +1 -1
- data/lib/mastodon/results.rb +2 -2
- data/lib/mastodon/status.rb +8 -6
- data/lib/mastodon/streaming/client.rb +39 -5
- data/lib/mastodon/streaming/message_parser.rb +2 -2
- data/lib/mastodon/streaming/response.rb +1 -1
- data/lib/mastodon/version.rb +1 -1
- data/lib/moostodon.rb +5 -5
- metadata +7 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2580c5ee1288d53430a0eb92bd55f9228d197ea529a175115862c34292d3dad7
|
4
|
+
data.tar.gz: 278f4930eda8f39a12bd5d3a3c57d761effdda5d7367f6f55ea39924cd32a87a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 148d9169f3f691ab0b473ff6d63dfe30b867809177618281cbc7f130d97b181fccb1e57bd51361740dc28c7bda43925e970141f12f1c5c27821101149b5596a7
|
7
|
+
data.tar.gz: 6bae80cac1da85d1505710c5ffdf5f3feb8d255322fb98facd8b8d61d9289552fb9ed6af7053686efdaa8732472cd288cb20e848200beaa68e71c8b8a0b43ffa
|
data/lib/mastodon/account.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require_relative 'field'
|
4
|
+
|
3
5
|
module Mastodon
|
4
6
|
class Account < Mastodon::Base
|
5
7
|
# @!attribute [r] id
|
@@ -34,6 +36,10 @@ module Mastodon
|
|
34
36
|
# @return [Boolean]
|
35
37
|
# @!attribute [r] moved
|
36
38
|
# @return [Mastodon::Account]
|
39
|
+
# @!attribute [r] fields
|
40
|
+
# @return [Mastodon::Collection<Mastodon::Field>]
|
41
|
+
# @!attribute [r] bot?
|
42
|
+
# @return [Boolean]
|
37
43
|
|
38
44
|
normal_attr_reader :id,
|
39
45
|
:username,
|
@@ -50,10 +56,12 @@ module Mastodon
|
|
50
56
|
:following_count,
|
51
57
|
:statuses_count
|
52
58
|
|
53
|
-
predicate_attr_reader :locked
|
59
|
+
predicate_attr_reader :locked, :bot
|
54
60
|
|
55
61
|
object_attr_reader :moved, Mastodon::Account
|
56
62
|
|
63
|
+
collection_attr_reader :fields, Mastodon::Field
|
64
|
+
|
57
65
|
def initialize(attributes = {})
|
58
66
|
attributes.fetch('id')
|
59
67
|
super
|
data/lib/mastodon/client.rb
CHANGED
data/lib/mastodon/error.rb
CHANGED
@@ -7,6 +7,7 @@ module Mastodon
|
|
7
7
|
BadRequest = Class.new(ClientError)
|
8
8
|
Unauthorized = Class.new(ClientError)
|
9
9
|
Forbidden = Class.new(ClientError)
|
10
|
+
NotFound = Class.new(ClientError)
|
10
11
|
UnprocessableEntity = Class.new(ClientError)
|
11
12
|
TooManyRequests = Class.new(ClientError)
|
12
13
|
|
@@ -20,6 +21,7 @@ module Mastodon
|
|
20
21
|
400 => Mastodon::Error::BadRequest,
|
21
22
|
401 => Mastodon::Error::Unauthorized,
|
22
23
|
403 => Mastodon::Error::Forbidden,
|
24
|
+
404 => Mastodon::Error::NotFound,
|
23
25
|
422 => Mastodon::Error::UnprocessableEntity,
|
24
26
|
429 => Mastodon::Error::TooManyRequests,
|
25
27
|
500 => Mastodon::Error::InternalServerError,
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mastodon
|
4
|
+
class Field < Mastodon::Base
|
5
|
+
# @!attribute [r] name
|
6
|
+
# @return [String]
|
7
|
+
# @!attribute [r] value
|
8
|
+
# @return [String]
|
9
|
+
# @!attribute [r] verified_at
|
10
|
+
# @return [String]
|
11
|
+
|
12
|
+
normal_attr_reader :name, :value, :verified_at
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Mastodon
|
4
|
+
class Filter < Mastodon::Base
|
5
|
+
# @!attribute [r] id
|
6
|
+
# @return [String]
|
7
|
+
# @!attribute [r] phrase
|
8
|
+
# @return [String]
|
9
|
+
# @!attribute [r] context
|
10
|
+
# @return [Array<String>]
|
11
|
+
# @!attribute [r] expires_at
|
12
|
+
# @return [String]
|
13
|
+
# @!attribute [r] irreversible?
|
14
|
+
# @return [Boolean]
|
15
|
+
# @!attribute [r] whole_word?
|
16
|
+
# @return [Boolean]
|
17
|
+
|
18
|
+
normal_attr_reader :id,
|
19
|
+
:phrase,
|
20
|
+
:context,
|
21
|
+
:expires_at
|
22
|
+
|
23
|
+
predicate_attr_reader :irreversible,
|
24
|
+
:whole_word
|
25
|
+
|
26
|
+
def initialize(attributes = {})
|
27
|
+
attributes.fetch('id')
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
data/lib/mastodon/instance.rb
CHANGED
@@ -14,12 +14,18 @@ module Mastodon
|
|
14
14
|
# @return [String]
|
15
15
|
# @!attribute [r] urls
|
16
16
|
# @return [Hash]
|
17
|
+
# @!attribute [r] thumbnail
|
18
|
+
# @return [String]
|
19
|
+
# @!attribute [r] max_toot_chars
|
20
|
+
# @return [Integer]
|
17
21
|
|
18
22
|
normal_attr_reader :uri,
|
19
23
|
:title,
|
20
24
|
:description,
|
21
25
|
:email,
|
22
26
|
:version,
|
23
|
-
:urls
|
27
|
+
:urls,
|
28
|
+
:thumbnail,
|
29
|
+
:max_toot_chars
|
24
30
|
end
|
25
31
|
end
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../rest/utils'
|
4
|
+
require_relative '../account'
|
5
|
+
require_relative '../relationship'
|
5
6
|
|
6
7
|
module Mastodon
|
7
8
|
module REST
|
@@ -24,8 +25,15 @@ module Mastodon
|
|
24
25
|
# the user's avatar
|
25
26
|
# @option options header [String] A base64 encoded image to display as
|
26
27
|
# the user's header image
|
28
|
+
# @option options bot [Boolean] A boolean indicating if this account
|
29
|
+
# is automated
|
30
|
+
|
27
31
|
# @return [Mastodon::Account]
|
28
32
|
def update_credentials(opts = {})
|
33
|
+
opts[:fields] and opts.delete(:fields).each_with_index { |f, i|
|
34
|
+
opts["fields_attributes[#{i}][name]"] = f[:name]
|
35
|
+
opts["fields_attributes[#{i}][value]"] = f[:value]
|
36
|
+
}
|
29
37
|
perform_request_with_object(:patch,
|
30
38
|
'/api/v1/accounts/update_credentials',
|
31
39
|
opts, Mastodon::Account)
|
@@ -66,6 +74,76 @@ module Mastodon
|
|
66
74
|
'/api/v1/follows', { uri: uri },
|
67
75
|
Mastodon::Account)
|
68
76
|
end
|
77
|
+
|
78
|
+
|
79
|
+
# Get account endorsements
|
80
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
81
|
+
def endorsements
|
82
|
+
perform_request_with_collection(:get, '/api/v1/endorsements',
|
83
|
+
{}, Mastodon::Account)
|
84
|
+
end
|
85
|
+
|
86
|
+
# Add an endorsement
|
87
|
+
# @param id [Integer]
|
88
|
+
# @return [Mastodon::Relationship]
|
89
|
+
def add_endorsement(id)
|
90
|
+
perform_request_with_object(:post, "/api/v1/accounts/#{id}/pin",
|
91
|
+
{}, Mastodon::Relationship)
|
92
|
+
end
|
93
|
+
|
94
|
+
# Remove an endorsement
|
95
|
+
# @param id [Integer]
|
96
|
+
# @return [Mastodon::Relationship]
|
97
|
+
def remove_endorsement(id)
|
98
|
+
perform_request_with_object(:post, "/api/v1/accounts/#{id}/unpin",
|
99
|
+
{}, Mastodon::Relationship)
|
100
|
+
end
|
101
|
+
# Get user mutes
|
102
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
103
|
+
def mutes
|
104
|
+
perform_request_with_collection(:get, '/api/v1/mutes',
|
105
|
+
{}, Mastodon::Account)
|
106
|
+
end
|
107
|
+
|
108
|
+
# Get user blocks
|
109
|
+
# @param options [Hash]
|
110
|
+
# @option options :limit [Integer]
|
111
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
112
|
+
def blocks(options = {})
|
113
|
+
perform_request_with_collection(:get, '/api/v1/blocks',
|
114
|
+
options, Mastodon::Account)
|
115
|
+
end
|
116
|
+
# Report an account
|
117
|
+
# @param id [Integer]
|
118
|
+
# @param options [Hash]
|
119
|
+
# @option options :status_ids [Array<Integer>]
|
120
|
+
# @option options :comment [String]
|
121
|
+
def report(id, options = {})
|
122
|
+
options[:account_id] = id
|
123
|
+
!perform_request(:post, '/api/v1/reports', options).nil?
|
124
|
+
end
|
125
|
+
# Gets follow requests
|
126
|
+
# @param options [Hash]
|
127
|
+
# @option options :limit [Integer]
|
128
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
129
|
+
def follow_requests(options = {})
|
130
|
+
perform_request_with_collection(:get, '/api/v1/follow_requests',
|
131
|
+
options, Mastodon::Account)
|
132
|
+
end
|
133
|
+
|
134
|
+
# Accept a follow request
|
135
|
+
# @param id [Integer]
|
136
|
+
# @return [Boolean]
|
137
|
+
def accept_follow_request(id)
|
138
|
+
!perform_request(:post, "/api/v1/follow_requests/#{id}/authorize").nil?
|
139
|
+
end
|
140
|
+
|
141
|
+
# Reject follow request
|
142
|
+
# @param id [Integer]
|
143
|
+
# @return [Boolean]
|
144
|
+
def reject_follow_request(id)
|
145
|
+
!perform_request(:post, "/api/v1/follow_requests/#{id}/reject").nil?
|
146
|
+
end
|
69
147
|
end
|
70
148
|
end
|
71
149
|
end
|
data/lib/mastodon/rest/api.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
3
|
+
require_relative 'statuses'
|
4
|
+
require_relative 'accounts'
|
5
|
+
require_relative 'timelines'
|
6
|
+
require_relative 'notifications'
|
7
|
+
require_relative 'search'
|
8
|
+
require_relative 'relationships'
|
9
|
+
require_relative 'media'
|
10
|
+
require_relative 'suggestions'
|
11
|
+
require_relative 'apps'
|
12
|
+
require_relative 'instances'
|
13
|
+
require_relative 'lists'
|
14
|
+
require_relative 'filters'
|
13
15
|
|
14
16
|
module Mastodon
|
15
17
|
module REST
|
@@ -24,6 +26,8 @@ module Mastodon
|
|
24
26
|
include Mastodon::REST::Suggestions
|
25
27
|
include Mastodon::REST::Apps
|
26
28
|
include Mastodon::REST::Instances
|
29
|
+
include Mastodon::REST::Lists
|
30
|
+
include Mastodon::REST::Filters
|
27
31
|
end
|
28
32
|
end
|
29
33
|
end
|
data/lib/mastodon/rest/apps.rb
CHANGED
data/lib/mastodon/rest/client.rb
CHANGED
@@ -0,0 +1,69 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'utils'
|
4
|
+
require_relative '../filter'
|
5
|
+
|
6
|
+
module Mastodon
|
7
|
+
module REST
|
8
|
+
module Filters
|
9
|
+
include Mastodon::REST::Utils
|
10
|
+
|
11
|
+
# Create a new filter
|
12
|
+
# @param options [Hash]
|
13
|
+
# @option options :phrase [String]
|
14
|
+
# @option options :context [Array<String>]
|
15
|
+
# @option options :irreversible [Boolean]
|
16
|
+
# @option options :whole_word [Boolean]
|
17
|
+
# @option options :expires_in [Integer]
|
18
|
+
# @returns [Mastodon::Filter]
|
19
|
+
def create_filter(options = {})
|
20
|
+
context = options.delete(:context)
|
21
|
+
context = [ context ] unless context.kind_of? Array
|
22
|
+
options['context[]'] = context
|
23
|
+
|
24
|
+
perform_request_with_object(:post, '/api/v1/filters',
|
25
|
+
options, Mastodon::Filter)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Gets a filter
|
29
|
+
# @param id [Integer]
|
30
|
+
# @returns [Mastodon::Filter]
|
31
|
+
def filter(id)
|
32
|
+
perform_request_with_object(:get, "/api/v1/filters/#{id}",
|
33
|
+
{}, Mastodon::Filter)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Gets all filters
|
37
|
+
# @returns [Mastodon::Collection<Mastodon::Filter>]
|
38
|
+
def filters
|
39
|
+
perform_request_with_collection(:get, '/api/v1/filters',
|
40
|
+
{}, Mastodon::Filter)
|
41
|
+
end
|
42
|
+
|
43
|
+
# Update an existing filter
|
44
|
+
# @param id [Integer]
|
45
|
+
# @param options [Hash]
|
46
|
+
# @option options :phrase [String]
|
47
|
+
# @option options :context [Array<String>]
|
48
|
+
# @option options :irreversible [Boolean]
|
49
|
+
# @option options :whole_word [Boolean]
|
50
|
+
# @option options :expires_in [Integer]
|
51
|
+
# @returns [Mastodon::Filter]
|
52
|
+
def update_filter(id, options = {})
|
53
|
+
context = options.delete(:context)
|
54
|
+
context = [ context ] unless context.kind_of? Array
|
55
|
+
options['context[]'] = context
|
56
|
+
|
57
|
+
perform_request_with_object(:put, "/api/v1/filters/#{id}",
|
58
|
+
options, Mastodon::Filter)
|
59
|
+
end
|
60
|
+
|
61
|
+
# Delete a filter
|
62
|
+
# @param id [Integer]
|
63
|
+
# @returns [Mastodon::Filter]
|
64
|
+
def delete_filter(id)
|
65
|
+
!perform_request(:delete, "/api/v1/filters/#{id}").nil?
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../rest/utils'
|
4
|
+
require_relative '../instance'
|
5
5
|
|
6
6
|
module Mastodon
|
7
7
|
module REST
|
@@ -14,6 +14,31 @@ module Mastodon
|
|
14
14
|
perform_request_with_object(:get, '/api/v1/instance', {},
|
15
15
|
Mastodon::Instance)
|
16
16
|
end
|
17
|
+
|
18
|
+
# Get user domain blocks
|
19
|
+
# @param options [Hash]
|
20
|
+
# @option options :limit [Integer]
|
21
|
+
# @return [Mastodon::Collection<String>]
|
22
|
+
def domain_blocks(options = {})
|
23
|
+
perform_request_with_collection(:get, '/api/v1/domain_blocks',
|
24
|
+
options, String)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Block a domain
|
28
|
+
# @param domain [String]
|
29
|
+
# @return [Boolean]
|
30
|
+
def block_domain(domain)
|
31
|
+
!perform_request(:post, '/api/v1/domain_blocks',
|
32
|
+
{ domain: domain }).nil?
|
33
|
+
end
|
34
|
+
|
35
|
+
# Unblock a domain
|
36
|
+
# @param domain [String]
|
37
|
+
# @return [Boolean]
|
38
|
+
def unblock_domain(domain)
|
39
|
+
!perform_request(:delete, '/api/v1/domain_blocks',
|
40
|
+
{ domain: domain }).nil?
|
41
|
+
end
|
17
42
|
end
|
18
43
|
end
|
19
44
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'utils'
|
4
|
+
require_relative '../list'
|
5
|
+
|
6
|
+
module Mastodon
|
7
|
+
module REST
|
8
|
+
module Lists
|
9
|
+
include Mastodon::REST::Utils
|
10
|
+
|
11
|
+
# Retrieve list
|
12
|
+
# @param id [Integer]
|
13
|
+
# @return [Mastodon::List]
|
14
|
+
def list(id)
|
15
|
+
perform_request_with_object(:get, "/api/v1/lists/#{id}",
|
16
|
+
{}, Mastodon::List)
|
17
|
+
end
|
18
|
+
|
19
|
+
# Retrieve all lists
|
20
|
+
# @param id [Integer]
|
21
|
+
# @return [Mastodon::Collections<Mastodon::List>]
|
22
|
+
def lists
|
23
|
+
perform_request_with_collection(:get, '/api/v1/lists',
|
24
|
+
{}, Mastodon::List)
|
25
|
+
end
|
26
|
+
|
27
|
+
# Create a new list
|
28
|
+
# @param title [String]
|
29
|
+
# @return [Mastodon::List]
|
30
|
+
def create_list(title)
|
31
|
+
options = { title: title }
|
32
|
+
perform_request_with_object(:post, '/api/v1/lists',
|
33
|
+
options, Mastodon::List)
|
34
|
+
end
|
35
|
+
|
36
|
+
# Update a list
|
37
|
+
# @param id [Integer]
|
38
|
+
# @param options [Hash]
|
39
|
+
# @option options :title [String]
|
40
|
+
# @return [Mastodon::List]
|
41
|
+
def update_list(id, options = {})
|
42
|
+
perform_request_with_object(:put, "/api/v1/lists/#{id}",
|
43
|
+
options, Mastodon::List)
|
44
|
+
end
|
45
|
+
|
46
|
+
# Gets the accounts that are in a list
|
47
|
+
# @param id [Integer]
|
48
|
+
# @param options [Hash]
|
49
|
+
# @option options :limit [Integer]
|
50
|
+
# @return [Mastodon::Collection<Mastodon::Account>]
|
51
|
+
def list_accounts(id, options = {})
|
52
|
+
perform_request_with_collection(:get, "/api/v1/lists/#{id}/accounts",
|
53
|
+
options, Mastodon::List)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Gets the lists this account is a part of
|
57
|
+
# @param id [Integer]
|
58
|
+
# @return [Mastodon::Collection<Mastodon::List>]
|
59
|
+
def account_lists(id)
|
60
|
+
perform_request_with_collection(:get, "/api/v1/accounts/#{id}/lists",
|
61
|
+
{}, Mastodon::List)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Delete a list
|
65
|
+
# @param id [Integer]
|
66
|
+
# @return [Boolean]
|
67
|
+
def delete_list(id)
|
68
|
+
!perform_request(:delete, "/api/v1/lists/#{id}").nil?
|
69
|
+
end
|
70
|
+
|
71
|
+
# Add accounts to a list
|
72
|
+
# @param id [Integer]
|
73
|
+
# @param accounts [Array<Integer>]
|
74
|
+
def list_add_accounts(id, *accounts)
|
75
|
+
options = {}
|
76
|
+
options['account_ids[]'] = accounts
|
77
|
+
perform_request(:post, "/api/v1/lists/#{id}/accounts",
|
78
|
+
options)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Add accounts to a list
|
82
|
+
# @param id [Integer]
|
83
|
+
# @param accounts [Array<Integer>]
|
84
|
+
def list_remove_accounts(id, *accounts)
|
85
|
+
options = {}
|
86
|
+
options['account_ids[]'] = accounts
|
87
|
+
perform_request(:delete, "/api/v1/lists/#{id}/accounts",
|
88
|
+
options)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/mastodon/rest/media.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../rest/utils'
|
4
|
+
require_relative '../media'
|
5
5
|
|
6
6
|
module Mastodon
|
7
7
|
module REST
|
@@ -13,8 +13,10 @@ module Mastodon
|
|
13
13
|
# upload. Will be converted to HTTP::FormData::File before upload
|
14
14
|
# @param description [String] A text description of the image, to be
|
15
15
|
# along with the image.
|
16
|
+
# @param focus [Array] Array of floats that set the focal point of
|
17
|
+
# the image
|
16
18
|
# @return [Mastodon::Media]
|
17
|
-
def upload_media(file, description = nil)
|
19
|
+
def upload_media(file, description = nil, *focus)
|
18
20
|
file = if file.is_a?(HTTP::FormData::File)
|
19
21
|
file
|
20
22
|
else
|
@@ -22,6 +24,7 @@ module Mastodon
|
|
22
24
|
end
|
23
25
|
payload = { file: file }
|
24
26
|
payload[:description] = description unless description.nil?
|
27
|
+
payload[:focus] = focus.collect{|f| f.to_s}.join(',') unless focus.nil?
|
25
28
|
perform_request_with_object(:post, '/api/v1/media', payload,
|
26
29
|
Mastodon::Media)
|
27
30
|
end
|
@@ -37,6 +40,18 @@ module Mastodon
|
|
37
40
|
{ description: description },
|
38
41
|
Mastodon::Media)
|
39
42
|
end
|
43
|
+
|
44
|
+
# Update a media focal point, can only be updated while it's not
|
45
|
+
# associated to a status
|
46
|
+
# @param media_id [Integer] Id of the media, returned by upload_media
|
47
|
+
# @param focal_x [Float] X position of the focus
|
48
|
+
# @param focal_y [Float] Y position of the focus
|
49
|
+
# @return [Mastodon::Media]
|
50
|
+
def update_media_focus(media_id, focus_x, focus_y)
|
51
|
+
perform_request_with_object(:put, "/api/v1/media/#{media_id}",
|
52
|
+
{ focus: "#{focus_x},#{focus_y}" },
|
53
|
+
Mastodon::Media)
|
54
|
+
end
|
40
55
|
end
|
41
56
|
end
|
42
57
|
end
|
data/lib/mastodon/rest/search.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative 'utils'
|
4
|
+
require_relative '../status'
|
5
5
|
|
6
6
|
module Mastodon
|
7
7
|
module REST
|
@@ -112,6 +112,26 @@ module Mastodon
|
|
112
112
|
perform_request_with_collection(:get, url, options, Mastodon::Status)
|
113
113
|
end
|
114
114
|
|
115
|
+
# Mute thread
|
116
|
+
# @param id [Integer]
|
117
|
+
# @return [Mastodon::Status]
|
118
|
+
def mute_thread(id)
|
119
|
+
perform_request_with_object(:post,
|
120
|
+
"/api/v1/statuses/#{id}/mute",
|
121
|
+
{},
|
122
|
+
Mastodon::Status)
|
123
|
+
end
|
124
|
+
|
125
|
+
# Unmute thread
|
126
|
+
# @param id [Integer]
|
127
|
+
# @return [Mastodon::Status]
|
128
|
+
def unmute_thread(id)
|
129
|
+
perform_request_with_object(:post,
|
130
|
+
"/api/v1/statuses/#{id}/unmute",
|
131
|
+
{},
|
132
|
+
Mastodon::Status)
|
133
|
+
end
|
134
|
+
|
115
135
|
private
|
116
136
|
|
117
137
|
def normalize_status_params(*args)
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
3
|
+
require_relative '../rest/utils'
|
4
|
+
require_relative '../account'
|
5
5
|
|
6
6
|
module Mastodon
|
7
7
|
module REST
|
@@ -14,6 +14,14 @@ module Mastodon
|
|
14
14
|
perform_request_with_collection(:get, '/api/v1/accounts/suggestions',
|
15
15
|
{}, Mastodon::Account)
|
16
16
|
end
|
17
|
+
|
18
|
+
# Remove account from suggestions
|
19
|
+
# @param id [Integer]
|
20
|
+
# @return [Boolean]
|
21
|
+
def remove_suggestion(id)
|
22
|
+
!perform_request(:delete,
|
23
|
+
"/api/v1/suggestions/#{id}").nil?
|
24
|
+
end
|
17
25
|
end
|
18
26
|
end
|
19
27
|
end
|
data/lib/mastodon/rest/utils.rb
CHANGED
data/lib/mastodon/results.rb
CHANGED
data/lib/mastodon/status.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
3
|
+
require_relative 'account'
|
4
|
+
require_relative 'entities/media'
|
5
|
+
require_relative 'entities/mention'
|
6
|
+
require_relative 'entities/app'
|
7
|
+
require_relative 'entities/hashtag'
|
8
|
+
require_relative 'emoji'
|
9
|
+
require_relative 'card'
|
9
10
|
|
10
11
|
module Mastodon
|
11
12
|
class Status < Mastodon::Base
|
@@ -80,6 +81,7 @@ module Mastodon
|
|
80
81
|
object_attr_reader :account, Mastodon::Account
|
81
82
|
object_attr_reader :reblog, Mastodon::Status
|
82
83
|
object_attr_reader :application, Mastodon::Entities::App
|
84
|
+
object_attr_reader :card, Mastodon::Card
|
83
85
|
|
84
86
|
collection_attr_reader :media_attachments, Mastodon::Entities::Media
|
85
87
|
collection_attr_reader :mentions, Mastodon::Entities::Mention
|
@@ -1,11 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'http/request'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
require_relative '../client'
|
5
|
+
require_relative '../streaming/connection'
|
6
|
+
require_relative '../streaming/deleted_status'
|
7
|
+
require_relative '../streaming/message_parser'
|
8
|
+
require_relative '../streaming/response'
|
9
9
|
|
10
10
|
module Mastodon
|
11
11
|
module Streaming
|
@@ -35,6 +35,14 @@ module Mastodon
|
|
35
35
|
stream('user', options, &block)
|
36
36
|
end
|
37
37
|
|
38
|
+
# Streams posts from the local instance
|
39
|
+
#
|
40
|
+
# @yield [Mastodon::Status, Mastodon::Notification,
|
41
|
+
# Mastodon::Streaming::DeletedStatus] A stream of Mastodon objects.
|
42
|
+
def local(options = {}, &block)
|
43
|
+
stream('public/local', options, &block)
|
44
|
+
end
|
45
|
+
|
38
46
|
# Returns statuses that contain the specified hashtag
|
39
47
|
#
|
40
48
|
# @yield [Mastodon::Status, Mastodon::Notification,
|
@@ -44,6 +52,32 @@ module Mastodon
|
|
44
52
|
stream('hashtag', options, &block)
|
45
53
|
end
|
46
54
|
|
55
|
+
# Returns local statuses that contain the specified hashtag
|
56
|
+
#
|
57
|
+
# @yield [Mastodon::Status, Mastodon::Notification,
|
58
|
+
# Mastodon::Streaming::DeletedStatus] A stream of Mastodon objects.
|
59
|
+
def local_hashtag(tag, options = {}, &block)
|
60
|
+
options['tag'] = tag
|
61
|
+
stream('hashtag/local', options, &block)
|
62
|
+
end
|
63
|
+
|
64
|
+
# Returns statuses from the specified list
|
65
|
+
#
|
66
|
+
# @yield [Mastodon::Status, Mastodon::Notification,
|
67
|
+
# Mastodon::Streaming::DeletedStatus] A stream of Mastodon objects.
|
68
|
+
def list(id, options = {}, &block)
|
69
|
+
options['list'] = id
|
70
|
+
stream('list', options, &block)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Returns direct messages for the authenticated user
|
74
|
+
#
|
75
|
+
# @yield [Mastodon::Status, Mastodon::Notification,
|
76
|
+
# Mastodon::Streaming::DeletedStatus] A stream of Mastodon objects.
|
77
|
+
def direct(options = {}, &block)
|
78
|
+
stream('direct', options, &block)
|
79
|
+
end
|
80
|
+
|
47
81
|
# Returns all public statuses
|
48
82
|
#
|
49
83
|
# @yield [Mastodon::Status, Mastodon::Notification,
|
data/lib/mastodon/version.rb
CHANGED
data/lib/moostodon.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'addressable/uri'
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
4
|
+
require_relative 'mastodon/base'
|
5
|
+
require_relative 'mastodon/collection'
|
6
|
+
require_relative 'mastodon/results'
|
7
|
+
require_relative 'mastodon/rest/client'
|
8
|
+
require_relative 'mastodon/streaming/client'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moostodon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxine Michalski
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -98,6 +98,8 @@ files:
|
|
98
98
|
- lib/mastodon/entities/media.rb
|
99
99
|
- lib/mastodon/entities/mention.rb
|
100
100
|
- lib/mastodon/error.rb
|
101
|
+
- lib/mastodon/field.rb
|
102
|
+
- lib/mastodon/filter.rb
|
101
103
|
- lib/mastodon/headers.rb
|
102
104
|
- lib/mastodon/instance.rb
|
103
105
|
- lib/mastodon/list.rb
|
@@ -108,7 +110,9 @@ files:
|
|
108
110
|
- lib/mastodon/rest/api.rb
|
109
111
|
- lib/mastodon/rest/apps.rb
|
110
112
|
- lib/mastodon/rest/client.rb
|
113
|
+
- lib/mastodon/rest/filters.rb
|
111
114
|
- lib/mastodon/rest/instances.rb
|
115
|
+
- lib/mastodon/rest/lists.rb
|
112
116
|
- lib/mastodon/rest/media.rb
|
113
117
|
- lib/mastodon/rest/notifications.rb
|
114
118
|
- lib/mastodon/rest/relationships.rb
|
@@ -148,7 +152,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
148
152
|
version: '0'
|
149
153
|
requirements: []
|
150
154
|
rubyforge_project:
|
151
|
-
rubygems_version: 2.
|
155
|
+
rubygems_version: 2.7.7
|
152
156
|
signing_key:
|
153
157
|
specification_version: 4
|
154
158
|
summary: A ruby interface to the Mastodon API, based on mastodon-api.
|