decode_this 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +5 -0
- data/Rakefile +2 -0
- data/Readme.md +12 -4
- data/lib/decode_this/version.rb +1 -1
- data/lib/decode_this.rb +7 -6
- data/spec/decode_this_spec.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbc084f14c781c764c79bb29303fe62c129d218e
|
4
|
+
data.tar.gz: acf43fdffb4140b66d4e12f7096cb091419275a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e49ae19c546f9d03b0bf958d56a5d0aa8f337d854757dee6be506dea702b83d0701ac43d52c90d37c5e0462448928f11c0f81679cad52fbd2c50fbeac7775e21
|
7
|
+
data.tar.gz: 6bbf93a100920d91b4a4fc4202586f40487ee902f30279668466e33de424d86876e4540ae473b89867d1904ebf6f7ff9b6d2f183f88ca66ed54614947576e7f7
|
data/.travis.yml
ADDED
data/Rakefile
CHANGED
data/Readme.md
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# DecodeThis
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/myxaluch/decode_this.svg?branch=master)](https://travis-ci.org/myxaluch/decode_this)
|
4
|
+
|
3
5
|
Simple decoder JWT token by given key
|
4
6
|
|
5
7
|
## Installation
|
@@ -23,14 +25,20 @@ Or install it yourself as:
|
|
23
25
|
Configuration file scheme:
|
24
26
|
```
|
25
27
|
test:
|
26
|
-
|
28
|
+
algorithm: 'RS256'
|
27
29
|
path: 'paht/to/keys'
|
28
30
|
```
|
29
31
|
|
30
32
|
```ruby
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
payload = {
|
34
|
+
'field1' => 'foo',
|
35
|
+
'field2' => 'bar'
|
36
|
+
}
|
37
|
+
jwt_token = JWT.encode(payload, private_token, true, algorithm: algorithm)
|
38
|
+
...
|
39
|
+
decoded_token = DecodeThis.decode(jwt_token, config_file: '/path/to/config.yml', env: :my_env, logger: logger)
|
40
|
+
token['field1'] = 'foo'
|
41
|
+
token['field2'] = 'bar'
|
34
42
|
```
|
35
43
|
|
36
44
|
## Contributing
|
data/lib/decode_this/version.rb
CHANGED
data/lib/decode_this.rb
CHANGED
@@ -8,25 +8,26 @@ class DecodeThis
|
|
8
8
|
ConfigFileNotFoundError = Class.new(RuntimeError)
|
9
9
|
DecodeError = Class.new(RuntimeError)
|
10
10
|
|
11
|
-
attr_reader :token, :config_file, :env
|
11
|
+
attr_reader :token, :config_file, :env, :logger
|
12
12
|
|
13
|
-
def initialize(token, config_file:, env:)
|
13
|
+
def initialize(token, config_file:, env:, logger: nil)
|
14
14
|
@token = token
|
15
15
|
@config_file = config_file
|
16
16
|
@env = env
|
17
|
+
@logger = logger
|
17
18
|
end
|
18
19
|
|
19
|
-
def
|
20
|
+
def decode
|
20
21
|
JWT.decode(token, public_key, true, algorithm: algorithm).first
|
21
22
|
|
22
23
|
rescue JWT::ExpiredSignature => err
|
23
|
-
logger.warn("Expired JWT token #{err.class} - #{err.message}")
|
24
|
+
logger.warn("Expired JWT token #{err.class} - #{err.message}") if logger
|
24
25
|
raise DecodeError
|
25
26
|
rescue JWT::VerificationError => err
|
26
|
-
logger.warn("Can't verify JWT token #{err.class} - #{err.message}")
|
27
|
+
logger.warn("Can't verify JWT token #{err.class} - #{err.message}") if logger
|
27
28
|
raise DecodeError
|
28
29
|
rescue JWT::DecodeError => err
|
29
|
-
logger.warn("Can't decode JWT token '#{jwt_token}' #{err.class} - #{err.message}")
|
30
|
+
logger.warn("Can't decode JWT token '#{jwt_token}' #{err.class} - #{err.message}") if logger
|
30
31
|
raise DecodeError
|
31
32
|
end
|
32
33
|
|
data/spec/decode_this_spec.rb
CHANGED
@@ -6,7 +6,7 @@ RSpec.describe DecodeThis do
|
|
6
6
|
let(:payload) { { field: 'foobar' } }
|
7
7
|
let(:token) { encode(payload) }
|
8
8
|
|
9
|
-
subject(:decoded_token) { described_class.new(token, config_file: config_path, env: :test).
|
9
|
+
subject(:decoded_token) { described_class.new(token, config_file: config_path, env: :test).decode }
|
10
10
|
|
11
11
|
it 'decodes given token correctly' do
|
12
12
|
payload.keys.each do |key|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decode_this
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sasha Kotov
|
@@ -18,6 +18,7 @@ extra_rdoc_files: []
|
|
18
18
|
files:
|
19
19
|
- ".gitignore"
|
20
20
|
- ".rspec"
|
21
|
+
- ".travis.yml"
|
21
22
|
- Gemfile
|
22
23
|
- Rakefile
|
23
24
|
- Readme.md
|