mastodon-api 1.1.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/lib/mastodon.rb +2 -0
  3. data/lib/mastodon/access_token.rb +21 -0
  4. data/lib/mastodon/account.rb +44 -2
  5. data/lib/mastodon/app.rb +8 -1
  6. data/lib/mastodon/card.rb +41 -0
  7. data/lib/mastodon/client.rb +8 -1
  8. data/lib/mastodon/conversation.rb +25 -0
  9. data/lib/mastodon/emoji.rb +21 -0
  10. data/lib/mastodon/entities/app.rb +12 -0
  11. data/lib/mastodon/entities/hashtag.rb +12 -0
  12. data/lib/mastodon/entities/media.rb +13 -1
  13. data/lib/mastodon/entities/mention.rb +1 -1
  14. data/lib/mastodon/field.rb +18 -0
  15. data/lib/mastodon/filter.rb +29 -0
  16. data/lib/mastodon/hashtag.rb +19 -0
  17. data/lib/mastodon/instance.rb +33 -0
  18. data/lib/mastodon/list.rb +15 -0
  19. data/lib/mastodon/media.rb +16 -2
  20. data/lib/mastodon/notification.rb +30 -0
  21. data/lib/mastodon/relationship.rb +23 -2
  22. data/lib/mastodon/rest/accounts.rb +52 -9
  23. data/lib/mastodon/rest/api.rb +24 -0
  24. data/lib/mastodon/rest/apps.rb +7 -0
  25. data/lib/mastodon/rest/conversations.rb +34 -0
  26. data/lib/mastodon/rest/custom_emojis.rb +16 -0
  27. data/lib/mastodon/rest/domain_blocks.rb +32 -0
  28. data/lib/mastodon/rest/endorsements.rb +36 -0
  29. data/lib/mastodon/rest/filters.rb +61 -0
  30. data/lib/mastodon/rest/instances.rb +28 -0
  31. data/lib/mastodon/rest/lists.rb +77 -0
  32. data/lib/mastodon/rest/media.rb +17 -3
  33. data/lib/mastodon/rest/notifications.rb +34 -0
  34. data/lib/mastodon/rest/relationships.rb +68 -1
  35. data/lib/mastodon/rest/reports.rb +20 -0
  36. data/lib/mastodon/rest/request.rb +7 -3
  37. data/lib/mastodon/rest/scheduled_statuses.rb +43 -0
  38. data/lib/mastodon/rest/search.rb +20 -0
  39. data/lib/mastodon/rest/statuses.rb +57 -5
  40. data/lib/mastodon/rest/suggestions.rb +13 -2
  41. data/lib/mastodon/rest/timelines.rb +19 -0
  42. data/lib/mastodon/rest/utils.rb +3 -3
  43. data/lib/mastodon/results.rb +18 -0
  44. data/lib/mastodon/scheduled_status.rb +25 -0
  45. data/lib/mastodon/status.rb +49 -4
  46. data/lib/mastodon/streaming/client.rb +96 -0
  47. data/lib/mastodon/streaming/connection.rb +44 -0
  48. data/lib/mastodon/streaming/events/filters_change.rb +7 -0
  49. data/lib/mastodon/streaming/events/status_delete.rb +16 -0
  50. data/lib/mastodon/streaming/message_parser.rb +23 -0
  51. data/lib/mastodon/streaming/response.rb +42 -0
  52. data/lib/mastodon/version.rb +2 -2
  53. data/mastodon.gemspec +5 -3
  54. metadata +68 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 041943ed6a812cb1b332f5bc67d9578a1fe8ff1f
4
- data.tar.gz: 5dd6f241c077678c79aa39a4943923bc02f8a5fe
3
+ metadata.gz: 964fc483f0637a71cd58ef1b86f1a94dd31dd3a6
4
+ data.tar.gz: 3188dfd0d8f30b4cc65f12c8e46548340e324159
5
5
  SHA512:
6
- metadata.gz: 4d94b3e4745d4b832b8c5a9b04c9422a3262e852c11483fad08460148bb6ee065bc4f3e9756d059ecfff6ed28dc589d14ca3c28e113e524aed55689d1a78804d
7
- data.tar.gz: 43faaa2dcd228681f2d07c6be1155fcf84b78183f60f3f7503eec7223e0a96290a2f5b98102154d0c028a80fd553dd9491ad8a531cad2a61eef9c18f2c6968c4
6
+ metadata.gz: 7ac8a2fcad9cb903a21e699ff33397d0c4976bf4eb26304a5cfb9982dc2e493fef0d6790831d8ee0dd143d65c3681f9090711594930b9f2f905bc2415c54c9e6
7
+ data.tar.gz: a69549432a0183c1e0d5d5faac7eb8635569c149e903b268058ce78afa7e2e843aa588692ce730e8eb7c7896c0478266e4fd5e5b02582dad3aec40acf1d824f3
@@ -1,4 +1,6 @@
1
1
  require 'addressable/uri'
