Class: Tinypass::AccessToken
- Inherits:
-
Object
- Object
- Tinypass::AccessToken
- Defined in:
- lib/tinypass/token/access_token.rb
Instance Attribute Summary collapse
-
#access_state ⇒ Object
Returns the value of attribute access_state.
-
#token_data ⇒ Object
Returns the value of attribute token_data.
Instance Method Summary collapse
- #access_granted?(client_ip = nil) ⇒ Boolean
- #access_id ⇒ Object
- #early_expiration_in_seconds ⇒ Object (also: #early_expiration_in_secs)
- #expiration_in_seconds ⇒ Object (also: #expiration_in_secs)
- #expired? ⇒ Boolean
-
#initialize(rid_or_token_data, expiration_in_seconds = nil, early_expiration_in_seconds = nil) ⇒ AccessToken
constructor
A new instance of AccessToken.
- #ips ⇒ Object
- #lockout_end_time_secs ⇒ Object
- #lockout_period_active? ⇒ Boolean
- #meter_type ⇒ Object
- #meter_view_based? ⇒ Boolean
- #metered? ⇒ Boolean
- #rid ⇒ Object
- #trial_dead? ⇒ Boolean
- #trial_end_time_secs ⇒ Object
- #trial_period_active? ⇒ Boolean
- #trial_view_count ⇒ Object
- #trial_view_limit ⇒ Object
- #uid ⇒ Object
Constructor Details
#initialize(rid_or_token_data, expiration_in_seconds = nil, early_expiration_in_seconds = nil) ⇒ AccessToken
Returns a new instance of AccessToken.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/tinypass/token/access_token.rb', line 5 def initialize(rid_or_token_data, expiration_in_seconds = nil, early_expiration_in_seconds = nil) if rid_or_token_data.kind_of?(TokenData) self.token_data = rid_or_token_data return end expiration_in_seconds ||= 0 early_expiration_in_seconds ||= 0 token_data = TokenData.new token_data[TokenData::RID] = rid_or_token_data.to_s token_data[TokenData::EX] = TokenData.convert_to_epoch_seconds(expiration_in_seconds) token_data[TokenData::EARLY_EX] = TokenData.convert_to_epoch_seconds(early_expiration_in_seconds) self.token_data = token_data end |
Instance Attribute Details
#access_state ⇒ Object
Returns the value of attribute access_state.
3 4 5 |
# File 'lib/tinypass/token/access_token.rb', line 3 def access_state @access_state end |
#token_data ⇒ Object
Returns the value of attribute token_data.
3 4 5 |
# File 'lib/tinypass/token/access_token.rb', line 3 def token_data @token_data end |
Instance Method Details
#access_granted?(client_ip = nil) ⇒ Boolean
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
# File 'lib/tinypass/token/access_token.rb', line 80 def access_granted?(client_ip = nil) if expiration_in_seconds == -1 # special case. RID_NOT_FOUND @access_state = AccessState::RID_NOT_FOUND if @access_state != AccessState::NO_TOKENS_FOUND return false end if Utils::valid_ip?(client_ip) && ips.any? && !ips.include?(client_ip) @access_state = AccessState::CLIENT_IP_DOES_NOT_MATCH_TOKEN return false end if metered? if trial_period_active? @access_state = AccessState::METERED_IN_TRIAL return true end if lockout_period_active? @access_state = AccessState::METERED_IN_LOCKOUT else @access_state = AccessState::METERED_TRIAL_DEAD end return false end if expired? @access_state = AccessState::EXPIRED return false end @access_state = AccessState::ACCESS_GRANTED true end |
#access_id ⇒ Object
25 26 27 |
# File 'lib/tinypass/token/access_token.rb', line 25 def access_id token_data[TokenData::ACCESS_ID] end |
#early_expiration_in_seconds ⇒ Object Also known as: early_expiration_in_secs
38 39 40 |
# File 'lib/tinypass/token/access_token.rb', line 38 def early_expiration_in_seconds token_data.fetch(TokenData::EARLY_EX, 0) end |
#expiration_in_seconds ⇒ Object Also known as: expiration_in_secs
33 34 35 |
# File 'lib/tinypass/token/access_token.rb', line 33 def expiration_in_seconds token_data.fetch(TokenData::EX, 0) end |
#expired? ⇒ Boolean
138 139 140 141 142 143 144 145 |
# File 'lib/tinypass/token/access_token.rb', line 138 def expired? expiration = early_expiration_in_seconds expiration = expiration_in_seconds if expiration == 0 return false if expiration == 0 expiration <= Time.now.to_i end |
#ips ⇒ Object
71 72 73 |
# File 'lib/tinypass/token/access_token.rb', line 71 def ips token_data.fetch(TokenData::IPS, []) end |
#lockout_end_time_secs ⇒ Object
47 48 49 |
# File 'lib/tinypass/token/access_token.rb', line 47 def lockout_end_time_secs token_data.fetch(TokenData::METER_LOCKOUT_ENDTIME, 0) end |
#lockout_period_active? ⇒ Boolean
131 132 133 134 135 136 |
# File 'lib/tinypass/token/access_token.rb', line 131 def lockout_period_active? return false unless metered? return false if trial_period_active? return Time.now.to_i <= lockout_end_time_secs end |
#meter_type ⇒ Object
67 68 69 |
# File 'lib/tinypass/token/access_token.rb', line 67 def meter_type token_data.fetch(TokenData::METER_TYPE, 0) end |
#meter_view_based? ⇒ Boolean
63 64 65 |
# File 'lib/tinypass/token/access_token.rb', line 63 def meter_view_based? metered? && token_data[TokenData::METER_TRIAL_MAX_ACCESS_ATTEMPTS] end |
#metered? ⇒ Boolean
59 60 61 |
# File 'lib/tinypass/token/access_token.rb', line 59 def metered? meter_type != 0 end |
#rid ⇒ Object
21 22 23 |
# File 'lib/tinypass/token/access_token.rb', line 21 def rid token_data.rid end |
#trial_dead? ⇒ Boolean
147 148 149 |
# File 'lib/tinypass/token/access_token.rb', line 147 def trial_dead? !lockout_period_active? && !trial_period_active? end |
#trial_end_time_secs ⇒ Object
43 44 45 |
# File 'lib/tinypass/token/access_token.rb', line 43 def trial_end_time_secs token_data.fetch(TokenData::METER_TRIAL_ENDTIME, 0) end |
#trial_period_active? ⇒ Boolean
116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
# File 'lib/tinypass/token/access_token.rb', line 116 def trial_period_active? return false unless metered? if meter_type == TokenData::METER_STRICT return Time.now.to_i <= trial_end_time_secs end if meter_view_based? return trial_view_count <= trial_view_limit && Time.now.to_i <= trial_end_time_secs end # unknown meter return trial_end_time_secs == 0 || Time.now.to_i <= trial_end_time_secs end |
#trial_view_count ⇒ Object
51 52 53 |
# File 'lib/tinypass/token/access_token.rb', line 51 def trial_view_count token_data.fetch(TokenData::METER_TRIAL_ACCESS_ATTEMPTS, 0) end |
#trial_view_limit ⇒ Object
55 56 57 |
# File 'lib/tinypass/token/access_token.rb', line 55 def trial_view_limit token_data.fetch(TokenData::METER_TRIAL_MAX_ACCESS_ATTEMPTS, 0) end |