smartcar 1.0.2 → 1.0.3

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: 33c66ec003de2197f9f13d42b2dfb3b7f9fae2899a560d6b8453be21c9ed29b6
4
- data.tar.gz: 39e7776b2bf8474dd3b95895b52358fbd22ec743b45584b0e9ac9a35ff18f816
3
+ metadata.gz: 6edb5e52f0934476c62ad8dd9c8851c4e65e8e2b38023b54ccf1d9b584ad75b1
4
+ data.tar.gz: 7dcf139e66ede5b2ab77b3c2c90ef5645776bcedcb72537402326da6d3be6eb8
5
5
  SHA512:
6
- metadata.gz: a5f53bf8ddeb9a23d3bdc3fef43eb70c44422b844c3677d021dfee5f1d527e70ad2379f37b07d89e46829c86a94f30c5ef267322dba28716816552c6c0d3a2d9
7
- data.tar.gz: 5912d436ed1cc6fe31b55d35bcaa2a553a9d94eb5cc8c808c48f131885234f0f07b14dc6fd720576c217fbda58a0e4716a57edfbe9f651be82e719b916bb0209
6
+ metadata.gz: 47a1bbb0152d2ab79e2e15f85094d28bacdea30e9f18003ae0e2b2e25f3f7475885e94eced22b568536ae043bb3f1c3f8cdf13e1cc9a29cb777f6420ad2f2964
7
+ data.tar.gz: 928aa7165e2af3a3a1c0a2402c7ea0f57467aa1cd2b3aaa7ff5aa2acf5662603c07eebe7e96121b0e432f81002147785b0cfbc3775ead59da9cbbfc6efc97634
@@ -1,7 +1,28 @@
1
- ---
2
1
  sudo: false
3
2
  language: ruby
4
3
  cache: bundler
4
+ services:
5
+ - xvfb
6
+ addons:
7
+ firefox: latest
5
8
  rvm:
6
- - 2.5.5
7
- before_install: gem install bundler -v 2.0.2
9
+ - 2.5
10
+ - 2.6
11
+ - 2.7
12
+ before_install:
13
+ - gem install bundler -v 2.1.2
14
+ - wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
15
+ - mkdir geckodriver
16
+ - tar -xzf geckodriver-v0.26.0-linux64.tar.gz -C geckodriver
17
+ - export PATH=$PATH:$PWD/geckodriver
18
+ # install:
19
+ # - firefox -headless &
20
+ deploy:
21
+ provider: rubygems
22
+ api_key: $RUBYGEMSAPI_KEY
23
+ gem: smartcar
24
+ on:
25
+ tags: true
26
+ branch: master
27
+ rvm: 2.5
28
+ skip_cleanup: 'true'
@@ -55,7 +55,7 @@ further defined and clarified by project maintainers.
55
55
  ## Enforcement
56
56
 
57
57
  Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at Ashwin.Subramanian@ooma.com. All
58
+ reported by contacting the project team at support@smartcar.com. All
59
59
  complaints will be reviewed and investigated and will result in a response that
60
60
  is deemed necessary and appropriate to the circumstances. The project team is
61
61
  obligated to maintain confidentiality with regard to the reporter of an incident.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smartcar (1.0.0)
4
+ smartcar (1.0.3)
5
5
  oauth2 (~> 1.4)
6
6
 
7
7
  GEM
@@ -22,7 +22,7 @@ GEM
22
22
  multi_json (~> 1.3)
23
23
  multi_xml (~> 0.5)
24
24
  rack (>= 1.2, < 3)
25
- rack (2.2.2)
25
+ rack (2.2.3)
26
26
  rake (12.3.3)
27
27
  redcarpet (3.5.0)
28
28
  rspec (3.9.0)
@@ -50,7 +50,7 @@ DEPENDENCIES
50
50
  bundler (~> 2.0)
51
51
  byebug (~> 11.0)
52
52
  rake (~> 12.3, >= 12.3.3)
53
- redcarpet
53
+ redcarpet (~> 3.5.0)
54
54
  rspec (~> 3.0)
55
55
  selenium-webdriver (~> 3.142)
56
56
  smartcar!
data/README.md CHANGED
@@ -123,8 +123,18 @@ Example Usage for oAuth -
123
123
 
124
124
  ## Development
125
125
 
126
- To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
126
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and create a git tag for the version, push git commits and tags. When merging to master if it finds the tag it will deploy to rubygems automatically
127
127
 
128
+ To run tests, make sure you have the env variables setup for client id and secret.
129
+ ```shell
130
+ export INTEGRATION_CLIENT_ID=<client id>
131
+ export INTEGRATION_CLIENT_SECRET=<client secret>
132
+ ```
133
+
134
+ Tests can be run using either default rake command OR specific rspec command.
135
+ ```ruby
136
+ bundle exec rake spec
137
+ ```
128
138
  ## Contributing
