oauth_token_verifier 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: b189b60e84201d8ad6e95201e22be0f3b61e65a7
4
- data.tar.gz: 5088e0b935db3bc6b084192ee1ce7fcc8b0ba884
3
+ metadata.gz: 5c9354ca786fb7678c32477020f6957561457639
4
+ data.tar.gz: 94c29354f7ff28eb2cb5086e97f34c9aca82141a
5
5
  SHA512:
6
- metadata.gz: 71cff4613c3e8c3182e809b04904d6c9967067c305bdd565707b9369757dd3b144a574352c36d5a88b425a57e7ca54b2f880a0bd730c8fc8f3c05d318076a6c2
7
- data.tar.gz: b9100cb88e30830ca990077bc6b78259fd5ba962b2aa64639e94e436a93eec5858e86c362714818d7abded7e432b921f86ef89103b0088063759d41dd2970b06
6
+ metadata.gz: 9dd5ba7c7fd9c47404366e85bc1eddfe60395af9db2c97e57e07a027d8983afd6a26901301af44c2fea23519e1ea31bdd97a47e045bb2cee4ddfd83d381e55e1
7
+ data.tar.gz: 1d50eb2330d884ef0377a8669db98b3573b3953354aba4fc43a7e0c3fc2d216a5a23b9c6b5f31cc93e3f139969e57250100a452cb55f13d1b0a6a7bf18643da7
data/.gitignore CHANGED
@@ -10,3 +10,4 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+ .byebug_history
data/.rubocop.yml ADDED
@@ -0,0 +1,45 @@
1
+ # Offense count: 1
2
+ # Configuration parameters: AllowSafeAssignment.
3
+ Lint/AssignmentInCondition:
4
+ Enabled: false
5
+
6
+ # Offense count: 2
7
+ Lint/HandleExceptions:
8
+ Enabled: false
9
+
10
+ # Offense count: 1
11
+ Metrics/AbcSize:
12
+ Max: 20
13
+
14
+ # Offense count: 84
15
+ # Configuration parameters: AllowURI, URISchemes.
16
+ Metrics/LineLength:
17
+ Max: 120
18
+
19
+ # Offense count: 1
20
+ # Configuration parameters: CountComments.
21
+ Metrics/MethodLength:
22
+ Max: 21
23
+
24
+ # Offense count: 6
25
+ # Configuration parameters: EnforcedStyle, SupportedStyles.
26
+ Style/ClassAndModuleChildren:
27
+ Enabled: false
28
+
29
+ # Offense count: 19
30
+ Style/Documentation:
31
+ Enabled: false
32
+
33
+ AllCops:
34
+ TargetRubyVersion: 2.2
35
+ Exclude:
36
+ - bin/**/*
37
+ - config/**/*
38
+ - db/**/*
39
+ - vendor/**/*
40
+ - Gemfile
41
+ - Gemfile.lock
42
+ - Guardfile
43
+
44
+ Rails:
45
+ Enabled: true
data/.travis.yml CHANGED
@@ -1,8 +1,19 @@
1
1
  sudo: false
2
2
  language: ruby
3
- rvm:
4
- - 2.3.3
5
- before_install: gem install bundler -v 1.15.1
3
+ matrix:
4
+ fast_finish: true
5
+ include:
6
+ - rvm: ruby-head
7
+ - rvm: jruby-9.1.0.0
8
+ - rvm: 2.5.0
9
+ - rvm: 2.4.1
10
+ - rvm: 2.3.1
11
+ - rvm: 2.2.0
12
+ allow_failures:
13
+ - rvm: ruby-head
14
+ - rvm: jruby-9.1.0.0
15
+
16
+ before_install: gem install bundler -v 1.16.0
6
17
  install: bundle install --jobs=3 --retry=3
7
18
  script:
8
19
  - bundle exec rspec
data/CHANGELOG.md CHANGED
@@ -1,7 +1,19 @@
1
1
  Changelog
2
2
  ============
3
3
 
4
+ #### 0.1.5
5
+ - added version parameter reflecting recent vk.com API changes
6
+
7
+ #### 0.1.4
8
+ - minor fixes, travis integration added
9
+
10
+ #### 0.1.3
11
+ - Remove activesupport specifics
12
+
4
13
  #### 0.1.2
5
14
  - Explicitly require net/http
6
15
 
