mastodon-api 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fc0c9787cd86d495ceab2625291f4aceb8cdc6d6
4
+ data.tar.gz: 4f93ab9cd2a539f1db0b5d894be11673784a1322
5
+ SHA512:
6
+ metadata.gz: 8f10d250823c02c2ad8292dcbc524bb22907509e94b3c8586ae98a5027278aa02329aab1644fc0634ad12c850c9759ab31e3412ad193cd96fdd19030df45b6f8
7
+ data.tar.gz: e9f4fcd13cc8cd60152d174e8cad4a8716c97514c89dfb62081b53477708973ece9f7273830311ca6d5930d2af72d7b91a6d73b4a2a44fcbf9364c9f7f318c47
data/lib/mastodon.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'addressable/uri'
2
+ require 'mastodon/base'
3
+ require 'mastodon/collection'
4
+ require 'mastodon/rest/client'
@@ -0,0 +1,31 @@
1
+ module Mastodon
2
+ class Account < Mastodon::Base
3
+ # @!attribute [r] id
4
+ # @return [Integer]
5
+ # @!attribute [r] username
6
+ # @return [String]
7
+ # @!attribute [r] acct
8
+ # @return [String]
9
+ # @!attribute [r] url
10
+ # @return [String]
11
+ # @!attribute [r] avatar
12
+ # @return [String]
13
+ # @!attribute [r] header
14
+ # @return [String]
15
+ # @!attribute [r] note
16
+ # @return [String]
17
+ # @!attribute [r] followers_count
18
+ # @return [Integer]
19
+ # @!attribute [r] following_count
20
+ # @return [Integer]
21
+ # @!attribute [r] statuses_count
22
+ # @return [Integer]
23
+
24
+ normal_attr_reader :id, :username, :acct, :url, :avatar, :header, :note, :followers_count, :following_count, :statuses_count
25
+
26
+ def initialize(attributes = {})
27
+ attributes.fetch('id')
28
+ super
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,10 @@
1
+ module Mastodon
2
+ class App < Mastodon::Base
3
+ # @!attribute [r] client_id
4
+ # @return [String]
5
+ # @!attribute [r] client_secret
6
+ # @return [String]
7
+
8
+ normal_attr_reader :client_id, :client_secret
9
+ end
10
+ end
@@ -0,0 +1,44 @@
1
+ module Mastodon
2
+ class Base
3
+ attr_reader :attributes
4
+
5
+ alias to_h attributes
6
+ alias to_hash attributes
7
+
8
+ def initialize(attributes = {})
9
+ @attributes = attributes
10
+ end
11
+
12
+ class << self
13
+ def normal_attr_reader(*attributes)
14
+ attributes.each do |attribute|
15
+ define_attribute_method(attribute)
16
+ end
17
+ end
18
+
19
+ def object_attr_reader(attribute, klass)
20
+ define_method(attribute) do
21
+ klass.new(@attributes[attribute.to_s])
22
+ end
23
+ end
24
+
25
+ def predicate_attr_reader(*attributes)
26
+ attributes.each do |attribute|
27
+ define_predicate_method(attribute)
28
+ end
29
+ end
30
+
31
+ def define_predicate_method(key)
32
+ define_method("#{key}?") do
33
+ @attributes[key.to_s]
34
+ end
35
+ end
36
+
37
+ def define_attribute_method(key)
38
+ define_method(key) do
39
+ @attributes[key.to_s]
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ require 'mastodon/version'
2
+
3
+ module Mastodon
4
+ class Client
5
+ attr_reader :base_url, :bearer_token
6
+
7
+ # @param options [Hash]
8
+ # @option options :base_url [String] URL of the instance you want to connect to
9
+ # @option options :bearer_token [String] OAuth access token for your authenticated user
10
+ def initialize(options = {})
11
+ @base_url = options[:base_url]
12
+ @bearer_token = options[:bearer_token]
13
+ end
14
+
15
+ # User agent of the client
16
+ # @return [String]
17
+ def user_agent
18
+ @user_agent ||= "MastodonRubyGem/#{Mastodon::Version}"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ module Mastodon
2
+ class Collection
3
+ include ::Enumerable
4
+
5
+ def initialize(items, klass)
6
+ @collection = items.map { |attributes| klass.new(attributes) }
7
+ end
8
+
9
+ def each(start = 0)
10
+ return to_enum(:each, start) unless block_given?
11
+
12
+ Array(@collection[start..-1]).each do |element|
13
+ yield(element)
14
+ end
15
+
16
+ self
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,18 @@
1
+ module Mastodon
2
+ class Error < StandardError
3
+ ClientError = Class.new(self)
4
+ BadRequest = Class.new(ClientError)
5
+ Unauthorized = Class.new(ClientError)
6
+ Forbidden = Class.new(ClientError)
7
+ UnprocessableEntity = Class.new(ClientError)
8
+ TooManyRequests = Class.new(ClientError)
9
+
10
+ ERRORS = {
11
+ 400 => Mastodon::Error::BadRequest,
12
+ 401 => Mastodon::Error::Unauthorized,
13
+ 403 => Mastodon::Error::Forbidden,
14
+ 422 => Mastodon::Error::UnprocessableEntity,
15
+ 429 => Mastodon::Error::TooManyRequests
16
+ }.freeze
17
+ end
18
+ end
@@ -0,0 +1,17 @@
1
+ module Mastodon
2
+ class Headers
3
+ # @param client [Mastodon::Client]
4
+ def initialize(client)
5
+ @client = client
6
+ end
7
+
8
+ # @return [Hash]
9
+ def request_headers
10
+ {
11
+ user_agent: @client.user_agent,
12
+ accept: '*/*',
13
+ authorization: "Bearer #{@client.bearer_token}"
14
+ }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,11 @@
1
+ module Mastodon
2
+ class Relationship < Mastodon::Base
3
+ normal_attr_reader :id
4
+ predicate_attr_reader :following, :followed_by, :blocking
5
+
6
+ def initialize(attributes = {})
7
+ attributes.fetch('id')
8
+ super
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,44 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/account'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Accounts
7
+ include Mastodon::REST::Utils
8
+
9
+ # Retrieve account of authenticated user
10
+ # @return [Mastodon::Account]
11
+ def verify_credentials
12
+ perform_request_with_object(:get, '/api/v1/accounts/verify_credentials', {}, Mastodon::Account)
13
+ end
14
+
15
+ # Retrieve account
16
+ # @param id [Integer]
17
+ # @return [Mastodon::Account]
18
+ def account(id)
19
+ perform_request_with_object(:get, "/api/v1/accounts/#{id}", {}, Mastodon::Account)
20
+ end
21
+
22
+ # Get a list of followers
23
+ # @param id [Integer]
24
+ # @return [Mastodon::Collection<Mastodon::Account>]
25
+ def followers(id)
26
+ perform_request_with_collection(:get, "/api/v1/accounts/#{id}/followers", {}, Mastodon::Account)
27
+ end
28
+
29
+ # Get a list of followed accounts
30
+ # @param id [Integer]
31
+ # @return [Mastodon::Collection<Mastodon::Account>]
32
+ def following(id)
33
+ perform_request_with_collection(:get, "/api/v1/accounts/#{id}/following", {}, Mastodon::Account)
34
+ end
35
+
36
+ # Follow a remote user
37
+ # @param uri [String] The URI of the remote user, in the format of username@domain
38
+ # @return [Mastodon::Account]
39
+ def follow_by_uri(uri)
40
+ perform_request_with_object(:post, "/api/v1/follows", { uri: uri }, Mastodon::Account)
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ require 'mastodon/rest/statuses'
2
+ require 'mastodon/rest/accounts'
3
+ require 'mastodon/rest/timelines'
4
+ require 'mastodon/rest/relationships'
5
+ require 'mastodon/rest/media'
6
+ require 'mastodon/rest/suggestions'
7
+ require 'mastodon/rest/apps'
8
+
9
+ module Mastodon
10
+ module REST
11
+ module API
12
+ include Mastodon::REST::Statuses
13
+ include Mastodon::REST::Accounts
14
+ include Mastodon::REST::Timelines
15
+ include Mastodon::REST::Relationships
16
+ include Mastodon::REST::Media
17
+ include Mastodon::REST::Suggestions
18
+ include Mastodon::REST::Apps
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,18 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/app'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Apps
7
+ include Mastodon::REST::Utils
8
+
9
+ # Register a new OAuth client app on the target instance
10
+ # @param name [String]
11
+ # @param redirect_uri [String]
12
+ # @return [Mastodon::App]
13
+ def create_app(name, redirect_uri)
14
+ perform_request_with_object(:post, '/api/v1/apps', { name: name, redirect_uris: redirect_uri }, Mastodon::App)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ require 'mastodon/client'
2
+ require 'mastodon/rest/api'
3
+
4
+ module Mastodon
5
+ module REST
6
+ class Client < Mastodon::Client
7
+ include Mastodon::REST::API
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,13 @@
1
+ require 'mastodon/rest/utils'
2
+
3
+ module Mastodon
4
+ module REST
5
+ module Media
6
+ include Mastodon::REST::Utils
7
+
8
+ def upload_media(file)
9
+ raise NotImplementedError
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,45 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/relationship'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Relationships
7
+ include Mastodon::REST::Utils
8
+
9
+ # Get the relationships of authenticated user towards given other users
10
+ # @param ids [Integer]
11
+ # @return [Mastodon::Collection<Mastodon::Relationship>]
12
+ def relationships(*ids)
13
+ perform_request_with_collection(:get, '/api/v1/accounts/relationships', { id: ids }, Mastodon::Relationship)
14
+ end
15
+
16
+ # Follow a user
17
+ # @param id [Integer]
18
+ # @return [Mastodon::Relationship]
19
+ def follow(id)
20
+ perform_request_with_object(:post, "/api/v1/accounts/#{id}/follow", {}, Mastodon::Relationship)
21
+ end
22
+
23
+ # Unfollow a user
24
+ # @param id [Integer]
25
+ # @return [Mastodon::Relationship]
26
+ def unfollow(id)
27
+ perform_request_with_object(:post, "/api/v1/accounts/#{id}/unfollow", {}, Mastodon::Relationship)
28
+ end
29
+
30
+ # Block a user
31
+ # @param id [Integer]
32
+ # @return [Mastodon::Relationship]
33
+ def block(id)
34
+ perform_request_with_object(:post, "/api/v1/accounts/#{id}/block", {}, Mastodon::Relationship)
35
+ end
36
+
37
+ # Unblock a user
38
+ # @param id [Integer]
39
+ # @return [Mastodon::Relationship]
40
+ def unblock(id)
41
+ perform_request_with_object(:post, "/api/v1/accounts/#{id}/unblock", {}, Mastodon::Relationship)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,37 @@
1
+ require 'addressable/uri'
2
+ require 'http'
3
+ require 'json'
4
+ require 'mastodon/error'
5
+ require 'mastodon/headers'
6
+
7
+ module Mastodon
8
+ module REST
9
+ class Request
10
+ def initialize(client, request_method, path, options = {})
11
+ @client = client
12
+ @request_method = request_method
13
+ @uri = Addressable::URI.parse(@client.base_url + path)
14
+ @headers = Mastodon::Headers.new(@client).request_headers
15
+ @path = @uri.path
16
+ @options = options
17
+ end
18
+
19
+ def perform
20
+ options_key = @request_method == :get ? :params : :form
21
+ response = http_client.headers(@headers).public_send(@request_method, @uri.to_s, options_key => @options)
22
+ fail_or_return(response.code, response.body.empty? ? '' : response.parse)
23
+ end
24
+
25
+ private
26
+
27
+ def fail_or_return(code, body)
28
+ raise Mastodon::Error::ERRORS[code] if Mastodon::Error::ERRORS.include?(code)
29
+ body
30
+ end
31
+
32
+ def http_client
33
+ HTTP
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,72 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/status'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Statuses
7
+ include Mastodon::REST::Utils
8
+
9
+ # Create new status
10
+ # @param text [String]
11
+ # @param in_reply_to_id [Integer]
12
+ # @param media_ids [Array<Integer>]
13
+ # @return [Mastodon::Status]
14
+ def create_status(text, in_reply_to_id = nil, media_ids = [])
15
+ perform_request_with_object(:post, "/api/v1/statuses", { status: text, in_reply_to_id: in_reply_to_id, media_ids: media_ids }, Mastodon::Status)
16
+ end
17
+
18
+ # Retrieve status
19
+ # @param id [Integer]
20
+ # @return [Mastodon::Status]
21
+ def status(id)
22
+ perform_request_with_object(:get, "/api/v1/statuses/#{id}", {}, Mastodon::Status)
23
+ end
24
+
25
+ # Destroy status
26
+ # @param id [Integer]
27
+ # @return [Boolean]
28
+ def destroy_status(id)
29
+ !perform_request(:delete, "/api/v1/statuses/#{id}").nil?
30
+ end
31
+
32
+ # Reblog a status
33
+ # @param id [Integer]
34
+ # @return [Mastodon::Status]
35
+ def reblog(id)
36
+ perform_request_with_object(:post, "/api/v1/statuses/#{id}/reblog", {}, Mastodon::Status)
37
+ end
38
+
39
+ # Undo a reblog of a status
40
+ # @param id [Integer]
41
+ # @return [Mastodon::Status]
42
+ def unreblog(id)
43
+ perform_request_with_object(:post, "/api/v1/statuses/#{id}/unreblog", {}, Mastodon::Status)
44
+ end
45
+
46
+ # Favourite a status
47
+ # @param id [Integer]
48
+ # @return [Mastodon::Status]
49
+ def favourite(id)
50
+ perform_request_with_object(:post, "/api/v1/statuses/#{id}/favourite", {}, Mastodon::Status)
51
+ end
52
+
53
+ # Undo a favourite of a status
54
+ # @param id [Integer]
55
+ # @return [Mastodon::Status]
56
+ def unfavourite(id)
57
+ perform_request_with_object(:post, "/api/v1/statuses/#{id}/unfavourite", {}, Mastodon::Status)
58
+ end
59
+
60
+ # Get a list of statuses by a user
61
+ # @param account_id [Integer]
62
+ # @param options [Hash]
63
+ # @option options :max_id [Integer]
64
+ # @option options :since_id [Integer]
65
+ # @option options :limit [Integer]
66
+ # @return [Mastodon::Collection<Mastodon::Status>]
67
+ def statuses(account_id, options = {})
68
+ perform_request_with_collection(:get, "/api/v1/accounts/#{account_id}/statuses", options, Mastodon::Status)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,16 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/account'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Suggestions
7
+ include Mastodon::REST::Utils
8
+
9
+ # Get "who to follow" suggestions for authenticated user
10
+ # @return [Mastodon::Collection<Mastodon::Account>]
11
+ def suggestions
12
+ perform_request_with_collection(:get, '/api/v1/accounts/suggestions', {}, Mastodon::Account)
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,40 @@
1
+ require 'mastodon/rest/utils'
2
+ require 'mastodon/status'
3
+
4
+ module Mastodon
5
+ module REST
6
+ module Timelines
7
+ include Mastodon::REST::Utils
8
+
9
+ # Retrieve statuses from the home timeline
10
+ # @param options [Hash]
11
+ # @option options :max_id [Integer]
12
+ # @option options :since_id [Integer]
13
+ # @option options :limit [Integer]
14
+ # @return [Mastodon::Collection<Mastodon::Status>]
15
+ def home_timeline(options = {})
16
+ perform_request_with_collection(:get, '/api/v1/statuses/home', options, Mastodon::Status)
17
+ end
18
+
19
+ # Retrieve statuses from the mentions timeline
20
+ # @param options [Hash]
21
+ # @option options :max_id [Integer]
22
+ # @option options :since_id [Integer]
23
+ # @option options :limit [Integer]
24
+ # @return [Mastodon::Collection<Mastodon::Status>]
25
+ def mentions_timeline(options = {})
26
+ perform_request_with_collection(:get, '/api/v1/statuses/mentions', options, Mastodon::Status)
27
+ end
28
+
29
+ # Retrieve statuses from the public timeline
30
+ # @param options [Hash]
31
+ # @option options :max_id [Integer]
32
+ # @option options :since_id [Integer]
33
+ # @option options :limit [Integer]
34
+ # @return [Mastodon::Collection<Mastodon::Status>]
35
+ def public_timeline(options = {})
36
+ perform_request_with_collection(:get, '/api/v1/statuses/public', options, Mastodon::Status)
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,32 @@
1
+ require 'mastodon/rest/request'
2
+
3
+ module Mastodon
4
+ module REST
5
+ module Utils
6
+ # @param request_method [Symbol]
7
+ # @param path [String]
8
+ # @param options [Hash]
9
+ def perform_request(request_method, path, options = {})
10
+ Mastodon::REST::Request.new(self, request_method, path, options).perform
11
+ end
12
+
13
+ # @param request_method [Symbol]
14
+ # @param path [String]
15
+ # @param options [Hash]
16
+ # @param klass [Class]
17
+ def perform_request_with_object(request_method, path, options, klass)
18
+ response = perform_request(request_method, path, options)
19
+ klass.new(response)
20
+ end
21
+
22
+ # @param request_method [Symbol]
23
+ # @param path [String]
24
+ # @param options [Hash]
25
+ # @param klass [Class]
26
+ def perform_request_with_collection(request_method, path, options, klass)
27
+ response = perform_request(request_method, path, options)
28
+ Mastodon::Collection.new(response, klass)
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,42 @@
1
+ require 'mastodon/account'
2
+
3
+ module Mastodon
4
+ class Status < Mastodon::Base
5
+ # @!attribute [r] id
6
+ # @return [Integer]
7
+ # @!attribute [r] in_reply_to_id
8
+ # @return [Integer]
9
+ # @!attribute [r] content
10
+ # @return [String]
11
+ # @!attribute [r] url
12
+ # @return [String]
13
+ # @!attribute [r] uri
14
+ # @return [String]
15
+ # @!attribute [r] created_at
16
+ # @return [String]
17
+ # @!attribute [r] reblogs_count
18
+ # @return [Integer]
19
+ # @!attribute [r] favourites_count
20
+ # @return [Integer]
21
+ # @!attribute [r] account
22
+ # @return [Mastodon::Account]
23
+ # @!attribute [r] reblog
24
+ # @return [Mastodon::Status]
25
+ # @!attribute [r] favourited?
26
+ # @return [Boolean]
27
+ # @!attribute [r] reblogged?
28
+ # @return [Boolean]
29
+
30
+ normal_attr_reader :id, :content, :in_reply_to_id, :url, :uri, :created_at, :reblogs_count, :favourites_count
31
+
32
+ predicate_attr_reader :favourited, :reblogged
33
+
34
+ object_attr_reader :account, Mastodon::Account
35
+ object_attr_reader :reblog, Mastodon::Status
36
+
37
+ def initialize(attributes = {})
38
+ attributes.fetch('id')
39
+ super
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,29 @@
1
+ module Mastodon
2
+ module Version
3
+ module_function
4
+
5
+ def major
6
+ 0
7
+ end
8
+
9
+ def minor
10
+ 0
11
+ end
12
+
13
+ def patch
14
+ 1
15
+ end
16
+
17
+ def pre
18
+ nil
19
+ end
20
+
21
+ def to_a
22
+ [major, minor, patch, pre].compact
23
+ end
24
+
25
+ def to_s
26
+ to_a.join('.')
27
+ end
28
+ end
29
+ end
data/mastodon.gemspec ADDED
@@ -0,0 +1,21 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'mastodon/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'mastodon-api'
7
+ spec.description = 'A ruby interface to the Mastodon API'
8
+ spec.homepage = 'https://github.com/Gargron/mastodon-api'
9
+ spec.email = 'eugen@zeonfederated.com'
10
+ spec.authors = ['Eugen Rochko']
11
+ spec.summary = spec.description
12
+ spec.licenses = %w(MIT)
13
+ spec.files = %w(mastodon.gemspec) + Dir['lib/**/*.rb']
14
+ spec.require_paths = %w(lib)
15
+ spec.version = Mastodon::Version
16
+
17
+ spec.add_dependency 'http', '~> 2.0'
18
+ spec.add_dependency 'addressable', '~> 2.4'
19
+
20
+ spec.add_development_dependency 'bundler', '~> 1.0'
21
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: mastodon-api
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Eugen Rochko
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-10-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: http
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: addressable
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.0'
55
+ description: A ruby interface to the Mastodon API
56
+ email: eugen@zeonfederated.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/mastodon.rb
62
+ - lib/mastodon/account.rb
63
+ - lib/mastodon/app.rb
64
+ - lib/mastodon/base.rb
65
+ - lib/mastodon/client.rb
66
+ - lib/mastodon/collection.rb
67
+ - lib/mastodon/error.rb
68
+ - lib/mastodon/headers.rb
69
+ - lib/mastodon/relationship.rb
70
+ - lib/mastodon/rest/accounts.rb
71
+ - lib/mastodon/rest/api.rb
72
+ - lib/mastodon/rest/apps.rb
73
+ - lib/mastodon/rest/client.rb
74
+ - lib/mastodon/rest/media.rb
75
+ - lib/mastodon/rest/relationships.rb
76
+ - lib/mastodon/rest/request.rb
77
+ - lib/mastodon/rest/statuses.rb
78
+ - lib/mastodon/rest/suggestions.rb
79
+ - lib/mastodon/rest/timelines.rb
80
+ - lib/mastodon/rest/utils.rb
81
+ - lib/mastodon/status.rb
82
+ - lib/mastodon/version.rb
83
+ - mastodon.gemspec
84
+ homepage: https://github.com/Gargron/mastodon-api
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.4.5.1
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: A ruby interface to the Mastodon API
108
+ test_files: []