lucid-shopify 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6941ffc0f656f4a3f25df0ba4530aa8c793d3aedd3e87c0a4a333c5528ef6d16
4
- data.tar.gz: 20b48f8e246754880b4f5506387774b5213605c2bf97bb7db2251c2ca24273c0
3
+ metadata.gz: 514e2e06b6f26b6bb7cf487e1c8bdf15ced2d6f22edc0999bb938d80ed56b84e
4
+ data.tar.gz: '00976c459f606e71d097a016b1529f2e735366a49ff0972da489522638501170'
5
5
  SHA512:
6
- metadata.gz: 0460cdf66d11da1376772eba36cd03a94b60592e0385cf15b9026092107720c8d165791bd0459d791735b29c9683af76241128783cf6ad268c1c13b45f3726ad
7
- data.tar.gz: d24830b5067246abd9918e87772a0f726a3a5b96594d81d17e5f6684977579ea0c73221c4f7bca8f884b9bc33cff80dabdf7fa9e201bd8a6dccb90fbe3012f41
6
+ metadata.gz: 4a90a8ecb406a9ebdd61d3605a278a5a1f9de09133b26561b406f8fefa4bbeccea2db2d46f060b55bf5c54a9b8a01ba5b1f97b345b1d582578bedcafdb514cfb
7
+ data.tar.gz: 8b3649891e6cc04e146b8e793cd959c52169b94bb1deb06ae65191fe40e91b87ac31d713be6db50f97176c7f8e7c105dd9955a7413a6aa7723b9f64e690ed99b
data/README.md CHANGED
@@ -14,28 +14,19 @@ Usage
14
14
 
15
15
  ### Configure the default API client
16
16
 
17
- Lucid::Shopify.configure(
18
- api_key: '...',
19
- api_version: '...', # e.g. '2019-07'
20
- billing_callback_uri: '...',
21
- callback_uri: '...', # (for OAuth; unused by this gem)
22
- logger: Logger.new(STDOUT),
23
- scope: '...',
24
- shared_secret: '...',
25
- webhook_uri: '...',
26
- )
27
-
28
- Alternatively load the configuration from a Ruby file. The Ruby
29
- file is evaluated and should return a hash.
30
-
31
- Lucid::Shopify.configure_from_file('config/shopify.rb') # the default path
32
-
33
- When loading from a file, any environment variables matching the
34
- upcased key with the prefix ‘SHOPIFY_’ will override values in the
35
- file. For example ‘SHOPIFY_SHARED_SECRET=...’.
17
+ Lucid::Shopify.configure do |config|
18
+ config.api_key = '...'
19
+ config.api_version = '...' # e.g. '2019-07'
20
+ config.billing_callback_uri = '...'
21
+ config.callback_uri = '...' # (for OAuth; unused by this gem)
22
+ config.logger = Logger.new(STDOUT)
23
+ config.scope = '...'
24
+ config.shared_secret = '...'
25
+ config.webhook_uri = '...'
26
+ end
36
27
 
37
- All keys are optional and in some private apps, you may not require
38
- any configuration at all.
28
+ All settings are optional and in some private apps, you may not
29
+ require any configuration at all.
39
30
 
40
31
  Additionally, each API request requires authorisation:
41
32
 
@@ -142,9 +133,7 @@ charge:
142
133
 
143
134
  Request logging is disabled by default. To enable it:
144
135
 
145
- Lucid::Shopify.configure(
146
- logger: Logger.new(STDOUT),
147
- )
136
+ Lucid::Shopify.config.logger = Logger.new(STDOUT)
148
137
 
149
138
 
150
139
  ### Make throttled API requests
@@ -50,6 +50,13 @@ module Lucid
50
50
  self.class.new(**@params, throttling: false)
51
51
  end
52
52
 
53
+ # @param credentials [Credentials]
54
+ #
55
+ # @return [AuthenticatedClient]
56
+ def authenticate(credentials)
57
+ AuthenticatedClient.new(self, credentials)
58
+ end
59
+
53
60
  # @see DeleteRequest#initialize
54
61
  def delete(*args)
55
62
  send_request.(DeleteRequest.new(*args))
@@ -70,5 +77,22 @@ module Lucid
70
77
  send_request.(PutRequest.new(*args))
71
78
  end
72
79
  end
