secretkey 1.0.0 → 1.1.0

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: 0d3827cfd26d2c9b021cd4a6df475d3edc1ec12b
4
- data.tar.gz: c3227b323e0f9ae0f23d79c99e3a1a169c7c9878
3
+ metadata.gz: 0badd0f70b5fd49d957918cfe2dcf5af65593288
4
+ data.tar.gz: ce0587fcae07f03a4a7e8433812d7976bf8e9304
5
5
  SHA512:
6
- metadata.gz: d10f399ab351e2ad9430304c8913846a84806abe914cf9ff74930ca9d210111c8f4d6823d0f7538ed5af1dd0a4b3c66c24b88f800a91c8fa72b2f1d3793f3429
7
- data.tar.gz: 4524454f3564872d422e1f0c6106f755ac975eba2bb6d405cdf94b7b28838220f326b84933909f44dffe8432cc4a9d652c523bcaaf50c09b001ccb3e5a27e6d8
6
+ metadata.gz: d5a6bea7288a1b38a7f6b5afb02a149a733d2edd87f2a0847d41f6b61285659dddd703298826c2de8a5e348e1188328c0f6c5b6d647faafbedafd86250635520
7
+ data.tar.gz: 219a23ec4cb8543a1bbc06a8e0568852e15973b618ddc412741ba7973f8532b9c3cf66fa792f309d45267f087a03d5f82d31501668d971341549675ac2504073
data/.gitignore CHANGED
@@ -1,2 +1,2 @@
1
1
  coverage/
2
- *.gem
2
+ *.gem
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- # Specify your gem's dependencies in activebi.gemspec
4
3
  gemspec
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- secretkey (1.0.0)
4
+ secretkey (1.1.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/Readme.md CHANGED
@@ -20,7 +20,19 @@ Or install it yourself as:
20
20
 
21
21
  To generate a token, simply run this method:
22
22
 
23
- SecretKey::SecretKey.generate_token(key, secret, timestamp)
23
+ secretkey = SecretKey::SecretKey.new(key, secret)
24
+ token = secretkey.token
25
+
26
+ SecretKey will automatically generate a timestamp, which can be accessed by running:
27
+
28
+ secretkey.timestamp
29
+
30
+ Alternatively, you can specify your own timestamp:
31
+
32
+ timestamp = Time.now.to_i
33
+
34
+ secretkey = SecretKey::SecretKey.new(key, secret, timestamp: timestamp)
35
+ token = secretkey.token
24
36
 
25
37
  Where:
26
38
 
@@ -2,9 +2,28 @@ require 'digest'
2
2
 
3
3
  module SecretKey
4
4
  class SecretKey
5
- def self.generate_token(key, secret, timestamp)
6
- raise ArgumentError, 'Time Stamp is not a valid integer.' unless timestamp.is_a? Integer
7
- Digest::SHA1.hexdigest("#{key}:#{secret}:#{timestamp}")
5
+
6
+ def initialize(key, secret, options={})
7
+ @key = key
8
+ @secret = secret
9
+ @options = options
10
+
11
+ extract_options!
12
+ end
13
+
14
+ def token
15
+ raise ArgumentError, 'Time Stamp is not a valid integer.' unless @timestamp.is_a? Integer
16
+ Digest::SHA1.hexdigest("#{@key}:#{@secret}:#{@timestamp}")
17
+ end
18
+
19
+ def timestamp
20
+ @timestamp ||= Time.now.to_i
21
+ end
22
+
23
+ private
24
+
25
+ def extract_options!
26
+ @timestamp = @options.fetch(:timestamp, timestamp)
8
27
  end
9
28
  end
10
29
  end
@@ -1,3 +1,3 @@
1
1
  module SecretKey
2
- VERSION = '1.0.0'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -4,23 +4,36 @@ describe SecretKey::SecretKey do
4
4
 
5
5
  let!(:key) { Faker::Number.number(15) }
6
6
  let!(:secret) { Faker::Bitcoin.address }
7
- let!(:test_timestamp) { Time.new(2014, 07, 24, 12, 53).to_i }
8
- let!(:generated_token) { Digest::SHA1.hexdigest("#{key}:#{secret}:#{test_timestamp}") }
9
-
10
- describe '.generate_token' do
11
- context 'when timestamp is valid' do
12
- let!(:timestamp) { Time.new(2014, 07, 24, 12, 53).to_i }
13
- it 'produces a token' do
14
- expect(described_class.generate_token(key, secret, timestamp)).to eq(generated_token)
7
+
8
+ describe '#token' do
9
+ context 'when timestamp is not provided' do
10
+ let(:secret_key) { described_class.new(key, secret) }
11
+ let(:timestamp) { secret_key.timestamp }
12
+ let(:expected_token) { Digest::SHA1.hexdigest("#{key}:#{secret}:#{timestamp}") }
13
+ it 'produces a valid token' do
14
+ expect(secret_key.token).to eq(expected_token)
15
15
  end
16
16
  end
17
17
 
18
- context 'when timestamp is invalid' do
19
- let!(:timestamp) { 'sometext' }
20
- it 'raises an invalid timestamp error' do
21
- expect(lambda { described_class.generate_token(key, secret, timestamp) }).to raise_error(ArgumentError, 'Time Stamp is not a valid integer.')
18
+ context 'when timestamp is provided' do
19
+ let(:secret_key) { described_class.new(key, secret, timestamp: timestamp) }
20
+
21
+ context 'when timestamp provided is valid' do
22
+ let(:timestamp) { Time.new(2014, 07, 24, 16, 54, 00).to_i }
23
+ let(:expected_token) { Digest::SHA1.hexdigest("#{key}:#{secret}:#{timestamp}") }
24
+
25
+ it 'produces a valid token' do
26
+ expect(secret_key.token).to eq(expected_token)
27
+ end
28
+ end
29
+
30
+ context 'when timestamp is invalid' do
31
+ let(:timestamp) { 'askdfjlakshfdkjasd' }
32
+
33
+ it 'produces an Argument Error' do
34
+ expect(lambda { secret_key.token }).to raise_error(ArgumentError, 'Time Stamp is not a valid integer.')
35
+ end
22
36
  end
23
37
  end
24
38
  end
25
-
26
39
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: secretkey
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dinusha Bodhinayake