shopify_api 4.9.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/CODEOWNERS +1 -0
- data/.github/probots.yml +2 -0
- data/.gitignore +3 -0
- data/.rubocop.yml +8 -0
- data/.travis.yml +0 -4
- data/CHANGELOG +67 -0
- data/README.md +48 -26
- data/lib/active_resource/detailed_log_subscriber.rb +25 -2
- data/lib/shopify_api/connection.rb +5 -3
- data/lib/shopify_api/limits.rb +1 -2
- data/lib/shopify_api/resources/abandoned_checkout.rb +7 -0
- data/lib/shopify_api/resources/access_scope.rb +5 -0
- data/lib/shopify_api/resources/api_permission.rb +9 -0
- data/lib/shopify_api/resources/asset.rb +8 -8
- data/lib/shopify_api/resources/billing_address.rb +1 -1
- data/lib/shopify_api/resources/checkout.rb +27 -1
- data/lib/shopify_api/resources/collection_publication.rb +10 -0
- data/lib/shopify_api/resources/currency.rb +6 -0
- data/lib/shopify_api/resources/custom_collection.rb +3 -3
- data/lib/shopify_api/resources/{customer_invite_message.rb → customer_invite.rb} +0 -0
- data/lib/shopify_api/resources/graphql.rb +22 -0
- data/lib/shopify_api/resources/image.rb +2 -2
- data/lib/shopify_api/resources/inventory_item.rb +6 -0
- data/lib/shopify_api/resources/inventory_level.rb +55 -0
- data/lib/shopify_api/resources/line_item.rb +9 -1
- data/lib/shopify_api/resources/location.rb +4 -0
- data/lib/shopify_api/resources/o_auth.rb +8 -0
- data/lib/shopify_api/resources/order.rb +16 -4
- data/lib/shopify_api/resources/payment.rb +7 -0
- data/lib/shopify_api/resources/ping.rb +3 -0
- data/lib/shopify_api/resources/ping/conversation.rb +42 -0
- data/lib/shopify_api/resources/ping/delivery_confirmation_details.rb +10 -0
- data/lib/shopify_api/resources/ping/message.rb +8 -0
- data/lib/shopify_api/resources/product.rb +4 -4
- data/lib/shopify_api/resources/product_publication.rb +10 -0
- data/lib/shopify_api/resources/publication.rb +5 -0
- data/lib/shopify_api/resources/shipping_line.rb +1 -1
- data/lib/shopify_api/resources/shipping_rate.rb +7 -0
- data/lib/shopify_api/resources/shop.rb +4 -4
- data/lib/shopify_api/resources/smart_collection.rb +6 -2
- data/lib/shopify_api/resources/tender_transaction.rb +6 -0
- data/lib/shopify_api/session.rb +16 -17
- data/lib/shopify_api/version.rb +1 -1
- data/service.yml +8 -0
- data/shopify_api.gemspec +4 -1
- data/test/abandoned_checkouts_test.rb +29 -0
- data/test/api_permission_test.rb +9 -0
- data/test/checkouts_test.rb +72 -4
- data/test/collection_publication_test.rb +40 -0
- data/test/currency_test.rb +21 -0
- data/test/detailed_log_subscriber_test.rb +19 -1
- data/test/fixtures/abandoned_checkout.json +184 -0
- data/test/fixtures/abandoned_checkouts.json +186 -0
- data/test/fixtures/checkout.json +160 -0
- data/test/fixtures/checkouts.json +25 -49
- data/test/fixtures/collection_publication.json +11 -0
- data/test/fixtures/collection_publications.json +13 -0
- data/test/fixtures/currencies.json +25 -0
- data/test/fixtures/inventory_level.json +7 -0
- data/test/fixtures/inventory_levels.json +24 -0
- data/test/fixtures/order_with_properties.json +373 -0
- data/test/fixtures/payment.json +7 -0
- data/test/fixtures/payments.json +9 -0
- data/test/fixtures/ping/conversation.json +1 -0
- data/test/fixtures/ping/failed_delivery_confirmation.json +1 -0
- data/test/fixtures/ping/message.json +1 -0
- data/test/fixtures/ping/successful_delivery_confirmation.json +1 -0
- data/test/fixtures/product_publication.json +11 -0
- data/test/fixtures/product_publications.json +13 -0
- data/test/fixtures/publications.json +9 -0
- data/test/fixtures/shipping_rates.json +12 -0
- data/test/fixtures/smart_collection_products.json +155 -0
- data/test/fixtures/tender_transactions.json +52 -0
- data/test/inventory_level_test.rb +59 -0
- data/test/location_test.rb +14 -0
- data/test/order_test.rb +29 -1
- data/test/payment_test.rb +19 -0
- data/test/ping/conversation_test.rb +71 -0
- data/test/ping/message_test.rb +23 -0
- data/test/product_publication_test.rb +40 -0
- data/test/product_test.rb +10 -0
- data/test/publication_test.rb +12 -0
- data/test/session_test.rb +11 -37
- data/test/shipping_rate_test.rb +17 -0
- data/test/smart_collection_test.rb +25 -0
- data/test/tender_transaction_test.rb +18 -0
- data/test/test_helper.rb +8 -5
- data/test/variant_test.rb +4 -1
- metadata +102 -10
- data/lib/shopify_api/resources/discount.rb +0 -11
- data/test/discount_test.rb +0 -52
- data/test/fixtures/discount.json +0 -17
- data/test/fixtures/discount_disabled.json +0 -17
- data/test/fixtures/discounts.json +0 -34
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class PingMessageTest < Test::Unit::TestCase
|
6
|
+
def test_create_message
|
7
|
+
fake("api/ping-api/v1/conversations/123/messages",
|
8
|
+
method: :post,
|
9
|
+
body: load_fixture('ping/message'))
|
10
|
+
|
11
|
+
message = ShopifyAPI::Ping::Message.new(
|
12
|
+
dedupe_key: SecureRandom.uuid,
|
13
|
+
content: {
|
14
|
+
text: "Hello from shopify_api",
|
15
|
+
},
|
16
|
+
sender_id: 'test',
|
17
|
+
conversation_id: '123',
|
18
|
+
)
|
19
|
+
|
20
|
+
message.save
|
21
|
+
assert_equal("d0c7a2e6-8084-4e79-8483-e4a1352b81f7", message.id)
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class ProductPublicationTest < Test::Unit::TestCase
|
5
|
+
def test_get_all_product_publications
|
6
|
+
fake 'publications/55650051/product_publications', body: load_fixture('product_publications')
|
7
|
+
product_publications = ShopifyAPI::ProductPublication.find(:all, params: { publication_id: 55650051 })
|
8
|
+
|
9
|
+
assert_equal 647162527768, product_publications.first.id
|
10
|
+
assert_equal 55650051, product_publications.first.publication_id
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_get_product_publication
|
14
|
+
fake 'publications/55650051/product_publications/647162527768', body: load_fixture('product_publication')
|
15
|
+
product_publication = ShopifyAPI::ProductPublication.find(647162527768, params: { publication_id: 55650051 })
|
16
|
+
|
17
|
+
assert_equal 647162527768, product_publication.id
|
18
|
+
assert_equal 55650051, product_publication.publication_id
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_create_product_publication
|
22
|
+
fake 'publications/55650051/product_publications', method: :post, body: load_fixture('product_publication')
|
23
|
+
ShopifyAPI::ProductPublication.create(
|
24
|
+
publication_id: 55650051,
|
25
|
+
published_at: "2018-01-29T14:06:08-05:00",
|
26
|
+
published: true,
|
27
|
+
product_id: 8267093571
|
28
|
+
)
|
29
|
+
|
30
|
+
expected_body = {
|
31
|
+
product_publication: {
|
32
|
+
published_at: "2018-01-29T14:06:08-05:00",
|
33
|
+
published: true,
|
34
|
+
product_id: 8267093571,
|
35
|
+
},
|
36
|
+
}.to_json
|
37
|
+
|
38
|
+
assert_equal expected_body, FakeWeb.last_request.body
|
39
|
+
end
|
40
|
+
end
|
data/test/product_test.rb
CHANGED
@@ -47,4 +47,14 @@ class ProductTest < Test::Unit::TestCase
|
|
47
47
|
variant.price = "0.50"
|
48
48
|
variant.save
|
49
49
|
end
|
50
|
+
|
51
|
+
def test_price_range
|
52
|
+
assert_equal('199.00', @product.price_range)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_price_range_when_has_different_price
|
56
|
+
@product.variants[0].price = '100.00'
|
57
|
+
|
58
|
+
assert_equal('100.00 - 199.00', @product.price_range)
|
59
|
+
end
|
50
60
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class PublicationTest < Test::Unit::TestCase
|
5
|
+
def test_find_all_publications
|
6
|
+
fake 'publications'
|
7
|
+
publications = ShopifyAPI::Publication.find(:all)
|
8
|
+
|
9
|
+
assert_equal 55650051, publications.first.id
|
10
|
+
assert_equal "Buy Button", publications.first.name
|
11
|
+
end
|
12
|
+
end
|
data/test/session_test.rb
CHANGED
@@ -56,10 +56,6 @@ class SessionTest < Test::Unit::TestCase
|
|
56
56
|
assert_equal "My test secret", ShopifyAPI::Session.secret
|
57
57
|
end
|
58
58
|
|
59
|
-
test "use 'https' protocol by default for all sessions" do
|
60
|
-
assert_equal 'https', ShopifyAPI::Session.protocol
|
61
|
-
end
|
62
|
-
|
63
59
|
test "#temp reset ShopifyAPI::Base.site to original value" do
|
64
60
|
|
65
61
|
ShopifyAPI::Session.setup(:api_key => "key", :secret => "secret")
|
@@ -115,28 +111,6 @@ class SessionTest < Test::Unit::TestCase
|
|
115
111
|
assert_equal false, session.valid?
|
116
112
|
end
|
117
113
|
|
118
|
-
test "#temp reset ShopifyAPI::Base.site to original value when using a non-standard port" do
|
119
|
-
ShopifyAPI::Session.setup(:api_key => "key", :secret => "secret")
|
120
|
-
session1 = ShopifyAPI::Session.new('fakeshop.myshopify.com:3000', 'token1')
|
121
|
-
ShopifyAPI::Base.activate_session(session1)
|
122
|
-
end
|
123
|
-
|
124
|
-
test "myshopify_domain supports non-standard ports" do
|
125
|
-
begin
|
126
|
-
ShopifyAPI::Session.setup(:api_key => "key", :secret => "secret", :myshopify_domain => 'localhost', port: '3000')
|
127
|
-
session = ShopifyAPI::Session.new('fakeshop.localhost:3000', 'token1')
|
128
|
-
ShopifyAPI::Base.activate_session(session)
|
129
|
-
assert_equal 'https://fakeshop.localhost:3000/admin', ShopifyAPI::Base.site.to_s
|
130
|
-
|
131
|
-
session = ShopifyAPI::Session.new('fakeshop', 'token1')
|
132
|
-
ShopifyAPI::Base.activate_session(session)
|
133
|
-
assert_equal 'https://fakeshop.localhost:3000/admin', ShopifyAPI::Base.site.to_s
|
134
|
-
ensure
|
135
|
-
ShopifyAPI::Session.myshopify_domain = "myshopify.com"
|
136
|
-
ShopifyAPI::Session.port = nil
|
137
|
-
end
|
138
|
-
end
|
139
|
-
|
140
114
|
test "return site for session" do
|
141
115
|
session = ShopifyAPI::Session.new("testshop.myshopify.com", "any-token")
|
142
116
|
assert_equal "https://testshop.myshopify.com/admin", session.site
|
@@ -214,33 +188,33 @@ class SessionTest < Test::Unit::TestCase
|
|
214
188
|
end
|
215
189
|
|
216
190
|
test "return true when the signature is valid and the keys of params are strings" do
|
217
|
-
params = {
|
218
|
-
params[
|
191
|
+
params = { 'code' => 'any-code', 'timestamp' => Time.now }
|
192
|
+
params[:hmac] = generate_signature(params)
|
219
193
|
assert_equal true, ShopifyAPI::Session.validate_signature(params)
|
220
194
|
end
|
221
195
|
|
222
196
|
test "return true when validating signature of params with ampersand and equal sign characters" do
|
223
197
|
ShopifyAPI::Session.secret = 'secret'
|
224
|
-
params = {'a' => '1&b=2', 'c=3&d' => '4'}
|
225
|
-
to_sign =
|
226
|
-
params[
|
227
|
-
|
198
|
+
params = { 'a' => '1&b=2', 'c=3&d' => '4' }
|
199
|
+
to_sign = 'a=1%26b=2&c%3D3%26d=4'
|
200
|
+
params[:hmac] = generate_signature(to_sign)
|
228
201
|
assert_equal true, ShopifyAPI::Session.validate_signature(params)
|
229
202
|
end
|
230
203
|
|
231
204
|
test "return true when validating signature of params with percent sign characters" do
|
232
205
|
ShopifyAPI::Session.secret = 'secret'
|
233
|
-
params = {'a%3D1%26b' => '2%26c%3D3'}
|
234
|
-
to_sign =
|
235
|
-
params[
|
236
|
-
|
206
|
+
params = { 'a%3D1%26b' => '2%26c%3D3' }
|
207
|
+
to_sign = 'a%253D1%2526b=2%2526c%253D3'
|
208
|
+
params[:hmac] = generate_signature(to_sign)
|
237
209
|
assert_equal true, ShopifyAPI::Session.validate_signature(params)
|
238
210
|
end
|
239
211
|
|
240
212
|
private
|
241
213
|
|
242
214
|
def make_sorted_params(params)
|
243
|
-
|
215
|
+
params.with_indifferent_access.except(
|
216
|
+
:signature, :hmac, :action, :controller
|
217
|
+
).collect { |k, v| "#{k}=#{v}" }.sort.join('&')
|
244
218
|
end
|
245
219
|
|
246
220
|
def generate_signature(params)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class ShippingRateTest < Test::Unit::TestCase
|
6
|
+
test ":get lists all shipping rates for a given checkout" do
|
7
|
+
fake 'checkouts', method: :get, status: 200, body: load_fixture('checkouts')
|
8
|
+
checkouts = ShopifyAPI::Checkout.all
|
9
|
+
|
10
|
+
fake "checkouts/#{checkouts.first.id}/shipping_rates",
|
11
|
+
method: :get, status: 200, body: load_fixture('checkouts')
|
12
|
+
shipping_rates = ShopifyAPI::ShippingRate.find(:all, params: { checkout_id: checkouts.first.id })
|
13
|
+
|
14
|
+
assert_equal 2, shipping_rates.first.shipping_rates.length
|
15
|
+
assert_equal 'canada_post-INT.TP.BOGUS-4.00', shipping_rates.first.shipping_rates.first.id
|
16
|
+
end
|
17
|
+
end
|
@@ -7,4 +7,29 @@ class SmartCollectionTest < Test::Unit::TestCase
|
|
7
7
|
smart_collection = ShopifyAPI::SmartCollection.create(:title => "Macbooks", :rules => rules)
|
8
8
|
assert_equal 1063001432, smart_collection.id
|
9
9
|
end
|
10
|
+
|
11
|
+
test "Smart Collection get products gets all products in a smart collection" do
|
12
|
+
fake "smart_collections/1063001432", method: :get, status: 200, body: load_fixture('smart_collection')
|
13
|
+
smart_collection = ShopifyAPI::SmartCollection.find(1063001432)
|
14
|
+
|
15
|
+
fake "products.json?collection_id=1063001432",
|
16
|
+
method: :get,
|
17
|
+
status: 200,
|
18
|
+
body:
|
19
|
+
load_fixture('smart_collection_products'),
|
20
|
+
extension: false
|
21
|
+
assert_equal [632910392, 921728736], smart_collection.products.map(&:id)
|
22
|
+
end
|
23
|
+
|
24
|
+
test "Smart Collection get products with only_sorted=only_manual gets only manually sorted products" do
|
25
|
+
fake "smart_collections/1063001432", method: :get, status: 200, body: load_fixture('smart_collection')
|
26
|
+
smart_collection = ShopifyAPI::SmartCollection.find(1063001432)
|
27
|
+
|
28
|
+
fake "smart_collections/1063001432/products.json?only_sorted=only_manual",
|
29
|
+
method: :get,
|
30
|
+
status: 200,
|
31
|
+
body: load_fixture('smart_collection_products'),
|
32
|
+
extension: false
|
33
|
+
assert_equal [632910392, 921728736], smart_collection.products(only_sorted: "only_manual").map(&:id)
|
34
|
+
end
|
10
35
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'test_helper'
|
4
|
+
|
5
|
+
class TenderTransactionTest < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
fake "tender_transactions", method: :get, body: load_fixture('tender_transactions')
|
9
|
+
end
|
10
|
+
|
11
|
+
context "Tender Transaction" do
|
12
|
+
should 'return a list of transactions' do
|
13
|
+
tender_transactions = ShopifyAPI::TenderTransaction.all
|
14
|
+
assert_equal 3, tender_transactions.length
|
15
|
+
assert_equal [1, 2, 3], tender_transactions.map(&:id)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/test/test_helper.rb
CHANGED
@@ -2,6 +2,7 @@ require 'rubygems'
|
|
2
2
|
require 'minitest/autorun'
|
3
3
|
require 'fakeweb'
|
4
4
|
require 'mocha/setup'
|
5
|
+
require 'pry'
|
5
6
|
|
6
7
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
7
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
@@ -30,11 +31,13 @@ class Test::Unit::TestCase < Minitest::Unit::TestCase
|
|
30
31
|
|
31
32
|
def setup
|
32
33
|
ActiveResource::Base.format = :json
|
33
|
-
ShopifyAPI.
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
[ShopifyAPI, ShopifyAPI::Ping].each do |mod|
|
35
|
+
mod.constants.each do |const|
|
36
|
+
begin
|
37
|
+
const = mod.const_get(const)
|
38
|
+
const.format = :json if const.respond_to?(:format=)
|
39
|
+
rescue NameError
|
40
|
+
end
|
38
41
|
end
|
39
42
|
end
|
40
43
|
|
data/test/variant_test.rb
CHANGED
@@ -5,19 +5,22 @@ class VariantTest < Test::Unit::TestCase
|
|
5
5
|
def test_get_variants
|
6
6
|
fake "products/632910392/variants", :method => :get, :body => load_fixture('variants')
|
7
7
|
|
8
|
-
|
8
|
+
variants = ShopifyAPI::Variant.find(:all, :params => { :product_id => 632910392 })
|
9
|
+
assert_equal variants.map(&:id).sort, [39072856, 49148385, 457924702, 808950810]
|
9
10
|
end
|
10
11
|
|
11
12
|
def test_get_variant_namespaced
|
12
13
|
fake "products/632910392/variants/808950810", :method => :get, :body => load_fixture('variant')
|
13
14
|
|
14
15
|
v = ShopifyAPI::Variant.find(808950810, :params => {:product_id => 632910392})
|
16
|
+
assert_equal 632910392, v.product_id
|
15
17
|
end
|
16
18
|
|
17
19
|
def test_get_variant
|
18
20
|
fake "variants/808950810", :method => :get, :body => load_fixture('variant')
|
19
21
|
|
20
22
|
v = ShopifyAPI::Variant.find(808950810)
|
23
|
+
assert_equal 632910392, v.product_id
|
21
24
|
end
|
22
25
|
|
23
26
|
def test_product_id_should_be_accessible_if_via_product_endpoint
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shopify_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shopify
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activeresource
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: graphql-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: mocha
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,6 +122,34 @@ dependencies:
|
|
108
122
|
- - ">="
|
109
123
|
- !ruby/object:Gem::Version
|
110
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: pry
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: pry-byebug
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
111
153
|
description: The Shopify API gem allows Ruby developers to programmatically access
|
112
154
|
the admin section of Shopify stores. The API is implemented as JSON or XML over
|
113
155
|
HTTP using all four verbs (GET/POST/PUT/DELETE). Each resource, like Order, Product,
|
@@ -121,7 +163,10 @@ extra_rdoc_files:
|
|
121
163
|
- README.md
|
122
164
|
files:
|
123
165
|
- ".document"
|
166
|
+
- ".github/CODEOWNERS"
|
167
|
+
- ".github/probots.yml"
|
124
168
|
- ".gitignore"
|
169
|
+
- ".rubocop.yml"
|
125
170
|
- ".travis.yml"
|
126
171
|
- CHANGELOG
|
127
172
|
- CONTRIBUTING.md
|
@@ -151,9 +196,12 @@ files:
|
|
151
196
|
- lib/shopify_api/limits.rb
|
152
197
|
- lib/shopify_api/metafields.rb
|
153
198
|
- lib/shopify_api/resources.rb
|
199
|
+
- lib/shopify_api/resources/abandoned_checkout.rb
|
200
|
+
- lib/shopify_api/resources/access_scope.rb
|
154
201
|
- lib/shopify_api/resources/access_token.rb
|
155
202
|
- lib/shopify_api/resources/address.rb
|
156
203
|
- lib/shopify_api/resources/announcement.rb
|
204
|
+
- lib/shopify_api/resources/api_permission.rb
|
157
205
|
- lib/shopify_api/resources/application_charge.rb
|
158
206
|
- lib/shopify_api/resources/application_credit.rb
|
159
207
|
- lib/shopify_api/resources/article.rb
|
@@ -166,14 +214,15 @@ files:
|
|
166
214
|
- lib/shopify_api/resources/checkout.rb
|
167
215
|
- lib/shopify_api/resources/collect.rb
|
168
216
|
- lib/shopify_api/resources/collection_listing.rb
|
217
|
+
- lib/shopify_api/resources/collection_publication.rb
|
169
218
|
- lib/shopify_api/resources/comment.rb
|
170
219
|
- lib/shopify_api/resources/country.rb
|
220
|
+
- lib/shopify_api/resources/currency.rb
|
171
221
|
- lib/shopify_api/resources/custom_collection.rb
|
172
222
|
- lib/shopify_api/resources/customer.rb
|
173
223
|
- lib/shopify_api/resources/customer_group.rb
|
174
|
-
- lib/shopify_api/resources/
|
224
|
+
- lib/shopify_api/resources/customer_invite.rb
|
175
225
|
- lib/shopify_api/resources/customer_saved_search.rb
|
176
|
-
- lib/shopify_api/resources/discount.rb
|
177
226
|
- lib/shopify_api/resources/discount_code.rb
|
178
227
|
- lib/shopify_api/resources/draft_order.rb
|
179
228
|
- lib/shopify_api/resources/draft_order_invoice.rb
|
@@ -183,7 +232,10 @@ files:
|
|
183
232
|
- lib/shopify_api/resources/fulfillment_request.rb
|
184
233
|
- lib/shopify_api/resources/fulfillment_service.rb
|
185
234
|
- lib/shopify_api/resources/gift_card.rb
|
235
|
+
- lib/shopify_api/resources/graphql.rb
|
186
236
|
- lib/shopify_api/resources/image.rb
|
237
|
+
- lib/shopify_api/resources/inventory_item.rb
|
238
|
+
- lib/shopify_api/resources/inventory_level.rb
|
187
239
|
- lib/shopify_api/resources/line_item.rb
|
188
240
|
- lib/shopify_api/resources/location.rb
|
189
241
|
- lib/shopify_api/resources/marketing_event.rb
|
@@ -194,12 +246,19 @@ files:
|
|
194
246
|
- lib/shopify_api/resources/order.rb
|
195
247
|
- lib/shopify_api/resources/order_risk.rb
|
196
248
|
- lib/shopify_api/resources/page.rb
|
249
|
+
- lib/shopify_api/resources/payment.rb
|
197
250
|
- lib/shopify_api/resources/payment_details.rb
|
251
|
+
- lib/shopify_api/resources/ping.rb
|
252
|
+
- lib/shopify_api/resources/ping/conversation.rb
|
253
|
+
- lib/shopify_api/resources/ping/delivery_confirmation_details.rb
|
254
|
+
- lib/shopify_api/resources/ping/message.rb
|
198
255
|
- lib/shopify_api/resources/policy.rb
|
199
256
|
- lib/shopify_api/resources/price_rule.rb
|
200
257
|
- lib/shopify_api/resources/product.rb
|
201
258
|
- lib/shopify_api/resources/product_listing.rb
|
259
|
+
- lib/shopify_api/resources/product_publication.rb
|
202
260
|
- lib/shopify_api/resources/province.rb
|
261
|
+
- lib/shopify_api/resources/publication.rb
|
203
262
|
- lib/shopify_api/resources/receipt.rb
|
204
263
|
- lib/shopify_api/resources/recurring_application_charge.rb
|
205
264
|
- lib/shopify_api/resources/redirect.rb
|
@@ -210,12 +269,14 @@ files:
|
|
210
269
|
- lib/shopify_api/resources/script_tag.rb
|
211
270
|
- lib/shopify_api/resources/shipping_address.rb
|
212
271
|
- lib/shopify_api/resources/shipping_line.rb
|
272
|
+
- lib/shopify_api/resources/shipping_rate.rb
|
213
273
|
- lib/shopify_api/resources/shipping_zone.rb
|
214
274
|
- lib/shopify_api/resources/shop.rb
|
215
275
|
- lib/shopify_api/resources/smart_collection.rb
|
216
276
|
- lib/shopify_api/resources/storefront_access_token.rb
|
217
277
|
- lib/shopify_api/resources/tax_line.rb
|
218
278
|
- lib/shopify_api/resources/tax_service.rb
|
279
|
+
- lib/shopify_api/resources/tender_transaction.rb
|
219
280
|
- lib/shopify_api/resources/theme.rb
|
220
281
|
- lib/shopify_api/resources/transaction.rb
|
221
282
|
- lib/shopify_api/resources/usage_charge.rb
|
@@ -224,10 +285,13 @@ files:
|
|
224
285
|
- lib/shopify_api/resources/webhook.rb
|
225
286
|
- lib/shopify_api/session.rb
|
226
287
|
- lib/shopify_api/version.rb
|
288
|
+
- service.yml
|
227
289
|
- shipit.rubygems.yml
|
228
290
|
- shopify_api.gemspec
|
291
|
+
- test/abandoned_checkouts_test.rb
|
229
292
|
- test/access_token_test.rb
|
230
293
|
- test/active_resource/json_errors_test.rb
|
294
|
+
- test/api_permission_test.rb
|
231
295
|
- test/application_charge_test.rb
|
232
296
|
- test/application_credit_test.rb
|
233
297
|
- test/article_test.rb
|
@@ -239,14 +303,17 @@ files:
|
|
239
303
|
- test/checkouts_test.rb
|
240
304
|
- test/collect_test.rb
|
241
305
|
- test/collection_listing_test.rb
|
306
|
+
- test/collection_publication_test.rb
|
242
307
|
- test/countable_test.rb
|
308
|
+
- test/currency_test.rb
|
243
309
|
- test/custom_collection_test.rb
|
244
310
|
- test/customer_saved_search_test.rb
|
245
311
|
- test/customer_test.rb
|
246
312
|
- test/detailed_log_subscriber_test.rb
|
247
313
|
- test/discount_code_test.rb
|
248
|
-
- test/discount_test.rb
|
249
314
|
- test/draft_order_test.rb
|
315
|
+
- test/fixtures/abandoned_checkout.json
|
316
|
+
- test/fixtures/abandoned_checkouts.json
|
250
317
|
- test/fixtures/access_token_delegate.json
|
251
318
|
- test/fixtures/application_charge.json
|
252
319
|
- test/fixtures/application_charges.json
|
@@ -261,11 +328,15 @@ files:
|
|
261
328
|
- test/fixtures/blogs.json
|
262
329
|
- test/fixtures/carrier_service.json
|
263
330
|
- test/fixtures/carts.json
|
331
|
+
- test/fixtures/checkout.json
|
264
332
|
- test/fixtures/checkouts.json
|
265
333
|
- test/fixtures/collect.json
|
266
334
|
- test/fixtures/collection_listing.json
|
267
335
|
- test/fixtures/collection_listing_product_ids.json
|
268
336
|
- test/fixtures/collection_listings.json
|
337
|
+
- test/fixtures/collection_publication.json
|
338
|
+
- test/fixtures/collection_publications.json
|
339
|
+
- test/fixtures/currencies.json
|
269
340
|
- test/fixtures/custom_collection.json
|
270
341
|
- test/fixtures/customer_invite.json
|
271
342
|
- test/fixtures/customer_saved_search.json
|
@@ -273,11 +344,8 @@ files:
|
|
273
344
|
- test/fixtures/customers.json
|
274
345
|
- test/fixtures/customers_account_activation_url.json
|
275
346
|
- test/fixtures/customers_search.json
|
276
|
-
- test/fixtures/discount.json
|
277
347
|
- test/fixtures/discount_code.json
|
278
348
|
- test/fixtures/discount_codes.json
|
279
|
-
- test/fixtures/discount_disabled.json
|
280
|
-
- test/fixtures/discounts.json
|
281
349
|
- test/fixtures/draft_order.json
|
282
350
|
- test/fixtures/draft_order_completed.json
|
283
351
|
- test/fixtures/draft_order_invoice.json
|
@@ -292,6 +360,8 @@ files:
|
|
292
360
|
- test/fixtures/gift_card_disabled.json
|
293
361
|
- test/fixtures/image.json
|
294
362
|
- test/fixtures/images.json
|
363
|
+
- test/fixtures/inventory_level.json
|
364
|
+
- test/fixtures/inventory_levels.json
|
295
365
|
- test/fixtures/marketing_event.json
|
296
366
|
- test/fixtures/marketing_events.json
|
297
367
|
- test/fixtures/metafield.json
|
@@ -300,7 +370,14 @@ files:
|
|
300
370
|
- test/fixtures/order.json
|
301
371
|
- test/fixtures/order_risk.json
|
302
372
|
- test/fixtures/order_risks.json
|
373
|
+
- test/fixtures/order_with_properties.json
|
303
374
|
- test/fixtures/orders.json
|
375
|
+
- test/fixtures/payment.json
|
376
|
+
- test/fixtures/payments.json
|
377
|
+
- test/fixtures/ping/conversation.json
|
378
|
+
- test/fixtures/ping/failed_delivery_confirmation.json
|
379
|
+
- test/fixtures/ping/message.json
|
380
|
+
- test/fixtures/ping/successful_delivery_confirmation.json
|
304
381
|
- test/fixtures/policies.json
|
305
382
|
- test/fixtures/price_rule.json
|
306
383
|
- test/fixtures/price_rules.json
|
@@ -308,6 +385,9 @@ files:
|
|
308
385
|
- test/fixtures/product_listing.json
|
309
386
|
- test/fixtures/product_listing_product_ids.json
|
310
387
|
- test/fixtures/product_listings.json
|
388
|
+
- test/fixtures/product_publication.json
|
389
|
+
- test/fixtures/product_publications.json
|
390
|
+
- test/fixtures/publications.json
|
311
391
|
- test/fixtures/recurring_application_charge.json
|
312
392
|
- test/fixtures/recurring_application_charge_adjustment.json
|
313
393
|
- test/fixtures/recurring_application_charges.json
|
@@ -317,13 +397,16 @@ files:
|
|
317
397
|
- test/fixtures/reports.json
|
318
398
|
- test/fixtures/script_tag.json
|
319
399
|
- test/fixtures/script_tags.json
|
400
|
+
- test/fixtures/shipping_rates.json
|
320
401
|
- test/fixtures/shipping_zones.json
|
321
402
|
- test/fixtures/shop.json
|
322
403
|
- test/fixtures/smart_collection.json
|
404
|
+
- test/fixtures/smart_collection_products.json
|
323
405
|
- test/fixtures/storefront_access_token.json
|
324
406
|
- test/fixtures/storefront_access_tokens.json
|
325
407
|
- test/fixtures/tags.json
|
326
408
|
- test/fixtures/tax_service.json
|
409
|
+
- test/fixtures/tender_transactions.json
|
327
410
|
- test/fixtures/transaction.json
|
328
411
|
- test/fixtures/usage_charge.json
|
329
412
|
- test/fixtures/usage_charges.json
|
@@ -339,16 +422,23 @@ files:
|
|
339
422
|
- test/fulfillment_test.rb
|
340
423
|
- test/gift_card_test.rb
|
341
424
|
- test/image_test.rb
|
425
|
+
- test/inventory_level_test.rb
|
342
426
|
- test/limits_test.rb
|
427
|
+
- test/location_test.rb
|
343
428
|
- test/marketing_event_test.rb
|
344
429
|
- test/metafield_test.rb
|
345
430
|
- test/o_auth_test.rb
|
346
431
|
- test/order_risk_test.rb
|
347
432
|
- test/order_test.rb
|
433
|
+
- test/payment_test.rb
|
434
|
+
- test/ping/conversation_test.rb
|
435
|
+
- test/ping/message_test.rb
|
348
436
|
- test/policy_test.rb
|
349
437
|
- test/price_rule_test.rb
|
350
438
|
- test/product_listing_test.rb
|
439
|
+
- test/product_publication_test.rb
|
351
440
|
- test/product_test.rb
|
441
|
+
- test/publication_test.rb
|
352
442
|
- test/recurring_application_charge_test.rb
|
353
443
|
- test/redirect_test.rb
|
354
444
|
- test/refund_test.rb
|
@@ -356,11 +446,13 @@ files:
|
|
356
446
|
- test/resource_feedback_test.rb
|
357
447
|
- test/script_tag_test.rb
|
358
448
|
- test/session_test.rb
|
449
|
+
- test/shipping_rate_test.rb
|
359
450
|
- test/shipping_zone_test.rb
|
360
451
|
- test/shop_test.rb
|
361
452
|
- test/smart_collection_test.rb
|
362
453
|
- test/storefront_access_token_test.rb
|
363
454
|
- test/tax_service_test.rb
|
455
|
+
- test/tender_transaction_test.rb
|
364
456
|
- test/test_helper.rb
|
365
457
|
- test/transaction_test.rb
|
366
458
|
- test/usage_charge_test.rb
|
@@ -380,7 +472,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
380
472
|
requirements:
|
381
473
|
- - ">="
|
382
474
|
- !ruby/object:Gem::Version
|
383
|
-
version: '2.
|
475
|
+
version: '2.1'
|
384
476
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
385
477
|
requirements:
|
386
478
|
- - ">="
|
@@ -388,7 +480,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
388
480
|
version: '0'
|
389
481
|
requirements: []
|
390
482
|
rubyforge_project:
|
391
|
-
rubygems_version: 2.
|
483
|
+
rubygems_version: 2.7.6
|
392
484
|
signing_key:
|
393
485
|
specification_version: 4
|
394
486
|
summary: ShopifyAPI is a lightweight gem for accessing the Shopify admin REST web
|