lucid_shopify 0.5.3 → 0.7.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +15 -9
  3. data/lib/lucid_shopify/activate_charge.rb +9 -9
  4. data/lib/lucid_shopify/assert_callback.rb +61 -0
  5. data/lib/lucid_shopify/assert_webhook.rb +28 -0
  6. data/lib/lucid_shopify/charge.rb +33 -28
  7. data/lib/lucid_shopify/client.rb +12 -17
  8. data/lib/lucid_shopify/config.rb +45 -0
  9. data/lib/lucid_shopify/container.rb +23 -0
  10. data/lib/lucid_shopify/create_all_webhooks.rb +40 -0
  11. data/lib/lucid_shopify/create_charge.rb +9 -9
  12. data/lib/lucid_shopify/create_webhook.rb +24 -0
  13. data/lib/lucid_shopify/delegate_webhooks.rb +1 -1
  14. data/lib/lucid_shopify/delete_all_webhooks.rb +30 -0
  15. data/lib/lucid_shopify/delete_request.rb +3 -1
  16. data/lib/lucid_shopify/delete_webhook.rb +22 -0
  17. data/lib/lucid_shopify/error.rb +11 -0
  18. data/lib/lucid_shopify/fetch_access_token.rb +12 -14
  19. data/lib/lucid_shopify/get_request.rb +3 -1
  20. data/lib/lucid_shopify/post_request.rb +3 -1
  21. data/lib/lucid_shopify/put_request.rb +3 -1
  22. data/lib/lucid_shopify/request.rb +5 -5
  23. data/lib/lucid_shopify/request_credentials.rb +1 -1
  24. data/lib/lucid_shopify/response.rb +4 -21
  25. data/lib/lucid_shopify/send_request.rb +16 -23
  26. data/lib/lucid_shopify/send_throttled_request.rb +2 -2
  27. data/lib/lucid_shopify/version.rb +1 -1
  28. data/lib/lucid_shopify/webhook.rb +2 -1
  29. data/lib/lucid_shopify.rb +31 -23
  30. metadata +53 -7
  31. data/lib/lucid_shopify/credentials.rb +0 -42
  32. data/lib/lucid_shopify/result.rb +0 -33
  33. data/lib/lucid_shopify/verify_callback.rb +0 -70
  34. data/lib/lucid_shopify/verify_webhook.rb +0 -40
  35. data/lib/lucid_shopify/webhooks.rb +0 -82
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d610eaa43c2042955f9e53258ec348d11e41dac18bbe6e1c791df7aef3fc534f
4
- data.tar.gz: 19aed6bb09852b20d2f66460bcf0fcf137256ce334af9b03d8719e0f609c6c14
3
+ metadata.gz: a53c313f841a7f88609457eb4b2c4f1a7651eee3d687097be04f98d75f36f4a0
4
+ data.tar.gz: e3190ad427bd79f7bd0fe8f7ace431aad5544d9fe162b1098a5885d3a2959efc
5
5
  SHA512:
6
- metadata.gz: 3b13e09788864e1cd1994da04803827e7796157d2e8e8d14efbfac7a7235e8979f0df8f42a2775427a95a10d33bbf7b6b378e809f45a9da95c1063ad030a76fc
7
- data.tar.gz: f5a89554bb759e1a470cf46fc7cfd5a5dca6ef6d1b0f98e3318d634ab604a40594749831de8ce2fdfe0236dcd66802854066b797a25ab283ddf4933114a09977
6
+ metadata.gz: 36cb4616edbe9d671ff6b34f3ee92d92e5a50bf20d7da05d2bfe783b307b8678d7c36d920174223ebf15739bd76577d001275db4c6f34805d09b8c485bd3aa14
7
+ data.tar.gz: '04293660bb3c7abb9d4999924fbd311ccbf29de0e9d405338321e5e95bb2257a4861ead6be9c4684e7ca7424a9d46c015a95ae0a3b44354c2a7225bd877ece18'
data/README.md CHANGED
@@ -14,7 +14,7 @@ Usage
14
14
 
15
15
  ### Configure the default API client credentials
16
16
 