16
+ #### 0.1.1
17
+ - Basic API interaction logic
18
+
7
19
 
@@ -0,0 +1,61 @@
1
+ ## Code of Conduct
2
+
3
+ ### Our Pledge
4
+
5
+ In the interest of fostering an open and welcoming environment, we as
6
+ contributors and maintainers pledge to making participation in our project and
7
+ our community a harassment-free experience for everyone, regardless of age, body
8
+ size, disability, ethnicity, gender identity and expression, level of experience,
9
+ nationality, personal appearance, race, religion, or sexual identity and
10
+ orientation.
11
+
12
+ ### Our Standards
13
+
14
+ Examples of behavior that contributes to creating a positive environment
15
+ include:
16
+
17
+ * Using welcoming and inclusive language
18
+ * Being respectful of differing viewpoints and experiences
19
+ * Gracefully accepting constructive criticism
20
+ * Focusing on what is best for the community
21
+ * Showing empathy towards other community members
22
+
23
+ Examples of unacceptable behavior by participants include:
24
+
25
+ * The use of sexualized language or imagery and unwelcome sexual attention or
26
+ advances
27
+ * Trolling, insulting/derogatory comments, and personal or political attacks
28
+ * Public or private harassment
29
+ * Publishing others' private information, such as a physical or electronic
30
+ address, without explicit permission
31
+ * Other conduct which could reasonably be considered inappropriate in a
32
+ professional setting
33
+
34
+ ### Our Responsibilities
35
+
36
+ Project maintainers are responsible for clarifying the standards of acceptable
37
+ behavior and are expected to take appropriate and fair corrective action in
38
+ response to any instances of unacceptable behavior.
39
+
40
+ Project maintainers have the right and responsibility to remove, edit, or
41
+ reject comments, commits, code, wiki edits, issues, and other contributions
42
+ that are not aligned to this Code of Conduct, or to ban temporarily or
43
+ permanently any contributor for other behaviors that they deem inappropriate,
44
+ threatening, offensive, or harmful.
45
+
46
+ ### Scope
47
+
48
+ This Code of Conduct applies both within project spaces and in public spaces
49
+ when an individual is representing the project or its community. Examples of
50
+ representing a project or community include using an official project e-mail
51
+ address, posting via an official social media account, or acting as an appointed
52
+ representative at an online or offline event. Representation of a project may be
53
+ further defined and clarified by project maintainers.
54
+
55
+ ### Attribution
56
+
57
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
58
+ available at [http://contributor-covenant.org/version/1/4][version]
59
+
60
+ [homepage]: http://contributor-covenant.org
61
+ [version]: http://contributor-covenant.org/version/1/4/
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,26 @@
1
+ ### Reporting issues
2
+
3
+ Please, provide further explanations to your issue:
4
+
5
+ - Expected behaviour
6
+
7
+ - Actual behaviour
8
+
9
+ - Steps to reproduce
10
+
11
+ Make sure to include as much information as possible. It's even better if you include test, showin failing scenario,
12
+ or all-in-one script to make easier to reproduce the bug.
13
+
14
+ ### Submitting a pull request
15
+
16
+ Key points when submitting a pull request:
17
+
18
+ - Add tests
19
+
20
+ - Update documentation
21
+
22
+ - Make all changes in feature branch, i.e. `feature/tg_integration`
23
+
24
+ - Make one pull request for each feature, don't include all in one pull request
25
+
26
+ - Maintain sensible commit history
data/README.md CHANGED
@@ -1,68 +1,146 @@
1
+ # OauthTokenVerifier
2
+
3
+ [![Gem Version](https://badge.fury.io/rb/oauth_token_verifier.svg)](https://badge.fury.io/rb/oauth_token_verifier)
1
4
  [![Build Status](https://travis-ci.org/Shkrt/oauth_token_verifier.svg?branch=master)](https://travis-ci.org/Shkrt/oauth_token_verifier)
5
+ [![Codacy Badge](https://api.codacy.com/project/badge/Grade/7458de9e473f4a7188f8b17cdf8806b8)](https://www.codacy.com/app/zxcgpppmnn/oauth_token_verifier?utm_source=github.com&utm_medium=referral&utm_content=Shkrt/oauth_token_verifier&utm_campaign=Badge_Grade)
2
6
 
3
- # OauthTokenVerifier
7
+ ## Motivation
8
+
9
+ This library's only responsibility is to verify oauth2 access tokens that have been obtained from third party.
10
+ No access tokens needed.
11
+
12
+ Real-world use case:
4
13
 
5
- This library helps to verify oauth2 access tokens that have been obtained from third party, i.e. mobile application.
14
+ - You have a mobile application, with users authenticating via oauth2 providers.
15
+
16
+ With the help of this library you can use oauth2 access tokens to validate the token, verify the user identity and map users' attributes to the custom attributes.
6
17
 
7
18
  Example of oauth2 flow using this library is shown below:
8
19
 
9
20
  ![alt text](https://github.com/Shkrt/oauth_token_verifier/raw/master/oauth2_flow.png "Flow example")
10
21
 
22
+ The depicted workflow consists of the following steps:
23
+
24
+ 1. User clicks OAuth login button at the mobile application interface
25
+
26
+ 2. User is being shown an authorization dialogue from OAuth provider, where he/she approves permissions to access account data
27
+
28
+ 3. Mobile application receives an access token from OAuth2 provider and immediately passes it to backend app
29
+
30
+ 4. Backend application receives the token and makes a request to the OAuth provider
31
+
32
+ 5. Backend application receives info from OAuth provider and does something with it - authenticates the user, creates the user, updates user's data.
33
+
11
34
  ## Installation
12
35
 
13
36
  install manually:
14
37
 
15
- `gem install oauth_token_verifier`
38
+ ```shell
39
+ gem install oauth_token_verifier
40
+ ```
16
41
 
17
- or using Gemfile:
42
+ or using Bundler:
18
43
 
19
- `gem 'oauth_token_verifier'`
44
+ ```ruby
45
+ # Gemfile
46
+
47
+ gem 'oauth_token_verifier'
48
+ ```
20
49
 
21
50
  ## Configuration
22
51
 
23
- ```
52
+ ```ruby
24
53
  OauthTokenVerifier.configure do |c|
25
54
  ...
26
55
  end
27
56
  ```
28
57
 
58
+ ##### Enabled providers
59
+
29
60
  You should configure enabled providers first, only three providers are supported by now
30
61
 
31
- ```
62
+ ```ruby
32
63
  c.enabled_providers = [:google, :facebook, :vk]
33
64
  ```
34
65
 
35
- then goes separate configuration for each provider
66
+ If you try to use the provider that is not in `enabled_providers` list, the `NoProviderFoundError` will be raised.
36
67
 
37
- ```
68
+ Then goes separate configuration for each provider
69
+
70
+ ##### name
71
+
72
+ Name, that will be returned in the resulting Struct. Basically, it's just a custom alias for provider. Each provider
73
+ will be given the default name if no alias provided.
74
+
75
+ ```ruby
38
76
  # provider name to be returned
39
- c.facebook.name = 'facebook'
77
+ c.facebook.name = 'fb'
40
78
  ```
41
79
 
42
- ```
80
+ ##### id_field
81
+
82
+ Id field from OAuth provider response, that will be used as unique id. The default values are `email` for `Google`,
83
+ `id` for `Facebook` and `uid` for `Vk`.
84
+
85
+ ```ruby
43
86
  # id field - this used to uniquely identify user
44
87
  c.facebook.id_field = 'id'
45
88
  ```
89
+ ##### fields_mapping
46
90
 
47
- mapping of other returned fields to arbitrary field names. By default, no fields parameter passed when querying a provider. Feel free to add any field supported by chosen provider
91
+ Mapping of other returned fields to arbitrary field names.
92
+ By default, no fields parameter passed when querying a provider. With this setting configured, the query parameter will
93
+ contain the additional parameters to query more information from OAuth provider.
94
+ Feel free to add any field supported by the chosen provider, but keeo in mind that not all the fields are available to
95
+ query without api tokens.
48
96
 
49
- ```
97
+ ```ruby
50
98
  c.facebook.fields_mapping = { first_name: :name }
51
99
 
52
100
  c.vk.name = 'vkontakte'
53
101
  c.vk.id_field = 'uid'
102
+
103
+ # here we map vk's sex field to gender, and photo_id field to avatar
54
104
  c.vk.fields_mapping = { sex: :gender, photo_id: :avatar }
55
105
 
56
106
  c.google.name = 'google'
57
107
  c.google.id_field = 'email'
58
108
  c.google.fields_mapping = { given_name: :first_name, picture: :avatar }
109
+ ```
110
+
111
+ ##### version
112
+
113
+ Version is a required parameter for VK provider. Default VK API version 3.0 is deprecated so it is
114
+ neccessary to pass `v` parameter explicitly for any API call to VK. Recommended API version is 5.0+.
115
+ Version `5.0` is configured in gem by default, but it's possible to override it:
59
116
 
117
+ ```ruby
118
+ c.vk.version = '5.73'
60
119
  ```
61
120
 
121
+
62
122
  ## Usage
63
123
 
64
- `include OauthTokenVerifier`
124
+ ```ruby
125
+ include OauthTokenVerifier
126
+ ```
127
+
128
+ ```ruby
129
+ verify(:google, token: 'some_very_long_unreadable_sequence_here')
130
+
131
+ ```
65
132
 
66
- `verify(:google, 'qweqweqwLKJNlknlknlk343=')`
133
+ The response will either return a struct, containing profile info fields, or raise an exception with error explanation:
67
134
 
68
- The response will either return a struct, containing profile info fields, or raise an exception with error explanation
135
+ ```ruby
136
+ => #<struct OauthTokenVerifier::Providers::Vk::BaseFields
137
+ uid=00010101010,
138
+ provider="vk",
139
+ info=#<struct first_name="John", last_name="Smith">>
140
+ ```
141
+
142
+ Example of error response:
143
+
144
+ ```ruby
145
+ OauthTokenVerifier::TokenVerifier::TokenCheckError: Invalid Value
146
+ ```
@@ -1,24 +1,24 @@
1
1
  module OauthTokenVerifier
2
2
  class Configuration
3
3
  attr_accessor :enabled_providers, :google, :vk, :facebook
4
- ProviderSettings = Struct.new(:fields_mapping, :name, :id_field)
4
+ ProviderSettings = Struct.new(:fields_mapping, :name, :id_field, :version)
5
5
 
6
6
  def initialize
7
7
  @enabled_providers = []
8
8
 
9
9
  @google = ProviderSettings.new({
10
- first_name: :given_name,
11
- last_name: :family_name
12
- }, 'google', 'email')
10
+ first_name: :given_name,
11
+ last_name: :family_name
12
+ }, 'google', 'email')
13
13
 
14
14
  @vk = ProviderSettings.new({
15
- first_name: :first_name,
16
- last_name: :last_name
17
- }, 'vk', 'uid')
15
+ first_name: :first_name,
16
+ last_name: :last_name
17
+ }, 'vk', 'uid', '5.0')
18
18
 
19
19
  @facebook = ProviderSettings.new({
20
- first_name: :name,
21
- }, 'facebook', 'id')
20
+ first_name: :name
21
+ }, 'facebook', 'id')
22
22
  end
23
23
  end
24
24
  end
@@ -1,50 +1,52 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module OauthTokenVerifier::Providers
4
- class Facebook
5
- BaseFields = Struct.new(:uid, :provider, :info)
6
-
7
- def initialize
8
- @data_fields = Struct.new(*config.fields_mapping.values)
9
- @request_fields = config.fields_mapping.keys.join(',')
10
- end
3
+ module OauthTokenVerifier
4
+ module Providers
5
+ class Facebook
6
+ BaseFields = Struct.new(:uid, :provider, :info)
7
+
8
+ def initialize
9
+ @data_fields = Struct.new(*config.fields_mapping.values)
10
+ @request_fields = config.fields_mapping.keys.join(',')
11
+ end
11
12
 
12
- def verify_token(context)
13
- uri = build_uri(context.token)
14
- response = check_response(uri)
15
- parse_response(response)
16
- end
13
+ def verify_token(context)
14
+ uri = build_uri(context.token)
15
+ response = check_response(uri)
16
+ parse_response(response)
17
+ end
17
18
 
18
- private
19
+ private
19
20
 
20
- def config
21
- OauthTokenVerifier.configuration.facebook
22
- end
21
+ def config
22
+ OauthTokenVerifier.configuration.facebook
23
+ end
23
24
 
24
- def build_uri(token)
25
- params = { access_token: token, fields: @request_fields }
26
- URI::HTTPS.build(host: 'graph.facebook.com',
27
- path: '/me',
28
- query: URI.encode_www_form(params))
29
- end
25
+ def build_uri(token)
26
+ params = { access_token: token, fields: @request_fields }
27
+ URI::HTTPS.build(host: 'graph.facebook.com',
28
+ path: '/me',
29
+ query: URI.encode_www_form(params))
30
+ end
30
31
 
31
- def check_response(uri)
32
- response = JSON.parse(Net::HTTP.get(uri))
33
- if error = response['error']
34
- raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error['message']
35
- else
36
- response
32
+ def check_response(uri)
33
+ response = JSON.parse(Net::HTTP.get(uri))
34
+ if error = response['error']
35
+ raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error['message']
36
+ else
37
+ response
38
+ end
37
39
  end
38
- end
39
40
 
40
- def parse_response(data)
41
- BaseFields.new(
42
- data[config.id_field],
43
- config.name,
44
- @data_fields.new(
45
- *data.values_at(*config.fields_mapping.keys.map(&:to_s))
41
+ def parse_response(data)
42
+ BaseFields.new(
43
+ data[config.id_field],
44
+ config.name,
45
+ @data_fields.new(
46
+ *data.values_at(*config.fields_mapping.keys.map(&:to_s))
47
+ )
46
48
  )
47
- )
49
+ end
48
50
  end
49
51
  end
50
52
  end
@@ -1,49 +1,51 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module OauthTokenVerifier::Providers
4
- class Google
5
- BaseFields = Struct.new(:uid, :provider, :info)
3
+ module OauthTokenVerifier
4
+ module Providers
5
+ class Google
6
+ BaseFields = Struct.new(:uid, :provider, :info)
6
7
 
7
- def initialize
8
- @data_fields = Struct.new(*config.fields_mapping.values)
9
- end
8
+ def initialize
9
+ @data_fields = Struct.new(*config.fields_mapping.values)
10
+ end
10
11
 
11
- def verify_token(context)
12
- uri = build_uri(context.token)
13
- response = check_response(uri)
14
- parse_response(response)
15
- end
12
+ def verify_token(context)
13
+ uri = build_uri(context.token)
14
+ response = check_response(uri)
15
+ parse_response(response)
16
+ end
16
17
 
17
- private
18
+ private
18
19
 
19
- def config
20
- OauthTokenVerifier.configuration.google
21
- end
20
+ def config
21
+ OauthTokenVerifier.configuration.google
22
+ end
22
23
 
23
- def build_uri(token)
24
- params = { id_token: token }
25
- URI::HTTPS.build(host: 'www.googleapis.com',
26
- path: '/oauth2/v3/tokeninfo',
27
- query: URI.encode_www_form(params))
28
- end
24
+ def build_uri(token)
25
+ params = { id_token: token }
26
+ URI::HTTPS.build(host: 'www.googleapis.com',
27
+ path: '/oauth2/v3/tokeninfo',
28
+ query: URI.encode_www_form(params))
29
+ end
29
30
 
30
- def check_response(uri)
31
- response = JSON.parse(Net::HTTP.get(uri))
32
- if error = response['error_description']
33
- raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error
34
- else
35
- response
31
+ def check_response(uri)
32
+ response = JSON.parse(Net::HTTP.get(uri))
33
+ if error = response['error_description']
34
+ raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error
35
+ else
36
+ response
37
+ end
36
38
  end
37
- end
38
39
 
39
- def parse_response(data)
40
- BaseFields.new(
41
- data[config.id_field],
42
- config.name,
43
- @data_fields.new(
44
- *data.values_at(*config.fields_mapping.keys.map(&:to_s))
40
+ def parse_response(data)
41
+ BaseFields.new(
42
+ data[config.id_field],
43
+ config.name,
44
+ @data_fields.new(
45
+ *data.values_at(*config.fields_mapping.keys.map(&:to_s))
46
+ )
45
47
  )
46
- )
48
+ end
47
49
  end
48
50
  end
49
51
  end
@@ -1,50 +1,53 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module OauthTokenVerifier::Providers
4
- class Vk
5
- BaseFields = Struct.new(:uid, :provider, :info)
6
-
7
- def initialize
8
- @data_fields = Struct.new(*config.fields_mapping.values)
9
- @request_fields = config.fields_mapping.keys.join(',')
10
- end
3
+ module OauthTokenVerifier
4
+ module Providers
5
+ class Vk
6
+ BaseFields = Struct.new(:uid, :provider, :info)
7
+
8
+ def initialize
9
+ @data_fields = Struct.new(*config.fields_mapping.values)
10
+ @request_fields = config.fields_mapping.keys.join(',')
11
+ @version = config.version
12
+ end
11
13
 
12
- def verify_token(context)
13
- uri = build_uri(context.token)
14
- response = check_response(uri)
15
- parse_response(response)
16
- end
14
+ def verify_token(context)
15
+ uri = build_uri(context.token)
16
+ response = check_response(uri)
17
+ parse_response(response)
18
+ end
17
19
 
18
- private
20
+ private
19
21
 
20
- def config
21
- OauthTokenVerifier.configuration.vk
22
- end
22
+ def config
23
+ OauthTokenVerifier.configuration.vk
24
+ end
23
25
 
24
- def build_uri(token)
25
- params = { access_token: token, fields: @request_fields }
26
- URI::HTTPS.build(host: 'api.vk.com',
27
- path: '/method/users.get',
28
- query: URI.encode_www_form(params))
29
- end
26
+ def build_uri(token)
27
+ params = { access_token: token, fields: @request_fields, v: @version }
28
+ URI::HTTPS.build(host: 'api.vk.com',
29
+ path: '/method/users.get',
30
+ query: URI.encode_www_form(params))
31
+ end
30
32
 
31
- def check_response(uri)
32
- response = JSON.parse(Net::HTTP.get(uri))
33
- if error = response['error']
34
- raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error['error_msg']
35
- else
36
- response['response'].first
33
+ def check_response(uri)
34
+ response = JSON.parse(Net::HTTP.get(uri))
35
+ if error = response['error']
36
+ raise OauthTokenVerifier::TokenVerifier::TokenCheckError, error['error_msg']
37
+ else
38
+ response['response'].first
39
+ end
37
40
  end
38
- end
39
41
 
40
- def parse_response(data)
41
- BaseFields.new(
42
- data[config.id_field],
43
- config.name,
44
- @data_fields.new(
45
- *data.values_at(*config.fields_mapping.keys.map(&:to_s))
42
+ def parse_response(data)
43
+ BaseFields.new(
44
+ data[config.id_field],
45
+ config.name,
46
+ @data_fields.new(
47
+ *data.values_at(*config.fields_mapping.keys.map(&:to_s))
48
+ )
46
49
  )
47
- )
50
+ end
48
51
  end
49
52
  end
50
53
  end
@@ -1,3 +1,3 @@
1
1
  module OauthTokenVerifier
2
- VERSION = '0.1.4'.freeze
2
+ VERSION = '0.1.5'.freeze
3
3
  end
@@ -1,5 +1,3 @@
1
- # coding: utf-8
2
-
3
1
  lib = File.expand_path('../lib', __FILE__)
4
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
3
  require 'oauth_token_verifier/version'
@@ -12,7 +10,7 @@ Gem::Specification.new do |spec|
12
10
 
13
11
  spec.summary = 'Oauth2 token verification'
14
12
  spec.description = 'This library provides possibility of verifying oauth2 access tokens obtained from third party'
15
- spec.homepage = "https://github.com/Shkrt/oauth_token_verifier"
13
+ spec.homepage = 'https://github.com/Shkrt/oauth_token_verifier'
16
14
  spec.license = 'MIT'
17
15
 
18
16
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -23,6 +21,7 @@ Gem::Specification.new do |spec|
23
21
  spec.require_paths = ['lib']
24
22
 
25
23
  spec.add_development_dependency 'bundler', '~> 1.15'
24
+ spec.add_development_dependency 'byebug'
26
25
  spec.add_development_dependency 'rake', '~> 10.0'
27
26
  spec.add_development_dependency 'rspec', '~> 3.0'
28
27
  spec.add_development_dependency 'webmock'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oauth_token_verifier
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shkrt
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-07-31 00:00:00.000000000 Z
11
+ date: 2018-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.15'
27
+ - !ruby/object:Gem::Dependency
28
+ name: byebug
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rake
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -76,8 +90,11 @@ extra_rdoc_files: []
76
90
  files:
77
91
  - ".gitignore"
78
92
  - ".rspec"
93
+ - ".rubocop.yml"
79
94
  - ".travis.yml"
80
95
  - CHANGELOG.md
96
+ - CODE_OF_CONDUCT.md
97
+ - CONTRIBUTING.md
81
98
  - Gemfile
82
99
  - LICENSE.txt
83
100
  - README.md