Class: ShopifyAPI::Auth::Session
- Inherits:
-
Object
- Object
- ShopifyAPI::Auth::Session
- Extended by:
- T::Sig
- Defined in:
- lib/shopify_api/auth/session.rb
Instance Attribute Summary collapse
-
#access_token ⇒ Object
Returns the value of attribute access_token.
-
#associated_user ⇒ Object
Returns the value of attribute associated_user.
-
#associated_user_scope ⇒ Object
Returns the value of attribute associated_user_scope.
-
#expires ⇒ Object
Returns the value of attribute expires.
-
#id ⇒ Object
readonly
Returns the value of attribute id.
-
#scope ⇒ Object
Returns the value of attribute scope.
-
#shop ⇒ Object
Returns the value of attribute shop.
-
#shopify_session_id ⇒ Object
Returns the value of attribute shopify_session_id.
-
#state ⇒ Object
Returns the value of attribute state.
Class Method Summary collapse
- .deserialize(str) ⇒ Object
- .from(shop:, access_token_response:) ⇒ Object
- .temp(shop:, access_token:, &blk) ⇒ Object
Instance Method Summary collapse
- #==(other) ⇒ Object
- #copy_attributes_from(other) ⇒ Object
- #eql? ⇒ Object
- #expired? ⇒ Boolean
-
#initialize(shop:, id: nil, state: nil, access_token: "", scope: [], associated_user_scope: nil, expires: nil, is_online: nil, associated_user: nil, shopify_session_id: nil) ⇒ Session
constructor
A new instance of Session.
- #online? ⇒ Boolean
- #serialize ⇒ Object
Constructor Details
#initialize(shop:, id: nil, state: nil, access_token: "", scope: [], associated_user_scope: nil, expires: nil, is_online: nil, associated_user: nil, shopify_session_id: nil) ⇒ Session
Returns a new instance of Session.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/shopify_api/auth/session.rb', line 57 def initialize(shop:, id: nil, state: nil, access_token: "", scope: [], associated_user_scope: nil, expires: nil, is_online: nil, associated_user: nil, shopify_session_id: nil) @id = T.let(id || SecureRandom.uuid, String) @shop = shop @state = state @access_token = access_token @scope = T.let(AuthScopes.new(scope), AuthScopes) @associated_user_scope = T.let( associated_user_scope.nil? ? nil : AuthScopes.new(associated_user_scope), T.nilable(AuthScopes) ) @expires = expires @associated_user = associated_user @is_online = T.let(is_online || !associated_user.nil?, T::Boolean) @shopify_session_id = shopify_session_id end |
Instance Attribute Details
#access_token ⇒ Object
Returns the value of attribute access_token.
13 14 15 |
# File 'lib/shopify_api/auth/session.rb', line 13 def access_token @access_token end |
#associated_user ⇒ Object
Returns the value of attribute associated_user.
28 29 30 |
# File 'lib/shopify_api/auth/session.rb', line 28 def associated_user @associated_user end |
#associated_user_scope ⇒ Object
Returns the value of attribute associated_user_scope.
22 23 24 |
# File 'lib/shopify_api/auth/session.rb', line 22 def associated_user_scope @associated_user_scope end |
#expires ⇒ Object
Returns the value of attribute expires.
25 26 27 |
# File 'lib/shopify_api/auth/session.rb', line 25 def expires @expires end |
#id ⇒ Object (readonly)
Returns the value of attribute id.
10 11 12 |
# File 'lib/shopify_api/auth/session.rb', line 10 def id @id end |
#scope ⇒ Object
Returns the value of attribute scope.
19 20 21 |
# File 'lib/shopify_api/auth/session.rb', line 19 def scope @scope end |
#shop ⇒ Object
Returns the value of attribute shop.
16 17 18 |
# File 'lib/shopify_api/auth/session.rb', line 16 def shop @shop end |
#shopify_session_id ⇒ Object
Returns the value of attribute shopify_session_id.
31 32 33 |
# File 'lib/shopify_api/auth/session.rb', line 31 def shopify_session_id @shopify_session_id end |
#state ⇒ Object
Returns the value of attribute state.
13 14 15 |
# File 'lib/shopify_api/auth/session.rb', line 13 def state @state end |
Class Method Details
.deserialize(str) ⇒ Object
119 120 121 |
# File 'lib/shopify_api/auth/session.rb', line 119 def deserialize(str) Oj.load(str) end |
.from(shop:, access_token_response:) ⇒ Object
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/shopify_api/auth/session.rb', line 93 def from(shop:, access_token_response:) is_online = access_token_response.online_token? if is_online associated_user = T.must(access_token_response.associated_user) expires = Time.now + access_token_response.expires_in.to_i associated_user_scope = access_token_response.associated_user_scope id = "#{shop}_#{associated_user.id}" else id = "offline_#{shop}" end new( id: id, shop: shop, access_token: access_token_response.access_token, scope: access_token_response.scope, is_online: is_online, associated_user_scope: associated_user_scope, associated_user: associated_user, expires: expires, shopify_session_id: access_token_response.session, ) end |
.temp(shop:, access_token:, &blk) ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/shopify_api/auth/session.rb', line 80 def temp(shop:, access_token:, &blk) original_session = Context.active_session temp_session = Session.new(shop: shop, access_token: access_token) begin Context.activate_session(temp_session) yield temp_session ensure Context.activate_session(original_session) end end |
Instance Method Details
#==(other) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/shopify_api/auth/session.rb', line 142 def ==(other) if other id == other.id && shop == other.shop && state == other.state && scope == other.scope && associated_user_scope == other.associated_user_scope && (!(expires.nil? ^ other.expires.nil?) && (expires.nil? || expires.to_i == other.expires.to_i)) && online? == other.online? && associated_user == other.associated_user && shopify_session_id == other.shopify_session_id else false end end |
#copy_attributes_from(other) ⇒ Object
125 126 127 128 129 130 131 132 133 |
# File 'lib/shopify_api/auth/session.rb', line 125 def copy_attributes_from(other) JSON.parse(other.serialize).keys.each do |key| next if key.include?("^") variable_name = "@#{key}" instance_variable_set(variable_name, other.instance_variable_get(variable_name)) end self end |
#eql? ⇒ Object
140 |
# File 'lib/shopify_api/auth/session.rb', line 140 alias_method :eql?, :== |
#expired? ⇒ Boolean
39 40 41 |
# File 'lib/shopify_api/auth/session.rb', line 39 def expired? @expires ? @expires < Time.now : false end |
#online? ⇒ Boolean
34 35 36 |
# File 'lib/shopify_api/auth/session.rb', line 34 def online? @is_online end |
#serialize ⇒ Object
136 137 138 |
# File 'lib/shopify_api/auth/session.rb', line 136 def serialize Oj.dump(self) end |