2
2
  require 'mastodon/base'
3
3
  require 'mastodon/collection'
4
+ require 'mastodon/results'
4
5
  require 'mastodon/rest/client'
6
+ require 'mastodon/streaming/client'
@@ -0,0 +1,21 @@
1
+ module Mastodon
2
+ class AccessToken < Mastodon::Base
3
+ # @!attribute [r] access_token
4
+ # @return [String]
5
+ # @!attribute [r] token_type
6
+ # @return [String]
7
+ # @!attribute [r] scope
8
+ # @return [String]
9
+ # @!attribute [r] created_at
10
+ # @return [String]
11
+ normal_attr_reader :access_token,
12
+ :token_type,
13
+ :scope,
14
+ :created_at
15
+
16
+ def initialize(attributes = {})
17
+ attributes.fetch('access_token')
18
+ super
19
+ end
20
+ end
21
+ end
@@ -1,17 +1,26 @@
1
+ require 'mastodon/emoji'
2
+ require 'mastodon/field'
3
+
1
4
  module Mastodon
2
5
  class Account < Mastodon::Base
3
6
  # @!attribute [r] id
4
- # @return [Integer]
7
+ # @return [String]
5
8
  # @!attribute [r] username
6
9
  # @return [String]
7
10
  # @!attribute [r] acct
8
11
  # @return [String]
12
+ # @!attribute [r] display_name
13
+ # @return [String]
9
14
  # @!attribute [r] url
10
15
  # @return [String]
11
16
  # @!attribute [r] avatar
12
17
  # @return [String]
18
+ # @!attribute [r] avatar_static
19
+ # @return [String]
13
20
  # @!attribute [r] header
14
21
  # @return [String]
22
+ # @!attribute [r] header_static
23
+ # @return [String]
15
24
  # @!attribute [r] note
16
25
  # @return [String]
17
26
  # @!attribute [r] followers_count
@@ -20,8 +29,41 @@ module Mastodon
20
29
  # @return [Integer]
21
30
  # @!attribute [r] statuses_count
22
31
  # @return [Integer]
32
+ # @!attribute [r] created_at
33
+ # @return [String]
34
+ # @!attribute [r] locked?
35
+ # @return [Boolean]
36
+ # @!attribute [r] bot?
37
+ # @return [Boolean]
38
+ # @!attribute [r] moved
39
+ # @return [Mastodon::Account]
40
+ # @!attribute [r] emojis
41
+ # @return [Mastodon::Collection<Mastodon::Emoji>]
42
+ # @!attribute [r] fields
43
+ # @return [Mastodon::Collection<Mastodon::Field>]
44
+
45
+ normal_attr_reader :id,
46
+ :username,
47
+ :acct,
48
+ :display_name,
49
+ :created_at,
50
+ :url,
51
+ :avatar,
52
+ :avatar_static,
53
+ :header,
54
+ :header_static,
55
+ :note,
56
+ :followers_count,
57
+ :following_count,
58
+ :statuses_count
59
+
60
+ predicate_attr_reader :locked,
61
+ :bot
62
+
63
+ object_attr_reader :moved, Mastodon::Account
23
64
 
24
- normal_attr_reader :id, :username, :acct, :url, :avatar, :header, :note, :followers_count, :following_count, :statuses_count
65
+ collection_attr_reader :emojis, Mastodon::Emoji
66
+ collection_attr_reader :fields, Mastodon::Field
25
67
 
26
68
  def initialize(attributes = {})
27
69
  attributes.fetch('id')
@@ -4,7 +4,14 @@ module Mastodon
4
4
  # @return [String]
5
5
  # @!attribute [r] client_secret
6
6
  # @return [String]
7
+ # @!attribute [r] name
8
+ # @return [String]
9
+ # @!attribute [r] website
10
+ # @return [String]
7
11
 
8
- normal_attr_reader :client_id, :client_secret
12
+ normal_attr_reader :client_id,
13
+ :client_secret,
14
+ :name,
15
+ :website
9
16
  end
10
17
  end
