spearly-sdk-ruby 0.9.0 → 0.11.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: 16d6c0eba9178b85d9b63c138e630b6d7ac9075b4ea5aeb757e2e55851cb1071
4
- data.tar.gz: e37743ac296c9e361a61a45d37f8cff1f1f2473d885ee552ad374ee74c65b76e
3
+ metadata.gz: f7a126a7094bd795601cf10607c883663aa23b5a2d28cd55eb5752846388d9af
4
+ data.tar.gz: 4747ed60ef82ac5bf58291251b4b6e7cee8c2e63ca6f1bf54006ba72b7a27e12
5
5
  SHA512:
6
- metadata.gz: c13568331964dc5761788b1eaace9793d2f1d8a1784dfc87bcd5bae1fe478990406408172cdc2c5950169a23ad52cc3e340872b64a5fc83eb6938e8e1885d371
7
- data.tar.gz: 451b44aa43c50ba805fedd69c2d84a64f10877bf682a77d2a2f616a5bbad6800c4a6e327e9cfaab27fe3f3e9c9cfc2d3f6f2e92cb2d7acb30103b73d4c456c2c
6
+ metadata.gz: 1f12204d316b86497f18ee26bd1e5241a2810200a262e757c5d15056a7fb4fe3a436622a2d766bd769f5e53169f0120ab89d5559ca9caa3bae368ca37156bb55
7
+ data.tar.gz: a1014c15b5030ebd1326e6742c29d913bba91d6a554d0bbd94e8fe7857c4a41fa7a7916e368fc5a71948ba7b9b07233f42a61bf13424920cea650a4e699b26b5
@@ -1,16 +1,21 @@
1
1
  name: Ruby
2
- on: [push]
2
+ on:
3
+ push:
4
+ branches:
5
+ - '**'
3
6
  jobs:
4
7
  build:
5
- runs-on: ubuntu-latest
8
+ runs-on: ubuntu-22.04
6
9
  steps:
7
- - uses: actions/checkout@v2
8
- - name: Set up Ruby
10
+ - name: Checkout code
11
+ uses: actions/checkout@v3
12
+
13
+ - name: Setup Ruby
9
14
  uses: ruby/setup-ruby@v1
10
15
  with:
11
- ruby-version: 2.7.7
16
+ ruby-version: 3.1.4
17
+
12
18
  - name: Run the default task
13
19
  run: |
14
- gem install bundler -v 2.3.26
15
20
  bundle install
16
21
  bundle exec rake
data/.rubocop.yml CHANGED
@@ -2,7 +2,7 @@ require:
2
2
  - rubocop-rspec
3
3
  AllCops:
4
4
  NewCops: enable
5
- TargetRubyVersion: 2.7
5
+ TargetRubyVersion: 3.1
6
6
  Exclude:
7
7
  - 'bin/**/*'
8
8
  Layout/EmptyLineBetweenDefs:
@@ -16,6 +16,8 @@ Metrics/ClassLength:
16
16
  Enabled: false
17
17
  Metrics/MethodLength:
18
18
  Enabled: false
19
+ Naming/AccessorMethodName:
20
+ Enabled: false
19
21
  RSpec/BeNil:
20
22
  EnforcedStyle: 'be'
21
23
  RSpec/ExampleLength:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## [0.11.0] - 2023-09-23
2
+
3
+ - Throw errors `from Spearly::Auth` methods #15
4
+ - `Spearly::Auth::Client` refactors #14
5
+ - Upgrade Ruby to 3.1.4 #13
6
+ - Remove deprecated classes and helpers #12
7
+
8
+ ## [0.10.0] - 2022-12-05
9
+
10
+ - `Spearly::Auth::Client#get_team_subscriptions()`
11
+
1
12
  ## [0.9.0] - 2022-12-05
2
13
 
3
14
  - Return `errors` object on `Spearly::Auth::Client#create_team()`'s 422 responses
data/Gemfile CHANGED
@@ -3,4 +3,11 @@
3
3
  source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