129
139
 
130
140
  To contribute, please:
@@ -1,83 +1,91 @@
1
1
  module Smartcar
2
- # Oauth class to take care of the Oauth 2.0 with genomelink APIs
2
+ # Oauth class to take care of the Oauth 2.0 with Smartcar APIs
3
3
  #
4
4
  class Oauth < Base
5
5
  extend Utils
6
- class << self
7
- # Generate the OAuth authorization URL.
8
- #
9
- # By default users are not shown the permission dialog if they have already
10
- # approved the set of scopes for this application. The application can elect
11
- # to always display the permissions dialog to the user by setting
12
- # approval_prompt to `force`.
13
- #
14
- # @param options [Hash]
15
- # @option options[:state] [String] - OAuth state parameter passed to the
16
- # redirect uri. This parameter may be used for identifying the user who
17
- # initiated the request.
18
- # @option options[:test_mode] [Boolean] - Setting this to 'true' runs it in test mode.
19
- # @option options[:force_prompt] [Boolean] - Setting `force_prompt` to
20
- # `true` will show the permissions approval screen on every authentication
21
- # attempt, even if the user has previously consented to the exact scope of
22
- # permissions.
23
- # @option options[:make] [String] - `make' is an optional parameter that allows
24
- # users to bypass the car brand selection screen.
25
- # For a complete list of supported makes, please see our
26
- # [API Reference](https://smartcar.com/docs/api#authorization) documentation.
27
- # @option options[:scope] [Array of Strings] - array of scopes that specify what the user can access
28
- # EXAMPLE : ['read_odometer', 'read_vehicle_info', 'required:read_location']
29
- # For further details refer to https://smartcar.com/docs/guides/scope/
30
- #
31
- # @return [String] URL where user needs to be redirected for authorization
32
- def authorization_url(options)
33
- parameters = {
34
- redirect_uri: get_config('REDIRECT_URI'),
35
- approval_prompt: options[:force_prompt] ? FORCE : AUTO,
36
- mode: options[:test_mode] ? TEST : LIVE,
37
- response_type: CODE
38
- }
39
- parameters[:scope] = options[:scope].join(' ') if options[:scope]
40
- %I(state make).each do |parameter|
41
- parameters[:parameter] = options[:parameter] unless options[:parameter].nil?
42
- end
6
+ # By default users are not shown the permission dialog if they have already
7
+ # approved the set of scopes for this application. The application can elect
8
+ # to always display the permissions dialog to the user by setting
9
+ # approval_prompt to `force`.
10
+ #
11
+ # @param options [Hash]
12
+ # @option options[:client_id] [String] - Client ID, if not passed fallsback to ENV['CLIENT_ID']
13
+ # @option options[:client_secret] [String] - Client Secret, if not passed fallsback to ENV['CLIENT_SECRET']
14
+ # @option options[:redirect_uri] [String] - Redirect URI, if not passed fallsback to ENV['REDIRECT_URI']
15
+ # @option options[:state] [String] - OAuth state parameter passed to the
16
+ # redirect uri. This parameter may be used for identifying the user who
17
+ # initiated the request.
18
+ # @option options[:test_mode] [Boolean] - Setting this to 'true' runs it in test mode.
19
+ # @option options[:force_prompt] [Boolean] - Setting `force_prompt` to
20
+ # `true` will show the permissions approval screen on every authentication
21
+ # attempt, even if the user has previously consented to the exact scope of
22
+ # permissions.
23
+ # @option options[:make] [String] - `make' is an optional parameter that allows
24
+ # users to bypass the car brand selection screen.
25
+ # For a complete list of supported makes, please see our
26
+ # [API Reference](https://smartcar.com/docs/api#authorization) documentation.
27
+ # @option options[:scope] [Array of Strings] - array of scopes that specify what the user can access
28
+ # EXAMPLE : ['read_odometer', 'read_vehicle_info', 'required:read_location']
29
+ # For further details refer to https://smartcar.com/docs/guides/scope/
30
+ #
31
+ # @return [Smartcar::Oauth] Returns a Smartcar::Oauth Object that has other methods
32
+ def initialize(options)
33
+ @redirect_uri = options[:redirect_uri] || get_config('REDIRECT_URI')
34
+ @client_id = options[:client_id] || get_config('CLIENT_ID')
35
+ @client_secret = options[:client_secret] || get_config('CLIENT_SECRET')
43
36
 
44
- client.auth_code.authorize_url(parameters)
37
+ @auth_parameters = {
38
+ redirect_uri: @redirect_uri,
39
+ approval_prompt: options[:force_prompt] ? FORCE : AUTO,
40
+ mode: options[:test_mode] ? TEST : LIVE,
41
+ response_type: CODE
42
+ }
43
+ @auth_parameters[:scope] = options[:scope].join(' ') if options[:scope]
44
+ %I(state make).each do |parameter|
45
+ parameters[:parameter] = options[:parameter] unless options[:parameter].nil?
45
46
  end