@@ -0,0 +1,41 @@
1
+ module Mastodon
2
+ class Card < Mastodon::Base
3
+ # @!attribute [r] url
4
+ # @return [String]
5
+ # @!attribute [r] title
6
+ # @return [String]
7
+ # @!attribute [r] description
8
+ # @return [String]
9
+ # @!attribute [r] image
10
+ # @return [String]
11
+ # @!attribute [r] type
12
+ # @return [String]
13
+ # @!attribute [r] author_name
14
+ # @return [String]
15
+ # @!attribute [r] author_url
16
+ # @return [String]
17
+ # @!attribute [r] provider_name
18
+ # @return [String]
19
+ # @!attribute [r] provider_url
20
+ # @return [String]
21
+ # @!attribute [r] html
22
+ # @return [String]
23
+ # @!attribute [r] width
24
+ # @return [String]
25
+ # @!attribute [r] height
26
+ # @return [String]
27
+
28
+ normal_attr_reader :url,
29
+ :title,
30
+ :description,
31
+ :image,
32
+ :type,
33
+ :author_name,
34
+ :author_url,
35
+ :provider_name,
36
+ :provider_url,
37
+ :html,
38
+ :width,
39
+ :height
40
+ end
41
+ end
@@ -2,7 +2,13 @@ require 'mastodon/version'
2
2
 
3
3
  module Mastodon
4
4
  class Client
5
- attr_reader :base_url, :bearer_token
5
+ DEFAULT_TIMEOUT = {
6
+ connect: 2,
7
+ read: 5,
8
+ write: 20,
9
+ }.freeze
10
+
11
+ attr_reader :base_url, :bearer_token, :timeout
6
12
 
7
13
  # @param options [Hash]
8
14
  # @option options :base_url [String] URL of the instance you want to connect to
@@ -10,6 +16,7 @@ module Mastodon
10
16
  def initialize(options = {})
11
17
  @base_url = options[:base_url]
12
18
  @bearer_token = options[:bearer_token]
19
+ @timeout = DEFAULT_TIMEOUT.merge(options[:timeout] || {})
13
20
  end
14
21
 
15
22
  # User agent of the client
@@ -0,0 +1,25 @@
1
+ require 'mastodon/account'
2
+ require 'mastodon/status'
3
+
4
+ module Mastodon
5
+ class Conversation < Mastodon::Base
6
+ # @!attribute [r] id
7
+ # @return [String]
8
+ # @!attribute [r] unread?
9
+ # @return [Boolean]
10
+ # @!attribute [r] accounts
11
+ # @return [Mastodon::Collection<Mastodon::Account>]
12
+ # @!attribute [r] last_status
13
+ # @return [Mastodon::Status]
14
+
15
+ normal_attr_reader :id
16
+ predicate_attr_reader :unread
17
+ collection_attr_reader :accounts, Mastodon::Account
18
+ object_attr_reader :last_status, Mastodon::Status
19
+
20
+ def initialize(attributes = {})
21
+ attributes.fetch('id')
22
+ super
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ module Mastodon
2
+ class Emoji < Mastodon::Base
3
+ # @!attribute [r] shortcode
4
+ # @return [String]
5
+ # @!attribute [r] static_url
6
+ # @return [String]
7
+ # @!attribute [r] url
8
+ # @return [String]
9
+ # @!attribute [r] visible_in_picker?
10
+ # @return [Boolean]
11
+
12
+ normal_attr_reader :shortcode, :static_url, :url
13
+
14
+ predicate_attr_reader :visible_in_picker
15
+
16
+ def initialize(attributes = {})
17
+ attributes.fetch('shortcode')
18
+ super
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,12 @@
1
+ module Mastodon
2
+ module Entities
3
+ class App < Mastodon::Base
4
+ # @!attribute [r] name
5
+ # @return [String]
6
+ # @!attribute [r] website
7
+ # @return [String]
8
+
9
+ normal_attr_reader :name, :website
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module Mastodon
2
+ module Entities
3
+ class Hashtag < Mastodon::Base
4
+ # @!attribute [r] name
5
+ # @return [String]
6
+ # @!attribute [r] url
7
+ # @return [String]
8
+
9
+ normal_attr_reader :name, :url
10
+ end
11
+ end
12
+ end
@@ -5,12 +5,24 @@ module Mastodon
5
5
  # @return [Integer]
6
6
  # @!attribute [r] url
7
7
  # @return [String]
8
+ # @!attribute [r] remote_url
9
+ # @return [String]
8
10
  # @!attribute [r] preview_url
9
11
  # @return [String]
10
12
  # @!attribute [r] type
11
13
  # @return [String]
14
+ # @!attribute [r] meta
15
+ # @return [Hash]
16
+ # @!attribute [r] description
17
+ # @return [String]
12
18
 
13
- normal_attr_reader :id, :url, :preview_url, :type
19
+ normal_attr_reader :id,
20
+ :url,
21
+ :remote_url,
22
+ :preview_url,
23
+ :type,
24
+ :meta,
25
+ :description
14
26
  end
15
27
  end
16
28
  end
@@ -2,7 +2,7 @@ module Mastodon
2
2
  module Entities
3
3
  class Mention < Mastodon::Base
4
4
  # @!attribute [r] id
