README.md in redis_token-0.0.1 vs README.md in redis_token-0.0.2
- old
+ new
@@ -19,45 +19,112 @@
$ gem install redis_token
## Usage
```ruby
-
before_action :create_service
def auth
client = Client.find_by_email(params[:email])
if client.password == params[:password]
- token = @redis_token.create(client.id, payload: { source: :native })
+ token = @redis_token.create("client.#{client.id}", payload: { source: :native })
json(access_token: token)
- ...
+ # ...
end
- ...
+ # ...
end
def secured_method
value = @redis_token.get(params[:access_token])
return unathorized unless value
client = Client.find_by_id(value[:owner])
payload = value[:payload]
- ...
+ # ...
end
def client_tokens
@tokens = []
- @redis_token.each(client.id) do |token, value|
+ @redis_token.each("client.#{client.id}") do |token, value|
@tokens << { token: token, value: value }
end
end
private
def create_service
@redis_token ||= RedisToken.new(prefix: 'myproject.tokens.', ttl: 30.days)
end
+```
+
+### RedisToken creation
+
+Implicit Redis instance creation:
+
+```ruby
+# Redis.new with no arguments:
+r = RedisToken.new(prefix: 'myproject.tokens.', ttl: 30.days)
+
+# Redis.new(host: '192.168.1.1', port: 33421)
+r = RedisToken.new(prefix: 'myproject.tokens.', host: '192.168.1.1', port: 33421)
+```
+
+Explicit Redis instance injection:
+
+```ruby
+redis = Redis.new
+r = RedisToken.new(redis, prefix: 'myproject.tokens.', ttl: 30.days)
+r = RedisToken.new(redis, prefix: 'myproject2.tokens.')
+```
+
+### Create token
+
+```ruby
+client_token = r.create("client.#{client.id}")
+# => "eca431add3b1f0bbc6cfc73980b68708"
+
+# Redefine default ttl:
+user_token = r.create("u:#{current_user.id}", ttl: 15.hours)
+# => "548a5d54eaf474c750bf83ed04bd242a"
+
+# Create token with payload:
+mobile_token = r.create("c.#{client.id}", payload: { source: :native })
+# => "865249d6b87c4e6dd8f6b0796ace7fa0"
+```
+
+### Get token
+
+```ruby
+value = r.get('865249d6b87c4e6dd8f6b0796ace7fa0')
+# => {:owner=>"c.555", :at=>2017-08-18 15:53:15 +0300, :payload=>{:source=>:native}}
+
+# Each get request slides ttl by default:
+r.ttl('865249d6b87c4e6dd8f6b0796ace7fa0')
+# => 1209493
+r.get('865249d6b87c4e6dd8f6b0796ace7fa0')
+# => {:owner=>"c.555", :at=>2017-08-18 15:53:15 +0300, :payload=>{:source=>:native}}
+r.ttl('865249d6b87c4e6dd8f6b0796ace7fa0')
+# => 1209598
+
+# To prevent ttl sliding set slide_expire to false:
+r.get('865249d6b87c4e6dd8f6b0796ace7fa0', slide_expire: false)
+```
+
+### Get all tokens owned by someone
+
+```ruby
+5.times { r.create('u.555') }
+
+r.each('u.555') { |t,v| p "#{t}: #{v}" }
+# "5e8c661c11955b062d8c512c201734dd: {:owner=>\"u.555\", :at=>2017-08-18 16:02:10 +0300}"
+# "5607a698763a6164975b9ffc06528513: {:owner=>\"u.555\", :at=>2017-08-18 16:02:10 +0300}"
+# "7ef74cb761c1595dd33058e78a125720: {:owner=>\"u.555\", :at=>2017-08-18 16:02:10 +0300}"
+# "621d2a10c34e92d7f0b4fc3b00be62af: {:owner=>\"u.555\", :at=>2017-08-18 16:02:10 +0300}"
+# "17f7cb676e67d6b53c48e51f1c1beeb1: {:owner=>\"u.555\", :at=>2017-08-18 16:02:10 +0300}"
+# => nil
+
```