simple_twitter 1.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2736729c95b2f5def88674bda64a6fecd397a5f422c829ab8b301ac4a36f216c
4
- data.tar.gz: 530c600f14041e91c7476b1179bf2069f8d35076175d10089b07db642b13c3fe
3
+ metadata.gz: 6658a0b3e20a5da4a1a59d28ee5062bb2f1e816e6298cf49dcc48d0cfda2bcbb
4
+ data.tar.gz: 7295ee6a0d9ecd2ea5fe264bfcbe4357d8e2cde9b40db0001f0ebb39e7479399
5
5
  SHA512:
6
- metadata.gz: e216e514b9bcdfd91e600e07137c409b1bd3d84c4eb045a7988b30a29c4b4dea4bb05f39dddf309295c104a640420bd43a7cf5f7f2702b86ea05f13b2df0acda
7
- data.tar.gz: '036388ae7887f3af5b3b625f15dd6ab7e5241502e1af4257ae1b59ed92b3082e406f9246f623d711a9791af9de851d3f0b5870badde6a4e41e4673df75308a06'
6
+ metadata.gz: aa8c402510a617b96a6dd6c239c7d4d9b0c9e01fc7202f371ba826b095c01542ba2ee76ef11d953b7aa76e3c8099597cf3d0bd2da7fa264c98214c87ad8b1e96
7
+ data.tar.gz: 02eead6edb730eb7562dc7869ca15d8908b5424526a902afc68912f69a1aa847c32531d57291802237854dc84af3681a931474362e0704eec31740057c59f55d
@@ -0,0 +1,8 @@
1
+ # c.f. https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
2
+ version: 2
3
+
4
+ updates:
5
+ - package-ecosystem: github-actions
6
+ directory: /
7
+ schedule:
8
+ interval: weekly
@@ -0,0 +1,51 @@
1
+ # Simple workflow for deploying static content to GitHub Pages
2
+ name: Deploy static content to Pages
3
+
4
+ on:
5
+ # Runs on pushes targeting the default branch
6
+ push:
7
+ branches:
8
+ - main
9
+
10
+ # Allows you to run this workflow manually from the Actions tab
11
+ workflow_dispatch:
12
+
13
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
14
+ permissions:
15
+ contents: read
16
+ pages: write
17
+ id-token: write
18
+
19
+ # Allow one concurrent deployment
20
+ concurrency:
21
+ group: "pages"
22
+ cancel-in-progress: true
23
+
24
+ jobs:
25
+ # Single deploy job since we're just deploying
26
+ deploy:
27
+ environment:
28
+ name: github-pages
29
+ url: ${{ steps.deployment.outputs.page_url }}
30
+ runs-on: ubuntu-latest
31
+ steps:
32
+ - name: Checkout
33
+ uses: actions/checkout@v3
34
+
35
+ - uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ruby
38
+ bundler-cache: true
39
+
40
+ - run: bundle exec yard
41
+
42
+ - name: Setup Pages
43
+ uses: actions/configure-pages@v3
44
+ - name: Upload artifact
45
+ uses: actions/upload-pages-artifact@v2
46
+ with:
47
+ # Upload entire repository
48
+ path: './doc'
49
+ - name: Deploy to GitHub Pages
50
+ id: deployment
51
+ uses: actions/deploy-pages@main
@@ -0,0 +1,48 @@
1
+ name: test
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+ schedule:
13
+ - cron: "0 10 * * 5" # JST 19:00 (Fri)
14
+
15
+ jobs:
16
+ test:
17
+ runs-on: ubuntu-latest
18
+
19
+ strategy:
20
+ fail-fast: false
21
+
22
+ matrix:
23
+ ruby:
24
+ - "2.3"
25
+ - "2.4"
26
+ - "2.5"
27
+ - "2.6"
28
+ - "2.7"
29
+ - "3.0"
30
+ - "3.1"
31
+ - "3.2"
32
+
33
+ steps:
34
+ - uses: actions/checkout@v3
35
+
36
+ - uses: ruby/setup-ruby@v1
37
+ with:
38
+ ruby-version: ${{ matrix.ruby }}
39
+ bundler-cache: true
40
+
41
+ - name: bundle update
42
+ run: |
43
+ set -xe
44
+ bundle config path vendor/bundle
45
+ bundle update --jobs $(nproc) --retry 3
46
+
47
+ - run: bundle exec rspec
48
+ - run: bundle exec yard --fail-on-warning
data/.gitignore CHANGED
@@ -6,3 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.yardopts ADDED
@@ -0,0 +1,5 @@
1
+ --markup markdown
2
+ --hide-void-return
3
+ -
4
+ CHANGELOG.md
5
+ LICENSE.txt
data/CHANGELOG.md CHANGED
@@ -1,3 +1,117 @@
1
+ ## Unreleased
2
+ https://github.com/yhara/simple_twitter/compare/v2.0.0...main
3
+
4
+ ## v2.0.0 (2023-07-17)
5
+ https://github.com/yhara/simple_twitter/compare/v1.0.0...v2.0.0
6
+
7
+ ### :bomb: [BREAKING CHANGE] positional args to keywords args
8
+ Since v2.0, the positional arguments of the following methods are now keyword arguments.
9
+
10
+ | v1.0 | v2.0+ |
11
+ | ---------------------------------------------------- | ------------------------------------------------------------- |
12
+ | `SimpleTwitter::Client#get(url, params = {})` | `SimpleTwitter::Client#get(url, params: {}, json: {})` |
13
+ | `SimpleTwitter::Client#get_raw(url, params = {})` | `SimpleTwitter::Client#get_raw(url, params: {}, json: {})` |
14
+ | `SimpleTwitter::Client#post(url, params = {})` | `SimpleTwitter::Client#post(url, params: {}, json: {})` |
15
+ | `SimpleTwitter::Client#post_raw(url, params = {})` | `SimpleTwitter::Client#post_raw(url, params: {}, json: {})` |
16
+ | `SimpleTwitter::Client#put(url, params = {})` | `SimpleTwitter::Client#put(url, params: {}, json: {})` |
17
+ | `SimpleTwitter::Client#put_raw(url, params = {})` | `SimpleTwitter::Client#put_raw(url, params: {}, json: {})` |
18
+ | `SimpleTwitter::Client#delete(url, params = {})` | `SimpleTwitter::Client#delete(url, params: {}, json: {})` |
19
+ | `SimpleTwitter::Client#delete_raw(url, params = {})` | `SimpleTwitter::Client#delete_raw(url, params: {}, json: {})` |
20
+
21
+ Please modify as follows when you upgrade from v1.0 :pray:
22
+
23
+ Before (v1.0)
24
+
25
+ ```ruby
26
+ client.get("https://api.twitter.com/2/tweets", ids: "1302127884039909376,1369885448319889409")
27
+ ```
28
+
29
+ After (v2.0+)
30
+
31
+ ```ruby
32
+ client.get("https://api.twitter.com/2/tweets", params: { ids: "1302127884039909376,1369885448319889409" })
33
+ ```
34
+
35
+ If only 1 argument was used (e.g. `client.get("https://api.twitter.com/2/users/me")`), no modification is required.
36
+
37
+ See more.
38
+
39
+ * https://github.com/yhara/simple_twitter/pull/3
40
+ * https://github.com/yhara/simple_twitter/pull/19
41
+
42
+ ### :bomb: [BREAKING CHANGE] raise Error when Twitter API returned error
43
+ Until v1.0, even if the Twitter API returns an error, Ruby does not throw an error, so it is considered a normal exit.
44
+
45
+ This is confusing, so when the API returns an error, Ruby also raises an error.
46
+
47
+ Before (v1.0)
48
+
49
+ ```ruby
50
+ client = SimpleTwitter::Client.new(bearer_token: "dummy")
51
+ client.get("https://api.twitter.com/2/users/me")
52
+ #=>
53
+ {:title=>"Unsupported Authentication",
54
+ :detail=>
55
+ "Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint. Supported authentication types are [OAuth 1.0a User Context, OAuth 2.0 User Context].",
56
+ :type=>"https://api.twitter.com/2/problems/unsupported-authentication",
57
+ :status=>403}
58
+ ```
59
+
60
+ After (v2.0+)
61
+
62
+ ```ruby
63
+ client = SimpleTwitter::Client.new(bearer_token: "dummy")
64
+ client.get("https://api.twitter.com/2/users/me")
65
+ /path/to/simple_twitter/lib/simple_twitter.rb:96:in `parse_response': Unsupported Authentication (status 403) (SimpleTwitter::ClientError)
66
+ from (eval):6:in `get'
67
+ from (irb):2:in `<main>'
68
+ from ./bin/console:15:in `<main>'
69
+ ```
70
+
71
+ Detailed error details can be obtained as follows
72
+
73
+ ```ruby
74
+ begin
75
+ client = SimpleTwitter::Client.new(bearer_token: "invalid_bearer_token")
76
+ client.get("https://api.twitter.com/2/users/me")
77
+ rescue SimpleTwitter::Error => error
78
+ error.raw_response.class
79
+ #=> HTTP::Response
80
+
81
+ error.raw_response.code
82
+ #=> 403
83
+
84
+ error.body[:title]
85
+ # => "Unsupported Authentication"
86
+ end
87
+ ```
88
+
89
+ See more.
90
+
91
+ * https://github.com/yhara/simple_twitter/pull/2
92
+ * https://github.com/yhara/simple_twitter/pull/15
93
+
94
+ ### Features
95
+ - Enabled rubygems_mfa_required
96
+ - https://github.com/yhara/simple_twitter/pull/9
97
+ - Add changelog_uri to gemspec
98
+ - https://github.com/yhara/simple_twitter/pull/10
99
+ - Write YARD comment and publish to Pages
100
+ - https://github.com/yhara/simple_twitter/pull/13
101
+ - Add documentation_uri to gemspec metadata
102
+ - https://github.com/yhara/simple_twitter/pull/16
103
+
104
+ ### Others
105
+ - Add @sue445 as an author
106
+ - https://github.com/yhara/simple_twitter/pull/6
107
+ - Add tests and CI
108
+ - https://github.com/yhara/simple_twitter/pull/7
109
+ - https://github.com/yhara/simple_twitter/pull/12
110
+ - Tweak doc
111
+ - https://github.com/yhara/simple_twitter/pull/17
112
+ - https://github.com/yhara/simple_twitter/pull/18
113
+ - https://github.com/yhara/simple_twitter/pull/20
114
+
1
115
  ## v1.0.0 (2021-03-28)
