jwtgen 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 224b28deabca3922c28dae87b8aad6178a19d3a6
4
- data.tar.gz: 4fbdb566fc9589bdca81fdc73ece47f48f28da74
3
+ metadata.gz: c513f1d42f21c55e5f6a5ba526ba3206899461c1
4
+ data.tar.gz: d0f48c7e175acfa4c255929f176466852d825153
5
5
  SHA512:
6
- metadata.gz: a31838e3adcc6afd8c62eda12c97d90d94280a72f6d2912a63bb8bb2bb80e4742ec060351a90da7b1697b84248f49dfff81c66a18763c5c2d089d42fce46aa4c
7
- data.tar.gz: 395b265ece9c25e596e6d20cf056b7a11d2d2e795eff4117395560a19d070bf18753f18216fbdf0bc378b7b65352a11968001fe1f7db901db4d8b477cecb5887
6
+ metadata.gz: 3daadfe06fc15081791c035f6da9aa44ce9824741ce2daf4fdddeda1f320ffffe3c5c40ce50db4b5ab9f1475fe5a44769c1a1ba7b3a70300a3eab3601c22d395
7
+ data.tar.gz: 36e2676787c48c632ffe7f96d353c32ba0d53711fd564b695d748aa9f523580585bec4cba8c9030fd02d7a41cc93f1370ab98a743553f0bc72e531b91f007ee0
data/README.md CHANGED
@@ -18,18 +18,17 @@ Check dependencies of [Ruby Clipboard](https://github.com/janlelis/clipboard/)
18
18
 
19
19
  Basic usage without encryption:
20
20
 
21
- ```sh
22
- $ jwtgen --payload user_id=1234,email=ted.crilly@example.com
23
- The JWT has been copied to your clipboard!
24
- ```
21
+ $ jwtgen user_id 1234 email ted.crilly@example.com
22
+ The JWT has been copied to your clipboard!
25
23
 
26
24
  Provide HMAC algorithm and secret key:
27
25
 
28
- ```sh
29
- $ jwtgen --key my$ecretK3y --algorithm HS512 \
30
- --payload user_id=9876,email=dougal.mcguire@example.com,first_name=Dougal,last_name=McGuire
31
- The JWT has been copied to your clipboard!
32
- ```
26
+ $ jwtgen --key my$ecretK3y --algorithm HS512 \
27
+ user_id 1234 \
28
+ email dougal.mcguire@example.com \
29
+ name "Dougal McGuire" \
30
+ role Manager
31
+ The JWT has been copied to your clipboard!
33
32
 
34
33
  ## Development
35
34
 
data/exe/jwtgen CHANGED
@@ -4,14 +4,9 @@ require 'optparse'
4
4
  options = {}
5
5
  OptionParser.new do |opts|
6
6
  ALGORITHMS = %w(HS256 HS512256 HS384 HS512)
7
- opts.banner = 'Usage: jwtgen [options]'
8
-
9
- opts.on('--payload key1=value1,key2=value2,key3=value3', Array, 'JWT payload. Required keys: `user_id` and `email`.') do |payload|
10
- options[:payload] = payload
11
- end
12
- opts.on('--separator SEPARATOR', 'Payload key-value separator (default "=")') do |separator|
13
- options[:separator] = separator
14
- end
7
+ opts.banner = 'Usage: jwtgen [options] [arguments]
8
+ arguments JWT payload key-value pairs, e.g. key1 value1 key2 value2 key3 value3
9
+ Required inputs (keys) are user_id and email.'
15
10
  opts.on('--key KEY', 'HMAC secret key') do |key|
16
11
  options[:key] = key
17
12
  end
@@ -20,6 +15,9 @@ OptionParser.new do |opts|
20
15
  end
21
16
  end.parse!
22
17
 
18
+ ARGV << '' if ARGV.size % 2 == 1
19
+ options[:payload] = Hash[*ARGV].inject({}) { |acc,(k,v)| acc[k.to_sym] = v; acc }
20
+
23
21
  require 'jwtgen'
24
22
  require 'clipboard'
25
23
 
data/lib/jwtgen.rb CHANGED
@@ -5,8 +5,8 @@ class Jwtgen
5
5
  EMAIL_REGEXP = /\A[^@]+@([^@\.]+\.)+[^@\.]+\z/
6
6
 
7
7
  def initialize(opts)
8
- raise ArgumentError, 'Option `payload` is required' unless opts[:payload] && opts[:payload].is_a?(Array)
9
- normalize_and_assign_payload(opts)
8
+ @payload = opts[:payload]
9
+ raise ArgumentError, 'Option `payload` is required' unless @payload && @payload.is_a?(Hash)
10
10
  raise ArgumentError, 'Payload key `user_id` is required' unless @payload[:user_id] && @payload[:user_id] != ''
11
11
  raise ArgumentError, 'Payload key `email` is required' unless @payload[:email] && @payload[:email] != ''
12
12
  raise ArgumentError, 'Email is invalid' unless @payload[:email] =~ EMAIL_REGEXP
@@ -17,14 +17,4 @@ class Jwtgen
17
17
  def encode
18
18
  JWT.encode(@payload, @key, @algorithm)
19
19
  end
20
-
21
- private
22
- def normalize_and_assign_payload(opts)
23
- sep = opts.fetch(:separator, '=')
24
- @payload = opts[:payload].reduce({}) do |acc, kv|
25
- k, v = kv.split(sep)
26
- acc[k.to_sym] = v
27
- acc
28
- end
29
- end
30
20
  end
@@ -1,3 +1,3 @@
1
1
  class Jwtgen
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jwtgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oleksandr Avoyants