47
+ end
46
48
 
47
- # [get_token description]
48
- # @param auth_code [String] This is the code that is returned after use r
49
- # visits and authorizes on the authorization URL.
50
- #
51
- # @return [Hash] Hash of token, refresh token, expiry info and token type
52
- def get_token(auth_code)
53
- client.auth_code
54
- .get_token(
55
- auth_code,
56
- redirect_uri: get_config('REDIRECT_URI')
57
- ).to_hash
58
- end
49
+ # Generate the OAuth authorization URL.
50
+ #
51
+ # @return [String] Authorization URL string
52
+ def authorization_url
53
+ client.auth_code.authorize_url(@auth_parameters)
54
+ end
59
55
 
60
- # [refresh_token description]
61
- # @param token_hash [Hash] This is the hash that is returned with the
62
- # get_token method
63
- #
64
- # @return [Hash] Hash of token, refresh token, expiry info and token type
65
- def refresh_token(token_hash)
66
- token_object = OAuth2::AccessToken.from_hash(client, token_hash)
67
- token_object = token_object.refresh!
68
- token_object.to_hash
69
- end
56
+ # Generates the tokens hash using the code returned in oauth process.
57
+ # @param auth_code [String] This is the code that is returned after user
58
+ # visits and authorizes on the authorization URL.
59
+ #
60
+ # @return [Hash] Hash of token, refresh token, expiry info and token type
61
+ def get_token(auth_code)
62
+ client.auth_code
63
+ .get_token(
64
+ auth_code,
65
+ redirect_uri: @redirect_uri
66
+ ).to_hash
67
+ end
70
68
 
71
- private
72
- # gets the Oauth Client object
73
- #
74
- # @return [OAuth2::Client] A Oauth Client object.
75
- def client
76
- @client ||= OAuth2::Client.new( get_config('CLIENT_ID'),
77
- get_config('CLIENT_SECRET'),
78
- :site => OAUTH_PATH
79
- )
80
- end
69
+ # Refreshing the access token
70
+ # @param token_hash [Hash] This is the hash that is returned with the
71
+ # get_token method
72
+ #
73
+ # @return [Hash] Hash of token, refresh token, expiry info and token type
74
+ def refresh_token(token_hash)
75
+ token_object = OAuth2::AccessToken.from_hash(client, token_hash)
76
+ token_object = token_object.refresh!
77
+ token_object.to_hash
78
+ end
79
+
80
+ private
81
+ # gets the Oauth Client object
82
+ #
83
+ # @return [OAuth2::Client] A Oauth Client object.
84
+ def client
85
+ @client ||= OAuth2::Client.new( @client_id,
86
+ @client_secret,
87
+ :site => OAUTH_PATH
88
+ )
81
89
  end
82
90
  end
83
91
  end
@@ -1,4 +1,4 @@
1
1
  module Smartcar
2
2
  # Gem current version number
3
- VERSION = "1.0.2"
3
+ VERSION = "1.0.3"
4
4
  end
@@ -12,7 +12,10 @@ Gem::Specification.new do |spec|
12
12
  spec.summary = %q{Ruby Gem to access smartcar APIs (https://smartcar.com/docs/)}
13
13
  spec.description = %q{This is a ruby gem to access the smartcar APIs. It includes the API classes and the OAuth system.}
14
14
  spec.license = "MIT"
15
- spec.metadata = { "source_code_uri" => "https://github.com/smartcar/ruby-sdk" }
15
+ spec.metadata = {
16
+ "source_code_uri" => "https://github.com/smartcar/ruby-sdk",
17
+ "documentation_uri" => "https://www.rubydoc.info/gems/smartcar",
18
+ }
16
19
  spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
17
20
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
21
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smartcar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ashwin Subramanian
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-12 00:00:00.000000000 Z
11
+ date: 2020-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -157,6 +157,7 @@ licenses:
157
157
  - MIT
158
158
  metadata:
159
159
  source_code_uri: https://github.com/smartcar/ruby-sdk
160
+ documentation_uri: https://www.rubydoc.info/gems/smartcar
160
161
  post_install_message:
161
162
  rdoc_options: []
162
163
  require_paths:
@@ -172,7 +173,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
172
173
  - !ruby/object:Gem::Version
173
174
  version: '0'
174
175
  requirements: []
175
- rubygems_version: 3.0.6
176
+ rubygems_version: 3.1.2
176
177
  signing_key:
177
178
  specification_version: 4
178
179
  summary: Ruby Gem to access smartcar APIs (https://smartcar.com/docs/)