Class: InstagramConnect::Connect
- Inherits:
-
Object
- Object
- InstagramConnect::Connect
- Defined in:
- lib/instagram_connect/connect.rb
Overview
Turns an OAuth authorization code into a persisted Account. Extracted from the callback controller so the flow is unit-testable without the HTTP layer.
Class Method Summary collapse
Instance Method Summary collapse
- #call(code:, redirect_uri:, connected_by_id: nil) ⇒ Object
-
#initialize(config) ⇒ Connect
constructor
A new instance of Connect.
Constructor Details
Class Method Details
.call(code:, redirect_uri:, config: InstagramConnect.configuration, connected_by_id: nil) ⇒ Object
5 6 7 |
# File 'lib/instagram_connect/connect.rb', line 5 def self.call(code:, redirect_uri:, config: InstagramConnect.configuration, connected_by_id: nil) new(config).call(code: code, redirect_uri: redirect_uri, connected_by_id: connected_by_id) end |
Instance Method Details
#call(code:, redirect_uri:, connected_by_id: nil) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/instagram_connect/connect.rb', line 14 def call(code:, redirect_uri:, connected_by_id: nil) data = @strategy.exchange_code(code: code, redirect_uri: redirect_uri) identity = resolve_identity(data) account = Account.find_or_initialize_by(ig_user_id: identity[:ig_user_id]) account.assign_attributes( auth_path: @config.auth_path.to_s, access_token: data[:access_token], token_expires_at: data[:expires_at], page_id: identity[:page_id], active: true ) account.connected_by_id = connected_by_id unless connected_by_id.nil? account.save! account end |