- gem 'rails', '>= 6.0', '< 7.1'
6
+ group :development do
7
+ gem 'bundler-audit', '~> 0.9'
8
+ gem 'fuubar', '~> 2.5'
9
+ gem 'pry', '~> 0.13'
10
+ gem 'rspec', '~> 3.10'
11
+ gem 'rubocop', '~> 1.15'
12
+ gem 'rubocop-rspec', '~> 2.3'
13
+ end
data/README.md CHANGED
@@ -50,7 +50,7 @@ git push origin --tags
50
50
  ## Publish
51
51
  ### Build
52
52
  ```sh
53
- rake build
53
+ bundle exec rake build
54
54
  ```
55
55
 
56
56
  ### Push to RubyGems
data/Rakefile CHANGED
@@ -7,6 +7,8 @@ RSpec::Core::RakeTask.new(:spec)
7
7
 
8
8
  require 'rubocop/rake_task'
9
9
 
10
- RuboCop::RakeTask.new
10
+ RuboCop::RakeTask.new(:rubocop) do |task|
11
+ task.options = ['--autocorrect-all']
12
+ end
11
13
 
12
14
  task default: %i[spec rubocop]
@@ -1,7 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'signet/oauth_2/client'
4
- require 'active_support/core_ext/hash/indifferent_access'
5
4
 
6
5
  module Spearly
7
6
  module Auth
@@ -1,159 +1,51 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'team_member'
4
+ require_relative 'team_subscription'
5
+ require_relative 'team'
6
+ require_relative 'token'
7
+ require_relative 'user'
8
+
3
9
  module Spearly
4
10
  module Auth
5
11
  class Client
12
+ include Team
13
+ include TeamMember
14
+ include TeamSubscription
15
+ include Token
16
+ include User
17
+
6
18
  def initialize(token)
7
19
  @token = token
8
- end
9
20
 
10
- def get_user(user_id)
11
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/users/#{user_id}"
12
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
13
- client = Faraday.default_connection
14
-
15
- res = client.get(uri_parsed,
16
- nil,
17
- 'Accept' => 'application/vnd.spearly.v2+json',
18
- 'Authorization' => @token)
19
-
20
- if res.status == 200
21
- JSON.parse(res.body)['data']
22
- else
23
- {}
24
- end
21
+ base_url = ENV.fetch('SPEARLY_API_URL', nil)
22
+ @client = Faraday.new(base_url)
25
23
  end
26
24
 
27
- def create_team(params)
28
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams"
29
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
30
- client = Faraday.default_connection
31
-
32
- res = client.post(uri_parsed,
33
- params.as_json,
34
- 'Accept' => 'application/vnd.spearly.v2+json',
35
- 'Authorization' => @token)
25
+ def run_request(method:, path:, params: nil)
26
+ path_parsed = Addressable::URI.parse(path).normalize.to_s
36
27
 
37
- case res.status
38
- when 201
39
- JSON.parse(res.body)['data']
40
- when 422
41
- JSON.parse(res.body)
42
- else
43
- {}
44
- end
28
+ @client.run_request(method.to_sym,
29
+ path_parsed,
30
+ params,
31
+ 'Accept' => 'application/vnd.spearly.v2+json',
32
+ 'Authorization' => @token)
33
+ rescue Faraday::ConnectionFailed => e
34
+ raise ServerError, e.message
45
35
  end
46
36
 
