twitter_labs_api 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 471a4a8a8b2f248f11d0337240451d5b5bc2fdff5601370335f0ab080038cb0a
4
- data.tar.gz: 25f2097f036e2ba1b9431f5e4a01db6a062ea7507f05b648c85b9d3514c5d083
3
+ metadata.gz: f31f636cbf46ed53a3d35e61c3376b9f47184220db4b23277f4f7c504f4be251
4
+ data.tar.gz: be3ae4940e263fe6bf33661686072c62c807236f9c2814488661efc8da8799a8
5
5
  SHA512:
6
- metadata.gz: df432778d2baef5046f1c0d36ddd1b96f17e58414063ce3e76f15fdb9d7f78abc82327c598bc2a0e67fc3e205a430c5e5f851e1afb16691176a5722e506fe226
7
- data.tar.gz: bcad0b98629f789f004974fdc505929b7a7f42af362490a8d9bd5e3ade4389ae770e25cf1550cd46af308f3336b2c4f3018a71580e41e9f92e48d42d1aea5fca
6
+ metadata.gz: 6062719f695c9979a327d94396795df7365559e92598fe08e727d2e87dc2e4a987a4f6bf689954cd2efc2b6c20f0ad5ae3003f651e0e45fc0caea12f46a57688
7
+ data.tar.gz: 7c1616a9f97582a2dda4061f2a0c540b7967d4d525c0bd344141643723450d91a4208357d919b8acf4d0d89a17d2046e0f6fba75a5c3eb6e9a10d9f6caa4df31
@@ -0,0 +1,32 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+
21
+ steps:
22
+ - uses: actions/checkout@v2
23
+ - name: Set up Ruby
24
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
25
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
26
+ uses: ruby/setup-ruby@v1
27
+ with:
28
+ ruby-version: 2.7
29
+ - name: Install dependencies
30
+ run: bundle install
31
+ - name: Run tests
32
+ run: bundle exec rspec
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
@@ -1,3 +1,15 @@
1
+ # 0.5.0 - 27 July 2020
2
+
3
+ - Refactor structure to prepare for adding additional API endpoints
4
+ - Add `get_users_by_username`
5
+ - Add some test coverage
6
+
7
+
8
+ # 0.4.0 - 24 July 2020
9
+
10
+ - Better exception-handling: when API returns an error, a `TwitterLabsAPI::APIError` is thrown. It has the `Net::HTTP` response as an attribute so that the error can be handled properly. See the README for an example.
11
+
12
+
1
13
  # 0.3.0 - 28 April 2020
2
14
 
3
15
  - Fix: namespace of error class
data/Gemfile CHANGED
@@ -1,7 +1,13 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gemspec
3
+ group :development, :test do
4
+ gem 'amazing_print'
5
+ gem 'httplog'
6
+ gem 'irbtools'
7
+ gem 'pry'
8
+ gem 'rake'
9
+ gem 'rspec'
10
+ gem 'webmock'
11
+ end
4
12
 
5
- gem 'activesupport'
6
- gem 'httplog'
7
- gem 'pry'
13
+ gemspec
@@ -1,7 +1,9 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- twitter_labs_api (0.4.0)
4
+ twitter_labs_api (0.5.0)
5
+ activesupport (~> 6.0)
6
+ httplog (~> 1.4)
5
7
 
6
8
  GEM
7
9
  remote: https://rubygems.org/
@@ -12,36 +14,121 @@ GEM
12
14
  minitest (~> 5.1)
13
15
  tzinfo (~> 1.1)
14
16
  zeitwerk (~> 2.2, >= 2.2.2)
17
+ addressable (2.7.0)
18
+ public_suffix (>= 2.0.2, < 5.0)
19
+ alias (0.2.3)
20
+ amazing_print (1.2.1)
21
+ binding.repl (3.0.0)
22
+ boson (1.3.0)
23
+ boson-more (0.3.1)
24
+ boson (>= 1.3.0)
25
+ cd (1.0.1)
26
+ clipboard (1.0.6)
15
27
  coderay (1.1.3)
16
28
  concurrent-ruby (1.1.6)