80
+
81
+ class AuthenticatedClient
82
+ # @private
83
+ #
84
+ # @param client [Client]
85
+ # @param credentials [Credentials]
86
+ def initialize(client, credentials)
87
+ @client = client
88
+ @credentials = credentials
89
+ end
90
+
91
+ %i[delete get post_json put_json].each do |method|
92
+ define_method(method) do |*args|
93
+ @client.__send__(method, @credentials, *args)
94
+ end
95
+ end
96
+ end
73
97
  end
74
98
  end
@@ -4,7 +4,6 @@ require 'dry/container'
4
4
  require 'http'
5
5
 
6
6
  require 'lucid/shopify'
7
- require 'lucid/shopify/config'
8
7
 
9
8
  module Lucid
10
9
  module Shopify
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Lucid
4
4
  module Shopify
5
- VERSION = '0.36.0'
5
+ VERSION = '0.37.0'
6
6
  end
7
7
  end
data/lib/lucid/shopify.rb CHANGED
@@ -39,6 +39,17 @@ module Lucid
39
39
  autoload :WebhookHandlerList, 'lucid/shopify/webhook_handler_list'
40
40
  autoload :WebhookList, 'lucid/shopify/webhook_list'
41
41
 
42
+ extend Dry::Configurable
43
+
44
+ setting :api_key
45
+ setting :api_version, '2019-07'
46
+ setting :billing_callback_uri
47
+ setting :callback_uri
48
+ setting :logger, Logger.new(File::NULL).freeze
49
+ setting :scope
50
+ setting :shared_secret
51
+ setting :webhook_uri
52
+
42
53
  class << self
43
54
  # Webhooks created for each shop.
44
55
  #
@@ -67,5 +78,3 @@ module Lucid
67
78
  end
68
79
  end
69
80
  end
70
-
71
- require 'lucid/shopify/config'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lucid-shopify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.36.0
4
+ version: 0.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kelsey Judson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-01 00:00:00.000000000 Z
11
+ date: 2020-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dotenv
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - '='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.67'
69
+ - !ruby/object:Gem::Dependency
70
+ name: dry-configurable
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.9'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.9'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: dry-container
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -122,20 +136,6 @@ dependencies:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
138
  version: '4.1'
125
- - !ruby/object:Gem::Dependency
126
- name: lucid-utils
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '0.1'
132
- type: :runtime
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '0.1'
139
139
  description:
140
140
  email: kelsey@lucid.nz
141
141
  executables: []
@@ -148,7 +148,6 @@ files:
148
148
  - lib/lucid/shopify/activate_charge.rb
149
149
  - lib/lucid/shopify/authorise.rb
150
150
  - lib/lucid/shopify/client.rb
151
- - lib/lucid/shopify/config.rb
152
151
  - lib/lucid/shopify/container.rb
153
152
  - lib/lucid/shopify/create_all_webhooks.rb
154
153
  - lib/lucid/shopify/create_charge.rb
@@ -192,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
191
  - !ruby/object:Gem::Version
193
192
  version: '0'
194
193
  requirements: []
195
- rubygems_version: 3.0.3
194
+ rubygems_version: 3.1.2
196
195
  signing_key:
197
196
  specification_version: 4
198
197
  summary: Shopify client library
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
-
5
- require 'lucid/shopify'
6
- require 'lucid/utils'
7
-
8
- module Lucid
9
- module Shopify
10
- class << self
11
- # @param options [Hash]
12
- #
13
- # @return [Config]
14
- def configure(options = {})
15
- @config = Config.new(
16
- **@config.to_h.compact,
17
- **options,
18
- )
19
- end
20
-
21
- # @param path [String]
22
- #
23
- # @return [Config]
24
- def configure_from_file(path = 'config/shopify.rb')
25
- options = Utils::ConfigFromFile.new.(path, env_prefix: 'shopify')
26
-
27
- configure(options)
28
- end
29
-
30
- # @return [Config]
31
- def config
32
- @config ||= configure
33
- end
34
- end
35
-
36
- class Config < Dry::Struct
37
- attribute :api_version, Types::String.default('2019-07')
38
- attribute :logger, Types::Logger.default(Logger.new(File::NULL).freeze)
39
-
40
- # The following attributes may be unnecessary in some private apps.
41
- attribute? :api_key, Types::String
42
- attribute? :billing_callback_uri, Types::String
43
- attribute? :callback_uri, Types::String
44
- attribute? :scope, Types::String
45
- attribute? :shared_secret, Types::String
46
- attribute? :webhook_uri, Types::String
47
- end
48
-
49
- self.configure
50
- end
51
- end