47
- def get_team(team_id)
48
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}"
49
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
50
- client = Faraday.default_connection
51
-
52
- res = client.get(uri_parsed,
53
- nil,
54
- 'Accept' => 'application/vnd.spearly.v2+json',
55
- 'Authorization' => @token)
56
-
57
- if res.status == 200
58
- JSON.parse(res.body)['data']
59
- else
60
- {}
61
- end
62
- end
63
-
64
- def get_teams(params = {})
65
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams"
66
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
67
- client = Faraday.default_connection
68
-
69
- res = client.get(uri_parsed,
70
- params.as_json,
71
- 'Accept' => 'application/vnd.spearly.v2+json',
72
- 'Authorization' => @token)
73
-
74
- if res.status == 200
75
- JSON.parse(res.body)['data']
76
- else
77
- []
78
- end
79
- end
80
-
81
- def update_team(team_id, params)
82
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}"
83
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
84
- client = Faraday.default_connection
85
-
86
- res = client.put(uri_parsed,
87
- params.as_json,
88
- 'Accept' => 'application/vnd.spearly.v2+json',
89
- 'Authorization' => @token)
90
-
91
- return unless res.status == 200
92
-
93
- JSON.parse(res.body)['data']
94
- end
95
-
96
- def regenerate_team_api_access_token(team_id)
97
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}/regenerate_api_access_token"
98
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
99
- client = Faraday.default_connection
100
-
101
- res = client.post(uri_parsed,
102
- nil,
103
- 'Accept' => 'application/vnd.spearly.v2+json',
104
- 'Authorization' => @token)
105
-
106
- return unless res.status == 200
107
-
108
- JSON.parse(res.body)['data']
109
- end
110
-
111
- def invite_user_to_team(team_id, params)
112
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}/invite"
113
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
114
- client = Faraday.default_connection
115
-
116
- res = client.post(uri_parsed,
117
- params.as_json,
118
- 'Accept' => 'application/vnd.spearly.v2+json',
119
- 'Authorization' => @token)
120
-
121
- return unless res.status == 201
122
-
123
- JSON.parse(res.body)['data']
124
- end
125
-
126
- def get_team_members(team_id)
127
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}/members"
128
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
129
- client = Faraday.default_connection
130
-
131
- res = client.get(uri_parsed,
132
- nil,
133
- 'Accept' => 'application/vnd.spearly.v2+json',
134
- 'Authorization' => @token)
135
-
136
- if res.status == 200
137
- JSON.parse(res.body)['data']
138
- else
139
- []
140
- end
141
- end
142
-
143
- def get_team_features(team_id)
144
- uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams/#{team_id}/features"
145
- uri_parsed = Addressable::URI.parse(uri).normalize.to_s
146
- client = Faraday.default_connection
147
-
148
- res = client.get(uri_parsed,
149
- nil,
150
- 'Accept' => 'application/vnd.spearly.v2+json',
151
- 'Authorization' => @token)
152
-
153
- if res.status == 200
154
- JSON.parse(res.body)['data']
37
+ def process_response(response)
38
+ case response.status
39
+ when 200, 201, 422
40
+ JSON.parse(response.body)
41
+ when 401
42
+ raise AuthorizationError, 'Unauthorized'
43
+ when 404
44
+ raise NotFoundError, 'Not Found'
45
+ when 503
46
+ raise ServiceUnavailableError, 'Service Unavailable'
155
47
  else
156
- {}
48
+ raise ServerError, 'Server Error'
157
49
  end
158
50
  end
159
51
  end
@@ -2,27 +2,58 @@
2
2
 
3
3
  module Spearly
4
4
  module Auth
5
- class Team
6
- attr_reader :data
5
+ module Team
6
+ # POST /teams
7
+ def create_team(params)
8
+ response = run_request(
9
+ :method => :post,
10
+ path: '/teams',
11
+ params: params
12
+ )
7
13
 
8
- def initialize(data)
9
- @data = data
14
+ process_response(response)
10
15
  end
11
16
 
12
- def method_missing(name, *_args)
13
- @data[name.to_s]
17
+ # GET /teams/:team_id
18
+ def get_team(team_id)
19
+ response = run_request(
20
+ :method => :get,
21
+ path: "/teams/#{team_id}"
22
+ )
23
+
24
+ process_response(response)
14
25
  end
15
26
 
16
- def respond_to_missing?(_name, *_args)
17
- true
27
+ # GET /teams
28
+ def get_teams(params)
29
+ response = run_request(
30
+ :method => :get,
31
+ path: '/teams',
32
+ params: params
33
+ )
34
+
35
+ process_response(response)
18
36
  end
19
37
 
20
- def to_json(*_args)
21
- @data.to_json
38
+ # PUT /teams/:team_id
39
+ def update_team(team_id, params)
40
+ response = run_request(
41
+ :method => :put,
42
+ path: "/teams/#{team_id}",
43
+ params: params
44
+ )
45
+
46
+ process_response(response)
22
47
  end
23
48
 
24
- def as_json
25
- @data.as_json
49
+ # GET /teams/:team_id/regenerate_api_access_token
50
+ def regenerate_team_api_access_token(team_id)
51
+ response = run_request(
52
+ :method => :get,
53
+ path: "/teams/#{team_id}/regenerate_api_access_token"
54
+ )
55
+
56
+ process_response(response)
26
57
  end