17
- httplog (1.3.2)
29
+ crack (0.4.3)
30
+ safe_yaml (~> 1.0.0)
31
+ debugging (1.1.1)
32
+ binding.repl (~> 3.0)
33
+ paint (>= 0.9, < 3.0)
34
+ diff-lcs (1.4.4)
35
+ every_day_irb (2.1.0)
36
+ cd (~> 1.0)
37
+ fancy_irb (1.2.1)
38
+ paint (>= 0.9, < 3.0)
39
+ unicode-display_width (~> 1.1)
40
+ ffi (1.13.1)
41
+ g (1.7.2)
42
+ hashdiff (1.0.1)
43
+ hirb (0.7.3)
44
+ httplog (1.4.3)
18
45
  rack (>= 1.0)
19
46
  rainbow (>= 2.0.0)
20
47
  i18n (1.8.5)
21
48
  concurrent-ruby (~> 1.0)
49
+ interactive_editor (0.0.11)
50
+ spoon (>= 0.0.1)
51
+ irbtools (1.7.1)
52
+ alias (~> 0.2.3)
53
+ binding.repl (~> 3.0)
54
+ boson (~> 1.3.0)
55
+ boson-more (~> 0.3.0)
56
+ clipboard (~> 1.0.5)
57
+ coderay (~> 1.1.0)
58
+ debugging (~> 1.0)
59
+ every_day_irb (>= 1.7.1)
60
+ fancy_irb (>= 0.7.3)
61
+ g (>= 1.7.2)
62
+ hirb (~> 0.7, >= 0.7.3)
63
+ interactive_editor (>= 0.0.10)
64
+ method_locator (>= 0.0.4)
65
+ method_source (>= 0.8.2)
66
+ methodfinder (~> 2.0)
67
+ ori (~> 0.1.0)
68
+ os (~> 0.9)
69
+ paint (>= 0.8.7)
70
+ ruby_engine (~> 1.0)
71
+ ruby_info (~> 1.0)
72
+ ruby_version (~> 1.0)
73
+ wirb (>= 1.0.3)
74
+ method_locator (0.0.4)
22
75
  method_source (1.0.0)
76
+ methodfinder (2.2.1)
23
77
  minitest (5.14.1)
78
+ ori (0.1.0)
79
+ os (0.9.6)
80
+ paint (2.2.0)
24
81
  pry (0.13.1)
25
82
  coderay (~> 1.1)
26
83
  method_source (~> 1.0)
84
+ public_suffix (4.0.5)
27
85
  rack (2.2.3)
28
86
  rainbow (3.0.0)
29
87
  rake (13.0.1)
88
+ rspec (3.9.0)
89
+ rspec-core (~> 3.9.0)
90
+ rspec-expectations (~> 3.9.0)
91
+ rspec-mocks (~> 3.9.0)
92
+ rspec-core (3.9.2)
93
+ rspec-support (~> 3.9.3)
94
+ rspec-expectations (3.9.2)
95
+ diff-lcs (>= 1.2.0, < 2.0)
96
+ rspec-support (~> 3.9.0)
97
+ rspec-mocks (3.9.1)
98
+ diff-lcs (>= 1.2.0, < 2.0)
99
+ rspec-support (~> 3.9.0)
100
+ rspec-support (3.9.3)
101
+ ruby_engine (1.0.1)
102
+ ruby_info (1.0.1)
103
+ ruby_version (1.0.2)
104
+ safe_yaml (1.0.5)
105
+ spoon (0.0.6)
106
+ ffi
30
107
  thread_safe (0.3.6)
31
108
  tzinfo (1.2.7)
32
109
  thread_safe (~> 0.1)
110
+ unicode-display_width (1.7.0)
111
+ webmock (3.8.3)
112
+ addressable (>= 2.3.6)
113
+ crack (>= 0.3.2)
114
+ hashdiff (>= 0.4.0, < 2.0.0)
115
+ wirb (2.2.1)
116
+ paint (>= 0.9, < 3.0)
33
117
  zeitwerk (2.4.0)
34
118
 
35
119
  PLATFORMS
36
120
  ruby
37
121
 