5
- # @return [Integer] Account ID
5
+ # @return [String] Account ID
6
6
  # @!attribute [r] acct
7
7
  # @return [String]
8
8
  # @!attribute [r] url
@@ -0,0 +1,18 @@
1
+ module Mastodon
2
+ class Field < Mastodon::Base
3
+ # @!attribute [r] name
4
+ # @return [String]
5
+ # @!attribute [r] value
6
+ # @return [String]
7
+ # @!attribute [r] verified_at
8
+ # @return [String]
9
+
10
+ normal_attr_reader :name, :value, :verified_at
11
+
12
+ # Is this field a verified link?
13
+ # @return [Boolean]
14
+ def verified?
15
+ attributes['verified_at'].present?
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,29 @@
1
+ module Mastodon
2
+ class Filter < Mastodon::Base
3
+ # @!attribute [r] id
4
+ # @return [String]
5
+ # @!attribute [r] phrase
6
+ # @return [String]
7
+ # @!attribute [r] context
8
+ # @return [Array<String>]
9
+ # @!attribute [r] expires_at
10
+ # @return [String]
11
+ # @!attribute [r] irreversible?
12
+ # @return [Boolean]
13
+ # @!attribute [r] whole_word?
14
+ # @return [Boolean]
15
+
16
+ normal_attr_reader :id,
17
+ :phrase,
18
+ :context,
19
+ :expires_at
20
+
21
+ predicate_attr_reader :irreversible,
22
+ :whole_word
23
+
24
+ def initialize(attributes = {})
25
+ attributes.fetch('id')
26
+ super
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ module Mastodon
2
+ class Hashtag < Mastodon::Base
3
+ # @!attribute [r] name
4
+ # @return [String]
5
+ # @!attribute [r] url
6
+ # @return [String]
7
+ # @!attribute [r] history
8
+ # @return [Array<Hash>]
9
+
10
+ normal_attr_reader :name,
11
+ :url,
12
+ :history
13
+
14
+ def initialize(attributes = {})
15
+ attributes.fetch('name')
16
+ super
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,33 @@
1
+ module Mastodon
2
+ class Instance < Mastodon::Base
3
+ # @!attribute [r] uri
4
+ # @return [String]
5
+ # @!attribute [r] title
6
+ # @return [String]
7
+ # @!attribute [r] description
8
+ # @return [String]
9
+ # @!attribute [r] email
10
+ # @return [String]
11
+ # @!attribute [r] version
12
+ # @return [String]
13
+ # @!attribute [r] urls
14
+ # @return [Hash]
15
+ # @!attribute [r] stats
16
+ # @return [Hash]
17
+ # @!attribute [r] languages
18
+ # @return [Array<String>]
19
+ # @!attribute [r] contact_account
20
+ # @return [Mastodon::Account]
21
+
22
+ normal_attr_reader :uri,
23
+ :title,
24
+ :description,
25
+ :email,
26
+ :version,
27
+ :urls,
28
+ :stats,
29
+ :languages
30
+
31
+ object_attr_reader :contact_account, Mastodon::Account
32
+ end
33
+ end
@@ -0,0 +1,15 @@
1
+ module Mastodon
2
+ class List < Mastodon::Base
3
+ # @!attribute [r] id
4
+ # @return [String]
5
+ # @!attribute [r] title
6
+ # @return [String]
7
+
8
+ normal_attr_reader :id, :title
9
+
10
+ def initialize(attributes = {})
11
+ attributes.fetch('id')
12
+ super
13
+ end
14
+ end
15
+ end
@@ -1,20 +1,34 @@
1
1
  module Mastodon
2
2
  class Media < Mastodon::Base
3
3
  # @!attribute [r] id
4
- # @return [Integer]
4
+ # @return [String]
5
5
  # @!attribute [r] type
6
6
  # @return [String] Image or video
7
7
  # @!attribute [r] url
8
8
  # @return [String] Full file URL
9
+ # @!attribute [r] remote_url
10
+ # @return [String]
9
11
  # @!attribute [r] preview_url
10
12
  # @return [String] URL to preview image
11
13
  # @!attribute [r] text_url
12
14
  # @return [String] URL that can be put into status body and will redirect to the status/media
15
+ # @!attribute [r] meta
16
+ # @return [Hash]
17
+ # @!attribute [r] description
18
+ # @return [String]
13
19
 
14
- normal_attr_reader :id, :type, :url, :preview_url, :text_url
20
+ normal_attr_reader :id,
21
+ :type,
22
+ :url,
23
+ :remote_url,
24
+ :preview_url,
25
+ :text_url,
26
+ :meta,
27
+ :description
15
28
 
16
29
  def initialize(attributes = {})
17
30
  attributes.fetch('id')
31
+ super
18
32
  end
19
33
  end
20
34
  end