27
58
  end
28
59
  end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spearly
4
+ module Auth
5
+ module TeamMember
6
+ # POST /teams/:team_id/invite
7
+ def invite_user_to_team(team_id, params)
8
+ response = run_request(
9
+ :method => :post,
10
+ path: "/teams/#{team_id}/invite",
11
+ params: params
12
+ )
13
+
14
+ process_response(response)
15
+ end
16
+
17
+ # GET /teams/:team_id/members
18
+ def get_team_members(team_id)
19
+ response = run_request(
20
+ :method => :get,
21
+ path: "/teams/#{team_id}/members"
22
+ )
23
+
24
+ process_response(response)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Spearly
4
+ module Auth
5
+ module TeamSubscription
6
+ # GET /teams/:team_id/subscriptions
7
+ def get_team_subscriptions(team_id, params)
8
+ response = run_request(
9
+ :method => :get,
10
+ path: "/teams/#{team_id}/subscriptions",
11
+ params: params
12
+ )
13
+
14
+ process_response(response)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,61 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'addressable/uri'
4
- require 'faraday'
5
-
6
3
  module Spearly
7
4
  module Auth
8
- class Token
9
- attr_reader :data, :token
10
-
11
- def initialize(token)
12
- @token = token
13
- end
14
-
15
- def method_missing(name, *_args)
16
- @data[name.to_s]
5
+ module Token
6
+ # GET /oauth/token/info
7
+ def get_token_info
8
+ response = run_request(
9
+ :method => :get,
10
+ path: '/oauth/token/info'
11
+ )
12
+
13
+ process_response(response)
17
14
  end
18
15
 
19
- def respond_to_missing?(_name, *_args)
20
- true
21
- end
22
-
23
- def info
24
- token_info_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/oauth/token/info"
25
- url = Addressable::URI.parse(token_info_uri).normalize.to_s
26
- client = Faraday.default_connection
27
-
28
- res = client.get(url,
29
- nil,
30
- 'Accept' => 'application/vnd.spearly.v2+json',
31
- 'Authorization' => @token)
32
-
33
- return unless res.status == 200
16
+ # POST /oauth/revoke
17
+ def revoke_token(params)
18
+ params[:token] = @token.gsub(/^Bearer /i, '')
34
19
 
35
- @data = JSON.parse(res.body)
36
- end
37
-
38
- def revoke(params)
39
- token_revoke_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/oauth/revoke"
40
- url = Addressable::URI.parse(token_revoke_uri).normalize.to_s
41
- client = Faraday.default_connection
42
-
43
- bearer_token = @token.gsub(/^Bearer /i, '')
44
-
45
- client.post(url,
46
- {
47
- client_id: params[:client_id],
48
- client_secret: params[:client_secret],
49
- token: bearer_token
50
- })
51
- end
52
-
53
- def to_json(*_args)
54
- @data.to_json
55
- end
20
+ response = run_request(
21
+ :method => :post,
22
+ path: '/oauth/revoke',
23
+ params: params
24
+ )
56
25
 
57
- def as_json
58
- @data.as_json
26
+ process_response(response)
59
27
  end
60
28
  end
61
29
  end
@@ -1,65 +1,27 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'addressable/uri'
4
- require 'faraday'
5
-
6
3
  module Spearly
7
4
  module Auth
8
- class User
9
- attr_reader :data
10
-
11
- def initialize(token)
12
- @token = token
13
- end
14
-
15
- def method_missing(name, *_args)
16
- @data[name.to_s]
17
- end
18
-
19
- def respond_to_missing?(_name, *_args)
20
- true
21
- end
22
-
23
- def find
24
- user_profile_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/profile"
25
- url = Addressable::URI.parse(user_profile_uri).normalize.to_s
26
- client = Faraday.default_connection
27
-
28
- res = client.get(url,
29
- nil,
30
- 'Accept' => 'application/vnd.spearly.v2+json',
31
- 'Authorization' => @token)
32
-
33
- return unless res.status == 200
34
-
35
- @data = JSON.parse(res.body)['data']
5
+ module User
6
+ # GET /users/:user_id
7
+ # requires SPEARLY_API_ACCESS_TOKEN as token
8
+ def get_user(user_id)
9
+ response = run_request(
10
+ :method => :get,
11
+ path: "/users/#{user_id}"
12
+ )
13
+
14
+ process_response(response)
36
15
  end