38
122
  DEPENDENCIES
39
- activesupport
123
+ amazing_print
40
124
  bundler (~> 2.0)
41
125
  httplog
126
+ irbtools
42
127
  pry
43
- rake (~> 13.0)
128
+ rake
129
+ rspec
44
130
  twitter_labs_api!
131
+ webmock
45
132
 
46
133
  BUNDLED WITH
47
134
  2.1.4
data/README.md CHANGED
@@ -19,7 +19,7 @@ gem install twitter_labs_api
19
19
 
20
20
  #### Getting a Tweet by ID
21
21
  ```ruby
22
- requre `twitter_labs_api`
22
+ require `twitter_labs_api`
23
23
 
24
24
  api = TwitterLabsAPI.new(bearer_token: 'YOUR-BEARER-TOKEN')
25
25
 
@@ -42,7 +42,7 @@ api.get_tweet(id: '1235508591232090112', tweet_fields: my_fields)
42
42
 
43
43
  #### API Errors
44
44
 
45
- Sometimes the API will respond with an error, for example `429 Too Many Requests`. The gem will throw an error with the `Net::HTTP` response as an attribute for proper exception-handling by the consuming app:
45
+ Sometimes the API will respond with an error, for example, `429 Too Many Requests`. The gem will throw an error with the `Net::HTTP` response as an attribute for proper exception-handling by the consuming app:
46
46
 
47
47
  ```ruby
48
48
  def my_twitter_request
@@ -58,14 +58,20 @@ end
58
58
  ### Status
59
59
  Currently, the following endpoints are implemented:
60
60
 