2
116
 
3
117
  - initial release
data/README.md CHANGED
@@ -2,6 +2,9 @@
2
2
 
3
3
  Dead simple Twitter API client. Supports both v1 and v2
4
4
 
5
+ [![Gem Version](https://badge.fury.io/rb/simple_twitter.svg)](https://badge.fury.io/rb/simple_twitter)
6
+ [![test](https://github.com/yhara/simple_twitter/actions/workflows/test.yml/badge.svg)](https://github.com/yhara/simple_twitter/actions/workflows/test.yml)
7
+
5
8
  ## Installation
6
9
 
7
10
  Add this line to your application's Gemfile:
@@ -25,7 +28,7 @@ require 'simple_twitter'
25
28
 
26
29
  client = SimpleTwitter::Client.new(bearer_token: "...")
27
30
  pp client.get("https://api.twitter.com/2/tweets",
28
- ids: "1302127884039909376,1369885448319889409")
31
+ params: { ids: "1302127884039909376,1369885448319889409" })
29
32
  ```
30
33
 
31
34
  Result:
@@ -55,11 +58,25 @@ client = SimpleTwitter::Client.new(
55
58
  access_token_secret: config[:access_token_secret],
56
59
  )
57
60
  pp client.post("https://api.twitter.com/1.1/statuses/update.json",
58
- status: "Test.")
61
+ params: { status: "Test." })
59
62
  ```
60
63
 
61
64
  You can get the access_token and access_token_secret for your own at the Twitter Developer Portal. For other users, you need to get them via OAuth (out of scope of this gem.)
62
65
 
66
+ ### Post with JSON body
67
+ Since Twitter API v2, POST must be sent as JSON body
68
+
69
+ e.g.https://developer.twitter.com/en/docs/twitter-api/tweets/manage-tweets/api-reference/post-tweets
70
+
71
+ Send using the `json` argument.
72
+
73
+ e.g.
74
+
75
+ ```ruby
76
+ client = SimpleTwitter::Client.new(bearer_token: ENV["ACCESS_TOKEN"])
77
+ client.post("https://api.twitter.com/2/tweets", json: { text: "Hello twitter!" })
78
+ ```
79
+
63
80
  ### Advanced
64
81
 
65
82
  If you want the raw json string or use streaming API, use `get_raw`, `post_raw`, etc. which returns `HTTP::Response` of the [http gem](https://github.com/httprb/http).
@@ -77,16 +94,42 @@ end
77
94
  Some API parameters has `.` in its name (eg. `tweet.fields`.) Did you know that in Ruby you can include `.` in a hash key if quoted? :-)
78
95
 
79
96
  ```rb
80
- tweets = @client.get("https://api.twitter.com/2/users/#{id}/tweets", {
97
+ tweets = @client.get("https://api.twitter.com/2/users/#{id}/tweets", params: {
81
98
  expansions: "author_id",
82
99
  max_results: 100,
83
100
  "tweet.fields": "author_id,created_at,referenced_tweets,text",
84
101
  })
85
102
  ```
86
103
 
104
+ ### Detailed error details
105
+ If an error is returned from the API, you may need more information.
106
+
107
+ In such cases, you can retrieve it as follows.
108
+
109
+ ```ruby
110
+ begin
111
+ client = SimpleTwitter::Client.new(bearer_token: "invalid_bearer_token")
112
+ client.get("https://api.twitter.com/2/users/me")
113
+ rescue SimpleTwitter::Error => error
114
+ error.raw_response.class
115
+ #=> HTTP::Response
116
+
117
+ error.raw_response.code
118
+ #=> 403
119
+
120
+ error.body[:title]
121
+ # => "Unsupported Authentication"
122
+ end
123
+ ```
124
+
125
+ See more. [SimpleTwitter::Error](https://yhara.github.io/simple_twitter/SimpleTwitter/Error.html)
126
+
127
+ ## API Reference
128
+ See https://yhara.github.io/simple_twitter/
129
+
87
130
  ## Contributing
88
131
 
89
- Bug reports and pull requests are welcome on GitHub at https://github.com/naclyhara/simple_twitter.
132
+ Bug reports and pull requests are welcome on GitHub at https://github.com/yhara/simple_twitter.
90
133
 
91
134
  ## License
92
135
 
@@ -0,0 +1,142 @@
1
+ module SimpleTwitter
2
+ # Twitter API Client
3
+ class Client
4
+ # @param bearer_token [String] This requires for API v2
5
+ # @param api_key [String] This requires for API v1.1
6
+ # @param api_secret_key [String] This requires for API v1.1
7
+ # @param access_token [String] This requires for API v1.1
8
+ # @param access_token_secret [String] This requires for API v1.1
9
+ def initialize(bearer_token: nil,
10
+ api_key: nil,
11
+ api_secret_key: nil,
12
+ access_token: nil,
13
+ access_token_secret: nil)
14
+ if bearer_token
15
+ @bearer_token = bearer_token
16
+ else
17
+ @oauth_params = {
18
+ consumer_key: api_key,
19
+ consumer_secret: api_secret_key,
20
+ token: access_token,
21
+ token_secret: access_token_secret,
22
+ }
23
+ end
24
+ end
25
+
26
+ # @!method get(url, params: {}, json: {})
27
+ # Call Twitter API with GET method
28
+ # @param url [String]
29
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
30
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
31
+ # @return [Hash] parsed json data
32
+ # @raise [SimpleTwitter::ClientError] Twitter API returned 4xx error
33
+ # @raise [SimpleTwitter::ServerError] Twitter API returned 5xx error
34
+
35
+ # @!method get_raw(url, params: {}, json: {})
36
+ # Call Twitter API with GET method
37
+ # @param url [String]
38
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
39
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
40
+ # @return [HTTP::Response]
41
+
42
+ # @!method post(url, params: {}, json: {})
43
+ # Call Twitter API with POST method
44
+ # @param url [String]
45
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
46
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
47
+ # @return [Hash] parsed json data
48
+ # @raise [SimpleTwitter::ClientError] Twitter API returned 4xx error
49
+ # @raise [SimpleTwitter::ServerError] Twitter API returned 5xx error
50
+
51
+ # @!method post_raw(url, params: {}, json: {})
52
+ # Call Twitter API with POST method
53
+ # @param url [String]
54
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
55
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
56
+ # @return [HTTP::Response]
57
+
58
+ # @!method put(url, params: {}, json: {})
59
+ # Call Twitter API with PUT method
60
+ # @param url [String]
61
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
62
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
63
+ # @return [Hash] parsed json data
64
+ # @raise [SimpleTwitter::ClientError] Twitter API returned 4xx error
65
+ # @raise [SimpleTwitter::ServerError] Twitter API returned 5xx error
66
+
67
+ # @!method put_raw(url, params: {}, json: {})
68
+ # Call Twitter API with PUT method
69
+ # @param url [String]
70
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
71
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
72
+ # @return [HTTP::Response]
73
+
74
+ # @!method delete(url, params: {}, json: {})
75
+ # Call Twitter API with DELETE method
76
+ # @param url [String]
77
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
78
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
79
+ # @return [Hash] parsed json data
80
+ # @raise [SimpleTwitter::ClientError] Twitter API returned 4xx error
81
+ # @raise [SimpleTwitter::ServerError] Twitter API returned 5xx error
82
+
83
+ # @!method delete_raw(url, params: {}, json: {})
84
+ # Call Twitter API with DELETE method
85
+ # @param url [String]
86
+ # @param params [Hash] Send this arg as a query string. (e.g. `?name1=value1&name2=value2`)
87
+ # @param json [Hash] Send this arg as JSON request body with `Content-Type: application/json` header
88
+ # @return [HTTP::Response]
89
+
90
+ %i[get post put delete].each do |m|
91
+ class_eval <<~EOD
92
+ def #{m}(url, params: {}, json: {})
93
+ res = #{m}_raw(url, params: params, json: json)
94
+ parse_response(res)
95
+ end
96
+
97
+ def #{m}_raw(url, params: {}, json: {})
98
+ args = { params: params }
99
+ args[:json] = json unless json.empty?
100
+ http(:#{m}, url, params).#{m}(url, args)
101
+ end
102
+ EOD
103
+ end
104
+
105
+ private
106
+
107
+ # @param method [Symbol]
108
+ # @param url [String]
109
+ # @param params [Hash<Symbol, String>]
110
+ # @return [HTTP::Client]
111
+ def http(method, url, params)
112
+ HTTP.auth(auth_header(method, url, params))
113
+ end
114
+
115
+ # @param method [Symbol]
116
+ # @param url [String]
117
+ # @param params [Hash<Symbol, String>]
118
+ # @return [String]
119
+ def auth_header(method, url, params)
120
+ if @bearer_token
121
+ "Bearer #{@bearer_token}"
122
+ else
123
+ SimpleOAuth::Header.new(method, url, params, @oauth_params).to_s
124
+ end
125
+ end
126
+
127
+ # @param res [HTTP::Response]
128
+ # @return [Hash] parsed json data
129
+ # @raise [SimpleTwitter::ClientError] Twitter API returned 4xx error
130
+ # @raise [SimpleTwitter::ServerError] Twitter API returned 5xx error
131
+ def parse_response(res)
132
+ case res.code.to_i / 100
133
+ when 4
134
+ raise ClientError, res
135
+ when 5
136
+ raise ServerError, res
137
+ end
138
+
139
+ JSON.parse(res.to_s, symbolize_names: true)
140
+ end
141
+ end
142
+ end
@@ -0,0 +1,5 @@
1
+ module SimpleTwitter
2
+ # Twitter API 4xx error
3
+ class ClientError < Error
4
+ end
5
+ end
@@ -0,0 +1,29 @@
1
+ module SimpleTwitter
2
+ # Error base class
3
+ class Error < StandardError
4
+ # @!attribute [r] raw_response
5
+ # @return [HTTP::Response] raw error response
6
+ attr_reader :raw_response
7
+
8
+ # @!attribute [r] body
9
+ # @return [Hash<Symbol, String>] error response body
10
+ attr_reader :body
11
+
12
+ # @param raw_response [HTTP::Response] raw error response from Twitter API
13
+ def initialize(raw_response)
14
+ @raw_response = raw_response
15
+
16
+ begin
17
+ @body = JSON.parse(raw_response.to_s, symbolize_names: true)
18
+
19
+ title = @body[:title] || "Unknown error"
20
+ title << " (status #{raw_response.code})"
21
+
22
+ super(title)
23
+ rescue JSON::ParserError => e
24
+ # Twitter doesn't returns json
25
+ super("Unknown error (status #{raw_response.code})")
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,5 @@
1
+ module SimpleTwitter
2
+ # Twitter API 5xx error
3
+ class ServerError < Error
4
+ end
5
+ end
@@ -1,3 +1,3 @@
1
1
  module SimpleTwitter
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -2,58 +2,8 @@ require 'http'
2
2
  require 'simple_oauth'
3
3
 
4
4
  module SimpleTwitter
5
- class Client
6
- def initialize(bearer_token: nil,
7
- api_key: nil,
8
- api_secret_key: nil,
9
- access_token: nil,
10
- access_token_secret: nil)
11
- if bearer_token
12
- @bearer_token = bearer_token
13
- else
14
- @oauth_params = {
15
- consumer_key: api_key,
16
- consumer_secret: api_secret_key,
17
- token: access_token,
18
- token_secret: access_token_secret,
19
- }
20
- end
21
- end
22
-
23
- %i[get post put delete].each do |m|
24
- class_eval <<~EOD
25
- # @return [Object] parsed json data
26
- def #{m}(url, params={})
27
- JSON.parse(#{m}_raw(url, params).to_s, symbolize_names: true)
28
- end
29
-
30
- # @return [HTTP::Response]
31
- def #{m}_raw(url, params={})
32
- http(:#{m}, url, params).#{m}(url, params: params)
33
- end
34
- EOD
35
- end
36
-
37
- private
38
-
39
- # @param method [Symbol]
40
- # @param url [String]
41
- # @param params [Hash<Symbol, String>]
42
- # @return [HTTP::Request]
43
- def http(method, url, params)
44
- HTTP.auth(auth_header(method, url, params))
45
- end
46
-
47
- # @param method [Symbol]
48
- # @param url [String]
49
- # @param params [Hash<Symbol, String>]
50
- # @return [String]
51
- def auth_header(method, url, params)
52
- if @bearer_token
53
- "Bearer #{@bearer_token}"
54
- else
55
- SimpleOAuth::Header.new(method, url, params, @oauth_params).to_s
56
- end
57
- end
58
- end
5
+ autoload :Client, "simple_twitter/client"
6
+ autoload :ClientError, "simple_twitter/client_error"
7
+ autoload :Error, "simple_twitter/error"
8
+ autoload :ServerError, "simple_twitter/server_error"
59
9
  end
@@ -3,8 +3,8 @@ require_relative "lib/simple_twitter/version"
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "simple_twitter"
5
5
  spec.version = SimpleTwitter::VERSION
6
- spec.authors = ["Yutaka HARA"]
7
- spec.email = ["yutaka.hara+github@gmail.com"]
6
+ spec.authors = ["Yutaka HARA", "sue445"]
7
+ spec.email = ["yutaka.hara+github@gmail.com", "sue445fukuoka@gmail.com"]
8
8
 
9
9
  spec.summary = "Dead simple client for Twitter API v1/v2"
10
10
  spec.description = "Dead simple client for Twitter API (supports both v1 and v2)"
@@ -14,7 +14,9 @@ Gem::Specification.new do |spec|
14
14
 
15
15
  spec.metadata["homepage_uri"] = spec.homepage
16
16
  spec.metadata["source_code_uri"] = spec.homepage
17
- #spec.metadata["changelog_uri"] = "TODO: Put your gem's CHANGELOG.md URL here."
17
+ spec.metadata["changelog_uri"] = spec.homepage + "/blob/main/CHANGELOG.md"
18
+ spec.metadata["documentation_uri"] = "https://yhara.github.io/simple_twitter/"
19
+ spec.metadata["rubygems_mfa_required"] = "true"
18
20
 
19
21
  # Specify which files should be added to the gem when it is released.
20
22
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
@@ -25,6 +27,11 @@ Gem::Specification.new do |spec|
25
27
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
26
28
  spec.require_paths = ["lib"]
27
29
 
28
- spec.add_dependency "http", "~> 4"
29
- spec.add_dependency "simple_oauth", "~> 0.3.1"
30
+ spec.add_dependency "http", ">= 4"
31
+ spec.add_dependency "simple_oauth", ">= 0.3.1"
32
+
33
+ spec.add_development_dependency "rspec"
34
+ spec.add_development_dependency "rspec-its"
35
+ spec.add_development_dependency "webmock"
36
+ spec.add_development_dependency "yard"
30
37
  end
metadata CHANGED
@@ -1,51 +1,114 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_twitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yutaka HARA
8
+ - sue445
8
9
  autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2021-03-28 00:00:00.000000000 Z
12
+ date: 2023-07-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: http
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - "~>"
18
+ - - ">="
18
19
  - !ruby/object:Gem::Version
19
20
  version: '4'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - "~>"
25
+ - - ">="
25
26
  - !ruby/object:Gem::Version
26
27
  version: '4'
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: simple_oauth
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - "~>"
32
+ - - ">="
32
33
  - !ruby/object:Gem::Version
33
34
  version: 0.3.1
34
35
  type: :runtime
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - "~>"
39
+ - - ">="
39
40
  - !ruby/object:Gem::Version
40
41
  version: 0.3.1
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ - !ruby/object:Gem::Dependency
57
+ name: rspec-its
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: webmock
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: yard
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
41
98
  description: Dead simple client for Twitter API (supports both v1 and v2)
42
99
  email:
43
100
  - yutaka.hara+github@gmail.com
101
+ - sue445fukuoka@gmail.com
44
102
  executables: []
45
103
  extensions: []
46
104
  extra_rdoc_files: []
47
105
  files:
106
+ - ".github/dependabot.yml"
107
+ - ".github/workflows/pages.yml"
108
+ - ".github/workflows/test.yml"
48
109
  - ".gitignore"
110
+ - ".rspec"
111
+ - ".yardopts"
49
112
  - CHANGELOG.md
50
113
  - Gemfile
51
114
  - LICENSE.txt
@@ -54,6 +117,10 @@ files:
54
117
  - bin/console
55
118
  - bin/setup
56
119
  - lib/simple_twitter.rb
120
+ - lib/simple_twitter/client.rb
121
+ - lib/simple_twitter/client_error.rb
122
+ - lib/simple_twitter/error.rb
123
+ - lib/simple_twitter/server_error.rb
57
124
  - lib/simple_twitter/version.rb
58
125
  - simple_twitter.gemspec
59
126
  homepage: https://github.com/yhara/simple_twitter
@@ -62,6 +129,9 @@ licenses:
62
129
  metadata:
63
130
  homepage_uri: https://github.com/yhara/simple_twitter
64
131
  source_code_uri: https://github.com/yhara/simple_twitter
132
+ changelog_uri: https://github.com/yhara/simple_twitter/blob/main/CHANGELOG.md
133
+ documentation_uri: https://yhara.github.io/simple_twitter/
134
+ rubygems_mfa_required: 'true'
65
135
  post_install_message:
66
136
  rdoc_options: []
67
137
  require_paths:
@@ -77,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
147
  - !ruby/object:Gem::Version
78
148
  version: '0'
79
149
  requirements: []
80
- rubygems_version: 3.2.3
150
+ rubygems_version: 3.4.10
81
151
  signing_key:
82
152
  specification_version: 4
83
153
  summary: Dead simple client for Twitter API v1/v2