redis-email_activation_token 0.0.1 → 0.0.2

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: 34d4beb09411f1c70cfaaad8ffbb014e741a235d
4
- data.tar.gz: ec2548e3def5c2bb6815ec3c56209bfe2d0dbb8d
3
+ metadata.gz: b7501bd54b29af74272aaf40bc26c4588140f0e3
4
+ data.tar.gz: 06cbd9553d6dd05bf6811ed189064feaf4051d2c
5
5
  SHA512:
6
- metadata.gz: 28f4db3473db442dfc4808dda237ee380b34b470215988a21c24b33d30ac9695db944a5aab330e0e820f12c60bc00a5ffa06ca384d7ed1f2d6416e0f644c07ea
7
- data.tar.gz: a407d0f7a701f7387c19e054d6fab30b923ee8450c426db6928e0d48f791d4332c05651d6cb608e1cb3aefea1a69f1172e91bc5d30c065c090ee4a03ac4fa3c7
6
+ metadata.gz: 8717bed253c68e3b10bc3c201d628ec1a0b1a287dcf8af0a64cedc09be1febd6f9d82dbdbcc20503725d342a1b5097dc38268715f5e4a5cf232f9035439facd7
7
+ data.tar.gz: 947625b41e6e9ebfcbcd677f2d1e7921e0c2fa79a90dc1de0dc39e19491a96cf78d8c984f68bd5691181c796d28d0251cc8d52b62b7371d1ac723577165a7759
@@ -2,43 +2,42 @@ require 'redis'
2
2
 
3
3
  class Redis
4
4
  class EmailActivationToken
5
- attr_reader :expire
6
-
7
- def initialize(email, opts = {})
8
- @email = email
9
- @expire = opts.delete(:expire) || 259200 # default 3 days
5
+ def initialize(opts = {})
10
6
  @redis = opts.delete(:redis) || Redis.new(opts)
7
+ end
11
8
 
12
- freeze
9
+ def generate(email, expire: 259200)
10
+ token = generate_token
11
+ set_key(email, token, expire)
12
+ token
13
13
  end
14
14
 
15
- def create
16
- if exists?
17
- false
18
- else
19
- set_key
20
- get
21
- end
15
+ def get(token)
16
+ get_key token
22
17
  end
23
18
 
24
- def exists?
25
- @redis.exists @email
19
+ def get_email(token)
20
+ @redis.hget(token, "email")
26
21
  end
27
22
 
28
- def get
29
- @redis.get @email
23
+ def get_created_at(token)
24
+ Time.parse @redis.hget(token, "created_at")
30
25
  end
31
26
 
32
27
  private
33
28
 
34
- def set_key
35
- @redis.set(@email, generate_token)
36
- @redis.expire(@email, @expire)
29
+ def set_key(email, token, expire)
30
+ @redis.hset(token, "email", email)
31
+ @redis.hset(token, "created_at", Time.now)
32
+ @redis.expire(token, expire)
33
+ end
34
+
35
+ def get_key(token)
36
+ { token: token, email: get_email(token), created_at: get_created_at(token) }
37
37
  end
38
38
 
39
39
  def generate_token
40
40
  SecureRandom.urlsafe_base64
41
41
  end
42
-
43
42
  end
44
43
  end
@@ -1,5 +1,5 @@
1
1
  class Redis
2
2
  class EmailActivationToken
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["3280467rec@gmail.com"]
11
11
  spec.summary = %q{Create email activation token by redis}
12
12
  spec.description = %q{}
13
- spec.homepage = ""
13
+ spec.homepage = "https://github.com/onigra/redis-email_activation_token"
14
14
  spec.license = "MIT"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -2,7 +2,7 @@ require File.expand_path(File.join('../../../', 'spec_helper'), File.dirname(__F
2
2
 
3
3
  describe "redis" do
4
4
  before :all do
5
- @redis = Redis.new :db => 15
5
+ @redis = Redis.new db: 15
6
6
  end
7
7
 
8
8
  before :each do
@@ -10,70 +10,57 @@ describe "redis" do
10
10
  end
11
11
 
12
12
  after :all do
13
+ @redis.flushdb
13
14
  @redis.quit
14
15
  end
15
16
 
16
17
  describe Redis::EmailActivationToken do
17
- let(:obj) { Redis::EmailActivationToken.new(Faker::Internet.free_email, redis: @redis) }
18
+ let(:email) { Faker::Internet.free_email }
19
+ let(:obj) { described_class.new(redis: @redis) }
18
20
 
19
- describe "#create" do
20
- context "nothing" do
21
- subject { obj.create }
22
21
 
22
+ describe "#generate" do
23
+ context "Success" do
23
24
  it "Return Activation Token" do
24
- is_expected.to be_kind_of String
25
+ expect(obj.generate email).to be_kind_of String
25
26
  end
26
27
  end
27
28
 
28
- context "exists" do
29
- before { obj.create }
30
- subject { obj.create }
31
- it { is_expected.to be_falsy }
29
+ context "Set expire time" do
30
+ it "Could set expiry" do
31
+ token = obj.generate(email, expire: 2)
32
+ sleep 3
33
+ expect(@redis.exists token).to be_falsy
34
+ end
32
35
  end
33
36
  end
34
37
 
35
- describe "#exists?" do
36
- context "nothing" do
37
- subject { obj.exists? }
38
- it { is_expected.to be_falsy }
39
- end
38
+ describe "#get" do
39
+ let(:token) { obj.generate email }
40
+ subject { obj.get token }
40
41
 
41
- context "exists" do
42
- before { obj.create }
43
- subject { obj.exists? }
44
- it { is_expected.to be_truthy }
42
+ it "Return token infomation hash" do
43
+ expect(subject[:token]).to eq token
44
+ expect(subject[:email]).to eq email
45
+ expect(subject[:created_at]).to be_kind_of Time
45
46
  end
46
47
  end
47
48
 
48
- describe "#get" do
49
- context "nothing" do
50
- subject { obj.get }
51
- it { is_expected.to be_falsy }
52
- end
53
-
54
- context "exists" do
55
- before { obj.create }
56
- subject { obj.get }
49
+ describe "#get_email" do
50
+ let(:token) { obj.generate email }
57
51
 
58
- it "Return Activation Token" do
59
- is_expected.to be_kind_of String
60
- end
52
+ it "Token is can get email" do
53
+ expect(obj.get_email token).to eq email
61
54
  end
62
55
  end
63
56
 
64
- describe "Expiry Time Set" do
65
- let(:obj) { Redis::EmailActivationToken.new(Faker::Internet.free_email, redis: @redis, expire: 5) }
66
-
67
- it "expite == 5" do
68
- expect(obj.expire).to eq 5
69
- end
57
+ describe "#get_created_at" do
58
+ let(:token) { obj.generate email }
70
59
 
71
- it "Expire Check" do
72
- obj.create
73
- sleep 6
74
- expect(obj.exists?).to be_falsy
60
+ it "Token is can get created_at" do
61
+ expect(obj.get_created_at token).to be_kind_of Time
75
62
  end
76
63
  end
77
- end
78
64
 
65
+ end
79
66
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-email_activation_token
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - onigra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-03 00:00:00.000000000 Z
11
+ date: 2014-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -90,7 +90,7 @@ files:
90
90
  - redis-email_activation_token.gemspec
91
91
  - spec/lib/redis/email_activation_token/redis_ext_spec.rb
92
92
  - spec/spec_helper.rb
93
- homepage: ''
93
+ homepage: https://github.com/onigra/redis-email_activation_token
94
94
  licenses:
95
95
  - MIT
96
96
  metadata: {}