61
- - `TwitterLabsAPI#get_tweet` - Retrieve a single Tweet object with an `id`
62
- - `TwitterLabsAPI#get_tweets` - Retrieve multiple Tweets with a collection of `ids`
63
- - `TwitterLabsAPI#get_user` - Retrieve a single user object with an `id`
64
- - `TwitterLabsAPI#get_users` - Retrieve multiple user objects with a collection of `ids`
61
+ #### Tweets
62
+
63
+ - `TwitterLabsAPI#get_tweet` ([docs](https://developer.twitter.com/en/docs/labs/tweets-and-users/api-reference/get-tweets-id)) - Retrieve a single Tweet object with an `id`
64
+ - `TwitterLabsAPI#get_tweets` ([docs](https://developer.twitter.com/en/docs/labs/tweets-and-users/api-reference/get-tweets)) - Retrieve multiple Tweets with a collection of `ids`
65
+
66
+ #### Users
67
+
68
+ - `TwitterLabsAPI#get_user` ([docs](https://developer.twitter.com/en/docs/labs/tweets-and-users/api-reference/get-users-id)) - Retrieve a single user object with an `id`
69
+ - `TwitterLabsAPI#get_users` ([docs](https://developer.twitter.com/en/docs/labs/tweets-and-users/api-reference/get-users)) - Retrieve multiple user objects with a collection of `ids`
70
+ - `TwitterLabsAPI#get_users_by_username` ([docs](https://developer.twitter.com/en/docs/labs/tweets-and-users/api-reference/get-users)) - Retrieve multiple user objects with a collection of `usernames`
65
71
 
66
72
  ## Roadmap
67
73
 
68
- Since this project is initially driven by my own usage of the API, I will focus on implementing and refinining the Tweets, Users, and Metrics endpoints. If this repo gets enough interest, I might implement the other endpoints and create a proper `.gemspec`. And of course, contributions are welcome :)
74
+ Since this project is initially driven by my own usage of the API, I will focus on implementing and refining the Tweets, Users, and Metrics endpoints. If this repo gets enough interest, I might implement the other endpoints and create a proper `.gemspec`. And of course, contributions are welcome :)
69
75
 
70
76
  ## Dependencies
71
77
 
@@ -0,0 +1 @@
1
+ bundle exec rspec
@@ -2,119 +2,13 @@ require 'json'
2
2
  require 'net/http'
3
3
  require 'uri'
4
4
  require 'active_support/core_ext/hash/indifferent_access'
5
-
6
- DEFAULT_TWEET_FIELDS = %w[id author_id created_at lang public_metrics].freeze
7
- DEFAULT_USER_FIELDS = %w[name username].freeze
5
+ require_relative 'twitter_labs_api/client'
8
6
 
9
7
  # A basic implementation of a Twitter Labs API client.
10
- class TwitterLabsAPI
11
- attr_accessor :bearer_token, :debug, :api_response, :parsed_response
12
-
13
- class APIError < StandardError
14
- DEFAULT_MESSAGE = 'Twitter Labs API error, check the response attribute'.freeze
15
-
16
- attr_reader :response
17
-
18
- def initialize(msg = DEFAULT_MESSAGE, response = nil)
19
- @response = response
20
-
21
- super(msg)
8
+ module TwitterLabsAPI
9
+ class << self
10
+ def new(bearer_token:, debug: false)
11
+ Client.new(bearer_token: bearer_token, debug: debug)
22
12
  end
23
13
  end
24
-
25
- def initialize(bearer_token:, debug: false)
26
- @bearer_token = bearer_token
27
- @debug = debug
28
- require 'httplog' if debug
29
- end
30
-
31
- # @param [String] :id the ID of the requested Tweet
32
- # @param [Array<String>] :tweet_fields (["id", "author_id", "created_at", "lang", "public_metrics"]) the list of fields to retrieve for the given tweet
33
- def get_tweet(id:, tweet_fields: DEFAULT_TWEET_FIELDS)
34
- url = "https://api.twitter.com/labs/2/tweets/#{id}"
35
- params = {
36
- 'tweet.fields' => tweet_fields.join(',')
37
- }.compact
38
-
39
- make_request(url: url, params: params)
40
- end
41
-
42
- # @param [Array<String>] :ids the collection of requested Tweet IDs
43
- # @param [Array<String>] :tweet_fields (["id", "author_id", "created_at", "lang", "public_metrics"]) the list of fields to retrieve for the given tweet
44
- def get_tweets(ids:, tweet_fields: DEFAULT_TWEET_FIELDS)
45
- url = 'https://api.twitter.com/labs/2/tweets'
46
- params = {
47
- 'ids' => ids.join(','),
48
- 'tweet.fields' => tweet_fields.join(',')
49
- }.compact
50
-
51
- make_request(url: url, params: params, is_collection: true)
52
- end
53
-
54
- # @param [String] :id the ID of the requested User
55
- # @param [Array<String>] :user_fields (["name", "username"]) the list of fields to retrieve for the given User
56
- def get_user(id:, user_fields: DEFAULT_USER_FIELDS)
57
- url = "https://api.twitter.com/labs/2/users/#{id}"
58
- params = {
59
- 'user.fields' => user_fields.join(',')
60
- }.compact
61
-
62
- make_request(url: url, params: params)
63
- end
64
-
65
- # @param [Array<String>] :ids the collection of requested User IDs
66
- # @param [Array<String>] :user_fields (["name", "username"]) the list of fields to retrieve for the given User
67
- def get_users(ids:, user_fields: DEFAULT_USER_FIELDS)
68
- url = 'https://api.twitter.com/labs/2/users'
69
- params = {
70
- 'ids' => ids.join(','),
71
- 'user.fields' => user_fields.join(',')
72
- }.compact
73
-
74
- make_request(url: url, params: params, is_collection: true)
75
- end
76
-
77
- private
78
-
79
- def make_request(url:, params: {}, is_collection: false)
80
- uri = URI.parse(url)
81
- uri.query = URI.encode_www_form(params)
82
- request = Net::HTTP::Get.new(uri)
83
- request['Authorization'] = "Bearer #{bearer_token}"
84
- req_options = { use_ssl: uri.scheme == 'https' }
85
-
86
- self.api_response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
87
- http.request(request)
88
- end
89
-
90
- raise_http_error unless api_response.is_a?(Net::HTTPSuccess)
91
-
92
- self.parsed_response = JSON.parse(api_response.body)
93
-
94
- handle_api_error if error_response?
95
-
96
- is_collection ? handle_collection : handle_single
97
- end
98
-
99
- def error_response?
100
- parsed_response.key?('errors')
101
- end
102
-
103
- def handle_single
104
- parsed_response['data'].with_indifferent_access
105
- end
106
-
107
- def handle_collection
108
- parsed_response['data'].map(&:with_indifferent_access)
109
- end
110
-
111
- def raise_http_error
112
- raise(APIError.new("#{api_response.code} #{api_response.msg}", api_response))
113
- end
114
-
115
- def handle_api_error
116
- error = parsed_response['errors'].first
117
-
118
- raise APIError.new("#{error['title']}: #{error['detail']} #{error['type']}", api_response)
119
- end
120
14
  end
@@ -0,0 +1,13 @@
1
+ module TwitterLabsAPI
2
+ class APIError < StandardError
3
+ DEFAULT_MESSAGE = 'Twitter Labs API error, check the response attribute'.freeze
4
+
5
+ attr_reader :response
6
+
7
+ def initialize(msg = DEFAULT_MESSAGE, response = nil)
8
+ @response = response
9
+
10
+ super(msg)
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,62 @@
1
+ require_relative 'api_error'
2
+ require_relative 'resources/tweet'
3
+ require_relative 'resources/user'
4
+
5
+ module TwitterLabsAPI
6
+ class Client
7
+ include Resources::Tweet
8
+ include Resources::User
9
+
10
+ attr_accessor :bearer_token, :debug, :api_response, :parsed_response
11
+
12
+ def initialize(bearer_token:, debug: false)
13
+ @bearer_token = bearer_token
14
+ @debug = debug
15
+ require 'httplog' if debug
16
+ end
17
+
18
+ private
19
+
20
+ def make_request(url:, params: {}, is_collection: false)
21
+ uri = URI.parse(url)
22
+ uri.query = URI.encode_www_form(params)
23
+ request = Net::HTTP::Get.new(uri)
24
+ request['Authorization'] = "Bearer #{bearer_token}"
25
+ req_options = { use_ssl: uri.scheme == 'https' }
26
+
27
+ self.api_response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
28
+ http.request(request)
29
+ end
30
+
31
+ raise_http_error unless api_response.is_a?(Net::HTTPSuccess)
32
+
33
+ self.parsed_response = JSON.parse(api_response.body)
34
+
35
+ handle_api_error if error_response?
36
+
37
+ is_collection ? handle_collection : handle_single
38
+ end
39
+
40
+ def error_response?
41
+ parsed_response.key?('errors')
42
+ end
43
+
44
+ def handle_single
45
+ parsed_response['data'].with_indifferent_access
46
+ end
47
+
48
+ def handle_collection
49
+ parsed_response['data'].map(&:with_indifferent_access)
50
+ end
51
+
52
+ def raise_http_error
53
+ raise(APIError.new("#{api_response.code} #{api_response.msg}", api_response))
54
+ end
55
+
56
+ def handle_api_error
57
+ error = parsed_response['errors'].first
58
+
59
+ raise APIError.new("#{error['title']}: #{error['detail']} #{error['type']}", api_response)
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,30 @@
1
+ module TwitterLabsAPI
2
+ module Resources
3
+ module Tweet
4
+ DEFAULT_TWEET_FIELDS = %w[id author_id created_at lang public_metrics].freeze
5
+
6
+ # @param [String] :id the ID of the requested Tweet
7
+ # @param [Array<String>] :tweet_fields (["id", "author_id", "created_at", "lang", "public_metrics"]) the list of fields to retrieve for the given tweet
8
+ def get_tweet(id:, tweet_fields: DEFAULT_TWEET_FIELDS)
9
+ url = "https://api.twitter.com/labs/2/tweets/#{id}"
10
+ params = {
11
+ 'tweet.fields' => tweet_fields.join(',')
12
+ }.compact
13
+
14
+ make_request(url: url, params: params)
15
+ end
16
+
17
+ # @param [Array<String>] :ids the collection of requested Tweet IDs
18
+ # @param [Array<String>] :tweet_fields (["id", "author_id", "created_at", "lang", "public_metrics"]) the list of fields to retrieve for the given tweet
19
+ def get_tweets(ids:, tweet_fields: DEFAULT_TWEET_FIELDS)
20
+ url = 'https://api.twitter.com/labs/2/tweets'
21
+ params = {
22
+ 'ids' => ids.join(','),
23
+ 'tweet.fields' => tweet_fields.join(',')
24
+ }.compact
25
+
26
+ make_request(url: url, params: params, is_collection: true)
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,42 @@
1
+ module TwitterLabsAPI
2
+ module Resources
3
+ module User
4
+ DEFAULT_USER_FIELDS = %w[id name username].freeze
5
+
6
+ # @param [String] :id the ID of the requested User
7
+ # @param [Array<String>] :user_fields (["name", "username"]) the list of fields to retrieve for the given User
8
+ def get_user(id:, user_fields: DEFAULT_USER_FIELDS)
9
+ url = "https://api.twitter.com/labs/2/users/#{id}"
10
+ params = {
11
+ 'user.fields' => user_fields.join(',')
12
+ }.compact
13
+
14
+ make_request(url: url, params: params)
15
+ end
16
+
17
+ # @param [Array<String>] :ids the collection of requested User IDs
18
+ # @param [Array<String>] :user_fields (["name", "username"]) the list of fields to retrieve for the given User
19
+ def get_users(ids:, user_fields: DEFAULT_USER_FIELDS)
20
+ url = 'https://api.twitter.com/labs/2/users'
21
+ params = {
22
+ 'ids' => ids.join(','),
23
+ 'user.fields' => user_fields.join(',')
24
+ }.compact
25
+
26
+ make_request(url: url, params: params, is_collection: true)
27
+ end
28
+
29
+ # @param [Array<String>] :usernames the collection of requested Usernames
30
+ # @param [Array<String>] :user_fields (["name", "username"]) the list of fields to retrieve for the given User
31
+ def get_users_by_usernames(usernames:, user_fields: DEFAULT_USER_FIELDS)
32
+ url = 'https://api.twitter.com/labs/2/users/by'
33
+ params = {
34
+ 'usernames' => usernames.join(','),
35
+ 'user.fields' => user_fields.join(',')
36
+ }.compact
37
+
38
+ make_request(url: url, params: params, is_collection: true)
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,3 @@
1
- class TwitterLabsAPI
2
- VERSION = '0.4.0'.freeze
1
+ module TwitterLabsAPI
2
+ VERSION = '0.5.0'.freeze
3
3
  end
@@ -25,6 +25,9 @@ Gem::Specification.new do |spec|
25
25
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
26
  spec.require_paths = ['lib']
27
27
 
28
+ spec.add_dependency 'activesupport', '~> 6.0'
29
+ spec.add_dependency 'httplog', '~> 1.4'
30
+
28
31
  spec.add_development_dependency 'bundler', '~> 2.0'
29
32
  spec.add_development_dependency 'rake', '~> 13.0'
30
33
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twitter_labs_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - tomholford
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-07-24 00:00:00.000000000 Z
11
+ date: 2020-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: httplog
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
13
41
  - !ruby/object:Gem::Dependency
14
42
  name: bundler
15
43
  requirement: !ruby/object:Gem::Requirement
@@ -45,7 +73,9 @@ executables: []
45
73
  extensions: []
46
74
  extra_rdoc_files: []
47
75
  files:
76
+ - ".github/workflows/ruby.yml"
48
77
  - ".gitignore"
78
+ - ".rspec"
49
79
  - CHANGELOG.md
50
80
  - Gemfile
51
81
  - Gemfile.lock
@@ -54,7 +84,12 @@ files:
54
84
  - Rakefile
55
85
  - bin/console
56
86
  - bin/setup
87
+ - bin/specs
57
88
  - lib/twitter_labs_api.rb
89
+ - lib/twitter_labs_api/api_error.rb
90
+ - lib/twitter_labs_api/client.rb
91
+ - lib/twitter_labs_api/resources/tweet.rb
92
+ - lib/twitter_labs_api/resources/user.rb
58
93
  - lib/twitter_labs_api/version.rb
59
94
  - twitter-labs-api.gemspec
60
95
  homepage: https://github.com/tomholford/twitter-labs-api