Sha256: 23fac21903aa9600b800d0dd21ef000eb13bb58c73795de60ec636c24cce9a39
Contents?: true
Size: 1.62 KB
Versions: 5
Compression:
Stored size: 1.62 KB
Contents
require 'yao/client' module Yao class Token def self.issue(cli, auth_info) t = new(auth_info) t.reflesh(cli) t end def initialize(auth_info, token_data=nil) @auth_info = auth_info @endpoints = {} end attr_accessor :auth_info, :token, :issued_at, :expire_at, :endpoints alias expires expire_at alias to_s token def register(token_data) @token = token_data["id"] @issued_at = Time.parse(token_data["issued_at"]).localtime @expire_at = Time.parse(token_data["expires"]).localtime Yao.current_tenant_id token_data["tenant"]["id"] end def expired? return true unless self.expire_at Time.now >= self.expire_at end def reflesh(cli) @endpoints.clear res = cli.post('/v2.0/tokens') do |req| req.body = auth_info.to_json req.headers['Content-Type'] = 'application/json' end body = res.body["access"] register(body["token"]) register_endpoints(body["serviceCatalog"]) self end def register_endpoints(_endpoints) return unless _endpoints _endpoints.each do |endpoint_data| type = endpoint_data["type"] endpoint = endpoint_data["endpoints"].first urls = {} urls[:public_url] = endpoint["publicURL"] if endpoint["publicURL"] urls[:admin_url] = endpoint["adminURL"] if endpoint["adminURL"] @endpoints[type] = urls end Yao.default_client.register_endpoints(@endpoints, token: self) end end def self.current_tenant_id(id=nil) if id @__tenant_id = id end @__tenant_id end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
yao-0.3.2 | lib/yao/token.rb |
yao-0.3.1 | lib/yao/token.rb |
yao-0.3.0 | lib/yao/token.rb |
yao-0.2.13 | lib/yao/token.rb |
yao-0.2.12 | lib/yao/token.rb |