37
16
 
38
- def teams
39
- teams_uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/teams"
40
- url = Addressable::URI.parse(teams_uri).normalize.to_s
41
- client = Faraday.default_connection
42
-
43
- res = client.get(url,
44
- nil,
45
- 'Accept' => 'application/vnd.spearly.v2+json',
46
- 'Authorization' => @token)
47
-
48
- return [] unless res.status == 200
49
-
50
- team_hashes = JSON.parse(res.body)['data']
51
-
52
- team_hashes.map do |team_hash|
53
- Spearly::Auth::Team.new(team_hash)
54
- end
55
- end
56
-
57
- def to_json(*_args)
58
- @data.to_json
59
- end
17
+ # GET /profile
18
+ def get_profile
19
+ response = run_request(
20
+ :method => :get,
21
+ path: '/profile'
22
+ )
60
23
 
61
- def as_json
62
- @data.as_json
24
+ process_response(response)
63
25
  end
64
26
  end
65
27
  end
data/lib/spearly/auth.rb CHANGED
@@ -2,20 +2,13 @@
2
2
 
3
3
  require_relative 'auth/authorizer'
4
4
  require_relative 'auth/client'
5
- require_relative 'auth/engine'
6
- require_relative 'auth/oauth_user'
7
- require_relative 'auth/team'
8
- require_relative 'auth/token'
9
- require_relative 'auth/user'
10
5
 
11
6
  module Spearly
12
7
  module Auth
13
8
  class Error < StandardError; end
14
9
  class AuthorizationError < Error; end
10
+ class NotFoundError < Error; end
15
11
  class ServerError < Error; end
16
-
17
- module Rails
18
- autoload :Helpers, 'spearly/auth/rails/helpers'
19
- end
12
+ class ServiceUnavailableError < Error; end
20
13
  end
21
14
  end
@@ -7,13 +7,13 @@ module Spearly
7
7
  @token = token
8
8
  end
9
9
 
10
- def get_sites(params = {})
10
+ def get_sites(params)
11
11
  uri = "#{ENV.fetch('SPEARLY_API_URL', nil)}/sites"
12
12
  uri_parsed = Addressable::URI.parse(uri).normalize.to_s
13
13
  client = Faraday.default_connection
14
14
 
15
15
  res = client.get(uri_parsed,
16
- params.as_json,
16
+ params,
17
17
  'Accept' => 'application/vnd.spearly.v2+json',
18
18
  'Authorization' => @token)
19
19
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Spearly
4
- VERSION = '0.9.0'
4
+ VERSION = '0.11.0'
5
5
  end
data/spearly.gemspec CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |gem|
10
10
 
11
11
  gem.summary = 'Spearly SDK for Ruby'
12
12
  gem.homepage = 'https://github.com/unimal-jp/spearly-sdk-ruby'
13
- gem.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
13
+ gem.required_ruby_version = Gem::Requirement.new('>= 3.1.0')
14
14
  gem.metadata['homepage_uri'] = gem.homepage
15
15
  gem.metadata['source_code_uri'] = 'https://github.com/unimal-jp/spearly-sdk-ruby'
16
16
  gem.metadata['changelog_uri'] = "https://github.com/unimal-jp/spearly-sdk-ruby/blob/v#{Spearly::VERSION}/CHANGELOG.md"
@@ -25,11 +25,4 @@ Gem::Specification.new do |gem|
25
25
  gem.add_runtime_dependency 'addressable', '~> 2.3'
26
26
  gem.add_runtime_dependency 'faraday', '>= 0.17.4', '< 2.0'
27
27
  gem.add_runtime_dependency 'signet', '~> 0.15'
28
-
29
- gem.add_development_dependency 'bundler-audit', '~> 0.9'
30
- gem.add_development_dependency 'fuubar', '~> 2.5'
31
- gem.add_development_dependency 'pry', '~> 0.13'
32
- gem.add_development_dependency 'rspec', '~> 3.10'
33
- gem.add_development_dependency 'rubocop', '~> 1.15'
34
- gem.add_development_dependency 'rubocop-rspec', '~> 2.3'
35
28
  end