17
- LucidShopify.credentials = LucidShopify::Credentials.new(
17
+ LucidShopify.config = LucidShopify::Config.new(
18
18
  '...', # api_key
19
19
  '...', # shared_secret
20
20
  '...', # scope
@@ -66,28 +66,34 @@ to create a worker around something like this:
66
66
 
67
67
  Create/delete all configured webhooks (see above):
68
68
 
69
- webhooks = LucidShopify::Webhooks.new
70
-
71
- webhooks.create_all(request_credentials)
72
- webhooks.delete_all(request_credentials)
69
+ LucidShopify::CreateAllWebhooks.new.(request_credentials)
70
+ LucidShopify::DeleteAllWebhooks.new.(request_credentials)
73
71
 
74
72
  Create/delete webhooks manually:
75
73
 
76
74
  webhook = {topic: 'orders/create', fields: %w(id tags)}
77
75
 
78
- webhooks.create(request_credentials, webhook)
79
- webhooks.delete(request_credentials, webhook_id)
76
+ LucidShopify::CreateWebhook.new.(request_credentials, webhook)
77
+ LucidShopify::DeleteWebhook.new.(request_credentials, webhook_id)
80
78
 
81
79
 
82
80
  ### Verification
83
81
 
84
82
  Verify callback requests with the request params:
85
83
 
86
- LucidShopify::Verify::Callback.new.(params_hash).success?
84
+ begin
85
+ LucidShopify::AssertCallback.new.(params)
86
+ rescue LucidShopify::Error => e
87
+ # ...
88
+ end
87
89
 
88
90
  Verify webhook requests with the request data and the HMAC header:
89
91
 
90
- LucidShopify::Verify::Webhook.new.(data, hmac).success?
92
+ begin
93
+ LucidShopify::AssertWebhook.new.(data, hmac)
94
+ rescue LucidShopify::Error => e
95
+ # ...
96
+ end
91
97
 
92
98
 
93
99
  ### Authorization
@@ -1,26 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-initializer'
4
-
5
- require 'lucid_shopify/client'
3
+ require 'lucid_shopify/container'
6
4
 
7
5
  module LucidShopify
8
6
  class ActivateCharge
9
- extend Dry::Initializer
10
-
11
- # @return [Client]
12
- option :client, default: proc { Client.new }
7
+ #
8
+ # @param client [#post_json]
9
+ #
10
+ def initialize(client: Container[:client])
11
+ @client = client
12
+ end
13
13
 
14
14
  #
15
15
  # Activate a recurring application charge.
16
16
  #
17
17
  # @param request_credentials [RequestCredentials]
18
- # @param charge [Hash, #to_h] an accepted charge received from Shopify via callback
18
+ # @param charge [#to_h] an accepted charge received from Shopify via callback
19
19
  #
20
20
  # @return [Hash] the active charge
21
21
  #
22
22
  def call(request_credentials, charge)
23
- data = client.post_json(request_credentials, "recurring_application_charges/#{charge_id}/activate", charge.to_h)
23
+ data = @client.post_json(request_credentials, "recurring_application_charges/#{charge.to_h['id']}/activate", charge.to_h)
24
24
 
25
25
  data['recurring_application_charge']
26
26
  end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'openssl'
4
+
5
+ require 'lucid_shopify'
6
+
7
+ module LucidShopify
8
+ class AssertCallback
9
+ Error = Class.new(Error)
10
+
11
+ #
12
+ # Assert that the callback request originated from Shopify.
13
+ #
14
+ # @param params [Hash] the request params
15
+ #
16
+ # @raise [Error] if signature is invalid
17
+ #
18
+ def call(params)
19
+ params = params.to_h
20
+ digest = OpenSSL::Digest::SHA256.new
21
+ digest = OpenSSL::HMAC.hexdigest(digest, LucidShopify.config.shared_secret, encoded_params(params))
22
+
23
+ raise Error, 'invalid signature' unless digest == params['hmac']
24
+ end
25
+
26
+ #
27
+ # @param params [Hash]
28
+ #
29
+ # @return [String]
30
+ #
31
+ private def encoded_params(params)
32
+ params.reject do |k, _|
33
+ k == 'hmac'
34
+ end.map do |k, v|
35
+ [].tap do |param|
36
+ param << k.gsub(/./) { |c| encode_key(c) }
37
+ param << '='
38
+ param << v.gsub(/./) { |c| encode_val(c) }
39
+ end.join
40
+ end.join('&')
41
+ end
42
+
43
+ #
44
+ # @param chr [String]
45
+ #
46
+ # @return [String]
47
+ #
48
+ private def encode_key(chr)
49
+ {'%' => '%25', '&' => '%26', '=' => '%3D'}[chr] || chr
50
+ end
51
+
52
+ #
53
+ # @param chr [String]
54
+ #
55
+ # @return [String]
56
+ #
57
+ private def encode_val(chr)
58
+ {'%' => '%25', '&' => '%26'}[chr] || chr
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'base64'
4
+ require 'openssl'
5
+
6
+ require 'lucid_shopify'
7
+
8
+ module LucidShopify
9
+ class AssertWebhook
10
+ Error = Class.new(Error)
11
+
12
+ #
13
+ # Assert that the webhook request originated from Shopify.
14
+ #
15
+ # @param data [String] the signed request data
16
+ # @param hmac [String] the signature
17
+ #
18
+ # @return [Result]
19
+ #
20
+ def call(data, hmac)
21
+ digest = OpenSSL::Digest::SHA256.new
22
+ digest = OpenSSL::HMAC.digest(digest, LucidShopify.config.shared_secret, data)
23
+ digest = Base64.encode64(digest).strip
24
+
25
+ raise Error, 'invalid signature' unless digest == hmac
26
+ end
27
+ end
28
+ end
@@ -1,30 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-initializer'
4
-
5
- require 'lucid_shopify/credentials'
3
+ require 'lucid_shopify'
6
4
 
7
5
  module LucidShopify
8
6
  #
9
- # Provides a convenient way to build the charge hash for {CreateCharge}.
7
+ # Convenient way to build the charge hash for {CreateCharge}.
10
8
  #
11
9
  class Charge
12
- extend Dry::Initializer
10
+ #
11
+ # @param plan_name [String]
12
+ # @param price [Integer]
13
+ # @param price_cap [Integer] requires price_terms
14
+ # @param price_terms [String] requires price_cap
15
+ # @param test [Boolean] is this a test_charge?
16
+ # @param trial_days [Integer]
17
+ #
18
+ def initialize(plan_name,
19
+ price,
20
+ price_cap: nil,
21
+ price_terms: nil,
22
+ test: false,
23
+ trial_days: 7)
24
+ @plan_name = plan_name
25
+ @price = price
26
+ @price_cap = price_cap
27
+ @price_terms = price_terms
28
+ @test = test
29
+ @trial_days = trial_days
13
30
 
14
- # @return [String]
15
- param :plan_name
16
- # @return [Integer]
17
- param :price
18
- # @return [Integer] requires price_terms
19
- option :price_cap, optional: true
20
- # @return [String] requires price_cap
21
- option :price_terms, optional: true
22
- # @return [Boolean] is this a test charge?
23
- option :test, default: proc { false }
24
- # @return [Integer]
25
- option :trial_days, default: proc { 7 }
26
- # @return [Credentials]
27
- option :credentials, default: proc { LucidShopify.credentials }
31
+ freeze
32
+ end
28
33
 
29
34
  #
30
35
  # Map to the Shopify API structure.
@@ -32,14 +37,14 @@ module LucidShopify
32
37
  # @return [Hash]
33
38
  #
34
39
  def to_h
35
- {}.tap do |hash|
36
- hash[:name] = plan_name
37
- hash[:price] = price
38
- hash[:capped_amount] = price_cap if usage_based_billing?
39
- hash[:terms] = price_terms if usage_based_billing?
40
- hash[:return_url] = credentials.billing_callback_uri
41
- hash[:test] = test if test
42
- hash[:trial_days] = trial_days if trial_days
40
+ {}.tap do |h|
41
+ h[:name] = @plan_name
42
+ h[:price] = @price
43
+ h[:capped_amount] = @price_cap if usage_based_billing?
44
+ h[:terms] = @price_terms if usage_based_billing?
45
+ h[:return_url] = LucidShopify.config.billing_callback_uri
46
+ h[:test] = @test if @test
47
+ h[:trial_days] = @trial_days if @trial_days
43
48
  end
44
49
  end
45
50
 
@@ -47,7 +52,7 @@ module LucidShopify
47
52
  # @return [Boolean]
48
53
  #
49
54
  private def usage_based_billing?
50
- price_cap && price_terms
55
+ @price_cap && @price_terms
51
56
  end
52
57
  end
53
58
  end
@@ -1,49 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lucid_shopify/send_request'
3
+ require 'lucid_shopify/container'
4
4
 
5
- %w(delete get post put).each do |method|
6
- require "lucid_shopify/#{method}_request"
7
- end
5
+ %w(delete get post put).each { |m| require "lucid_shopify/#{m}_request" }
8
6
 
9
7
  module LucidShopify
10
8
  class Client
11
9
  #
12
- # @param send_request [SendRequest]
10
+ # @param send_request [#call]
13
11
  #
14
- def initialize(send_request: SendRequest.new)
12
+ def initialize(send_request: Container[:send_request])
15
13
  @send_request = send_request
16
14
  end
17
15
 
18
- # @return [SendRequest]
19
- attr_reader :send_request
20
-
21
16
  #
22
- # @see {DeleteRequest#initialize}
17
+ # @see DeleteRequest#initialize
23
18
  #
24
19
  def delete(*args)
25
- send_request.(DeleteRequest.new(*args))
20
+ @send_request.(DeleteRequest.new(*args))
26
21
  end
27
22
 
28
23
  #
29
- # @see {GetRequest#initialize}
24
+ # @see GetRequest#initialize
30
25
  #
31
26
  def get(*args)
32
- send_request.(GetRequest.new(*args))
27
+ @send_request.(GetRequest.new(*args))
33
28
  end
34
29
 
35
30
  #
36
- # @see {PostRequest#initialize}
31
+ # @see PostRequest#initialize
37
32
  #
38
33
  def post_json(*args)
39
- send_request.(PostRequest.new(*args))
34
+ @send_request.(PostRequest.new(*args))
40
35
  end
41
36
 
42
37
  #
43
- # @see {PutRequest#initialize}
38
+ # @see PutRequest#initialize
44
39
  #
45
40
  def put_json(*args)
46
- send_request.(PutRequest.new(*args))
41
+ @send_request.(PutRequest.new(*args))
47
42
  end
48
43
  end
49
44
  end
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'forwardable'
4
+
5
+ require 'lucid_shopify'
6
+
7
+ module LucidShopify
8
+ NotConfiguredError = Class.new(Error)
9
+
10
+ class << self
11
+ extend Forwardable
12
+
13
+ # TODO: *Config.dry_initializer.attributes (version 2.0.0+)
14
+ def_delegators :config, :api_key, :shared_secret, :scope, :billing_callback_uri, :webhook_uri
15
+
16
+ # @param config [Config]
17
+ attr_writer :config
18
+
19
+ #
20
+ # @return [Config]
21
+ #
22
+ # @raise [NotConfiguredError] if credentials are unset
23
+ #
24
+ def config
25
+ raise NotConfiguredError unless @config
26
+
27
+ @config
28
+ end
29
+ end
30
+
31
+ class Config
32
+ extend Dry::Initializer
33
+
34
+ # @return [String]
35
+ param :api_key
36
+ # @return [String]
37
+ param :shared_secret
38
+ # @return [String]
39
+ param :scope
40
+ # @return [String]
41
+ param :billing_callback_uri
42
+ # @return [String]
43
+ param :webhook_uri
44
+ end
45
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'dry/container'
4
+
5
+ require 'lucid_shopify'
6
+
7
+ module LucidShopify
8
+ Container = Dry::Container.new
9
+
10
+ # Services only (dependencies); no value objects, entities.
11
+ Container.register(:activate_charge) { ActivateCharge.new }
12
+ Container.register(:assert_callback) { AssertCallback.new }
13
+ Container.register(:assert_webhook) { AssertWebhook.new }
14
+ Container.register(:client) { Client.new }
15
+ Container.register(:create_all_webhooks) { CreateAllWebhooks.new }
16
+ Container.register(:create_charge) { CreateCharge.new }
17
+ Container.register(:create_webhook) { CreateWebhook.new }
18
+ Container.register(:delete_all_webhooks) { DeleteAllWebhooks.new }
19
+ Container.register(:delete_webhook) { DeleteWebhook.new }
20
+ Container.register(:fetch_access_token) { FetchAccessToken.new }
21
+ Container.register(:send_request) { SendRequest.new }
22
+ Container.register(:send_throttled_request) { SendThrottledRequest.new }
23
+ end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lucid_shopify/container'
4
+
5
+ module LucidShopify
6
+ class CreateAllWebhooks
7
+ #
8
+ # @param create_webhook [#call]
9
+ #
10
+ def initialize(create_webhook: Container[:create_webhook])
11
+ @create_webhook = create_webhook
12
+ end
13
+
14
+ #
15
+ # Create all webhooks for the shop. Shopify ignores any webhooks which
16
+ # already exist remotely.
17
+ #
18
+ # @param request_credentials [RequestCredentials]
19
+ #
20
+ def call(request_credentials)
21
+ LucidShopify.webhooks.map do |webhook|
22
+ Thread.new { @create_webhook.(request_credentials, webhook) }
23
+ end.map(&:value)
24
+ end
25
+ end
26
+
27
+ class << self
28
+ #
29
+ # Webhooks created for each shop.
30
+ #
31
+ # @return [Array<Hash>]
32
+ #
33
+ # @example
34
+ # LucidShopify.webhooks << {topic: 'orders/create', fields: 'id,line_items'}
35
+ #
36
+ def webhooks
37
+ @webhooks ||= []
38
+ end
39
+ end
40
+ end
@@ -1,26 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-initializer'
4
-
5
- require 'lucid_shopify/client'
3
+ require 'lucid_shopify/container'
6
4
 
7
5
  module LucidShopify
8
6
  class CreateCharge
9
- extend Dry::Initializer
10
-
11
- # @return [Client]
12
- option :client, default: proc { Client.new }
7
+ #
8
+ # @param client [#post_json]
9
+ #
10
+ def initialize(client: Container[:client])
11
+ @client = client
12
+ end
13
13
 
14
14
  #
15
15
  # Create a new recurring application charge.
16
16
  #
17
17
  # @param request_credentials [RequestCredentials]
18
- # @param charge [Hash, #to_h]
18
+ # @param charge [#to_h]
19
19
  #
20
20
  # @return [Hash] the pending charge
21
21
  #
22
22
  def call(request_credentials, charge)
23
- data = client.post_json(request_credentials, 'recurring_application_charge', charge.to_h)
23
+ data = @client.post_json(request_credentials, 'recurring_application_charges', charge.to_h)
24
24
 
25
25
  data['recurring_application_charge']
26
26
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lucid_shopify/container'
4
+
5
+ module LucidShopify
6
+ class CreateWebhook
7
+ #
8
+ # @param client [#post_json]
9
+ #
10
+ def initialize(client: Container[:client])
11
+ @client = client
12
+ end
13
+
14
+ #
15
+ # @param request_credentials [RequestCredentials]
16
+ # @param webhook [Hash]
17
+ #
18
+ def call(request_credentials, webhook)
19
+ data = {**webhook, address: LucidShopify.config.webhook_uri}
20
+
21
+ @client.post_json(request_credentials, 'webhooks', webhook: data)
22
+ end
23
+ end
24
+ end
@@ -22,7 +22,7 @@ module LucidShopify
22
22
  # Call each of the handlers registered for the given topic in turn. See
23
23
  # {#register} below for more on webhook handlers.
24
24
  #
25
- # @param webhook [LucidShopify::Webhook]
25
+ # @param webhook [Webhook]
26
26
  #
27
27
  def call(webhook)
28
28
  handlers[webhook.topic]&.each { |handler| handler.(webhook) }
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lucid_shopify/container'
4
+
5
+ module LucidShopify
6
+ class DeleteAllWebhooks
7
+ #
8
+ # @param client [#get]
9
+ # @param delete_webhook [#call]
10
+ #
11
+ def initialize(client: Container[:client],
12
+ delete_webhook: Container[:delete_webhook])
13
+ @client = client
14
+ @delete_webhook = delete_webhook
15
+ end
16
+
17
+ #
18
+ # Delete any existing webhooks.
19
+ #
20
+ # @param request_credentials [RequestCredentials]
21
+ #
22
+ def call(request_credentials)
23
+ webhooks = @client.get('webhooks')['webhooks']
24
+
25
+ webhooks.map do |webhook|
26
+ Thread.new { @delete_webhook.(request_credentials, webhook['id']) }
27
+ end.map(&:value)
28
+ end
29
+ end
30
+ end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lucid_shopify/request'
3
+ require 'lucid_shopify'
4
4
 
5
5
  module LucidShopify
6
6
  class DeleteRequest < Request
7
+ #
8
+ # @private
7
9
  #
8
10
  # @param credentials [RequestCredentials]
9
11
  # @param path [String] the endpoint relative to the base URL
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'lucid_shopify/container'
4
+
5
+ module LucidShopify
6
+ class DeleteWebhook
7
+ #
8
+ # @param client [#delete]
9
+ #
10
+ def initialize(client: Container[:client])
11
+ @client = client
12
+ end
13
+
14
+ #
15
+ # @param request_credentials [RequestCredentials]
16
+ # @param id [Integer]
17
+ #
18
+ def call(request_credentials, id)
19
+ @client.delete(request_credentials, "webhooks/#{id}")
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module LucidShopify
4
+ #
5
+ # Subclass this class for all gem exceptions, so that callers may r escue
6
+ # any subclass with:
7
+ #
8
+ # rescue LucidShopify::Error => e
9
+ #
10
+ Error = Class.new(StandardError)
11
+ end
@@ -1,19 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dry-initializer'
4
-
5
- require 'lucid_shopify/client'
3
+ require 'lucid_shopify/container'
6
4
 
7
5
  module LucidShopify
8
6
  class FetchAccessToken
9
- Error = Class.new(StandardError)
10
-
11
- extend Dry::Initializer
7
+ Error = Class.new(Error)
12
8
 
13
- # @return [Client]
14
- option :client, default: proc { Client.new }
15
- # @return [Credentials]
16
- option :credentials, default: proc { LucidShopify.credentials }
9
+ #
10
+ # @param client [#post_json]
11
+ #
12
+ def initialize(client: Container[:client])
13
+ @client = client
14
+ end
17
15
 
18
16
  #
19
17
  # Exchange an authorization code for a new Shopify access token.
@@ -26,10 +24,10 @@ module LucidShopify
26
24
  # @raise [Error] if the response is invalid
27
25
  #
28
26
  def call(request_credentials, authorization_code)
29
- data = client.post_json(request_credentials, 'oauth/access_token', post_data(authorization_code))
27
+ data = @client.post_json(request_credentials, 'oauth/access_token', post_data(authorization_code))
30
28
 
31
29
  raise Error if data['access_token'].nil?
32
- raise Error if data['scope'] != credentials.scope
30
+ raise Error if data['scope'] != LucidShopify.config.scope
33
31
 
34
32
  data['access_token']
35
33
  end
@@ -41,8 +39,8 @@ module LucidShopify
41
39
  #
42
40
  private def post_data(authorization_code)
43
41
  {
44
- client_id: credentials.api_key,
45
- client_secret: credentials.shared_secret,
42
+ client_id: LucidShopify.config.api_key,
43
+ client_secret: LucidShopify.config.shared_secret,
46
44
  code: authorization_code,
47
45
  }
48
46
  end
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lucid_shopify/request'
3
+ require 'lucid_shopify'
4
4
 
5
5
  module LucidShopify
6
6
  class GetRequest < Request
7
+ #
8
+ # @private
7
9
  #
8
10
  # @param credentials [RequestCredentials]
9
11
  # @param path [String] the endpoint relative to the base URL
@@ -1,9 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'lucid_shopify/request'
3
+ require 'lucid_shopify'
4
4
 
5
5
  module LucidShopify
6
6
  class PostRequest < Request
7
+ #
8
+ # @private
7
9
  #
8
10
  # @param credentials [RequestCredentials]
9
11
  # @param path [String] the endpoint relative to the base URL