Class: SimpleWebToken::SimpleWebTokenBuilder
- Inherits:
-
Object
- Object
- SimpleWebToken::SimpleWebTokenBuilder
- Defined in:
- lib/simple_web_token_builder.rb
Instance Attribute Summary collapse
-
#audience ⇒ Object
Returns the value of attribute audience.
-
#expiration ⇒ Object
Returns the value of attribute expiration.
-
#issuer ⇒ Object
Returns the value of attribute issuer.
-
#shared_secret ⇒ Object
Returns the value of attribute shared_secret.
Instance Method Summary collapse
- #build(claims) ⇒ Object
- #claim_pair(key, value) ⇒ Object
- #convert(claims) ⇒ Object
- #default_claim_set ⇒ Object
-
#initialize(opts = {}) ⇒ SimpleWebTokenBuilder
constructor
A new instance of SimpleWebTokenBuilder.
- #sign(bare_token) ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ SimpleWebTokenBuilder
Returns a new instance of SimpleWebTokenBuilder.
9 10 11 12 13 14 15 |
# File 'lib/simple_web_token_builder.rb', line 9 def initialize(opts = {}) raise InvalidOption, :shared_secret unless opts[:shared_secret] self.shared_secret = opts[:shared_secret] self.issuer = opts[:issuer] self.audience = opts[:audience] self.expiration = (opts[:expiration] or 3600) end |
Instance Attribute Details
#audience ⇒ Object
Returns the value of attribute audience.
7 8 9 |
# File 'lib/simple_web_token_builder.rb', line 7 def audience @audience end |
#expiration ⇒ Object
Returns the value of attribute expiration.
7 8 9 |
# File 'lib/simple_web_token_builder.rb', line 7 def expiration @expiration end |
#issuer ⇒ Object
Returns the value of attribute issuer.
7 8 9 |
# File 'lib/simple_web_token_builder.rb', line 7 def issuer @issuer end |
#shared_secret ⇒ Object
Returns the value of attribute shared_secret.
7 8 9 |
# File 'lib/simple_web_token_builder.rb', line 7 def shared_secret @shared_secret end |
Instance Method Details
#build(claims) ⇒ Object
17 18 19 20 |
# File 'lib/simple_web_token_builder.rb', line 17 def build(claims) token = (convert(claims) + default_claim_set).join("&") return token += "&HMACSHA256=#{CGI.escape(sign(token))}" end |
#claim_pair(key, value) ⇒ Object
38 39 40 41 42 |
# File 'lib/simple_web_token_builder.rb', line 38 def claim_pair(key, value) new_key = key.to_s.downcase.split("_").map{|l| l.capitalize.strip}.join("") value = [value].flatten.uniq.join(",") [new_key, value.to_s].map{|s| CGI.escape(s)}.join("=") end |
#convert(claims) ⇒ Object
26 27 28 |
# File 'lib/simple_web_token_builder.rb', line 26 def convert(claims) claims.map{|k, v| claim_pair(k, v)} end |
#default_claim_set ⇒ Object
30 31 32 33 34 35 36 |
# File 'lib/simple_web_token_builder.rb', line 30 def default_claim_set default_claims = [] default_claims << claim_pair(:issuer, self.issuer) if(self.issuer) default_claims << claim_pair(:audience, self.audience) if(self.audience) default_claims << claim_pair(:expires_on, Time.now.to_i + self.expiration) return default_claims end |
#sign(bare_token) ⇒ Object
22 23 24 |
# File 'lib/simple_web_token_builder.rb', line 22 def sign() signature = Base64.encode64(HMAC::SHA256.new(Base64.decode64(self.shared_secret)).update(.toutf8).digest).strip end |