jwtgen 0.1.0 → 0.1.1

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: 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