shopify_api 6.0.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -19
  3. data/CHANGELOG +11 -0
  4. data/Gemfile +1 -2
  5. data/Gemfile_ar41 +5 -0
  6. data/Gemfile_ar50 +5 -0
  7. data/Gemfile_ar51 +5 -0
  8. data/Gemfile_ar_master +0 -1
  9. data/README.md +116 -9
  10. data/RELEASING +2 -5
  11. data/lib/shopify_api.rb +4 -4
  12. data/lib/shopify_api/api_version.rb +116 -0
  13. data/lib/shopify_api/disable_prefix_check.rb +31 -0
  14. data/lib/shopify_api/limits.rb +5 -5
  15. data/lib/shopify_api/resources/access_scope.rb +6 -1
  16. data/lib/shopify_api/resources/asset.rb +15 -11
  17. data/lib/shopify_api/resources/base.rb +63 -1
  18. data/lib/shopify_api/resources/fulfillment_event.rb +1 -1
  19. data/lib/shopify_api/resources/graphql.rb +1 -1
  20. data/lib/shopify_api/resources/inventory_level.rb +2 -2
  21. data/lib/shopify_api/resources/location.rb +1 -1
  22. data/lib/shopify_api/resources/marketing_event.rb +2 -0
  23. data/lib/shopify_api/resources/payment.rb +1 -1
  24. data/lib/shopify_api/resources/refund.rb +4 -3
  25. data/lib/shopify_api/resources/shipping_rate.rb +1 -1
  26. data/lib/shopify_api/resources/shop.rb +4 -2
  27. data/lib/shopify_api/resources/smart_collection.rb +1 -1
  28. data/lib/shopify_api/session.rb +45 -16
  29. data/lib/shopify_api/version.rb +1 -1
  30. data/shopify_api.gemspec +3 -2
  31. data/test/access_scope_test.rb +23 -0
  32. data/test/api_version_test.rb +144 -0
  33. data/test/base_test.rb +75 -32
  34. data/test/detailed_log_subscriber_test.rb +51 -12
  35. data/test/fixtures/access_scopes.json +10 -0
  36. data/test/limits_test.rb +2 -2
  37. data/test/marketing_event_test.rb +1 -1
  38. data/test/recurring_application_charge_test.rb +3 -9
  39. data/test/session_test.rb +158 -32
  40. data/test/test_helper.rb +27 -11
  41. metadata +33 -21
  42. data/Gemfile_ar30 +0 -6
  43. data/Gemfile_ar31 +0 -6
  44. data/Gemfile_ar32 +0 -6
  45. data/Gemfile_ar40 +0 -6
  46. data/lib/active_resource/base_ext.rb +0 -21
  47. data/lib/active_resource/disable_prefix_check.rb +0 -36
  48. data/lib/active_resource/to_query.rb +0 -10
  49. data/lib/shopify_api/json_format.rb +0 -18
  50. data/lib/shopify_api/resources/o_auth.rb +0 -17
  51. data/lib/shopify_api/resources/ping/conversation.rb +0 -42
  52. data/lib/shopify_api/resources/ping/delivery_confirmation_details.rb +0 -10
  53. data/lib/shopify_api/resources/ping/message.rb +0 -8
  54. data/test/fixtures/o_auth_revoke.json +0 -5
  55. data/test/o_auth_test.rb +0 -8
  56. data/test/ping/conversation_test.rb +0 -71
  57. data/test/ping/message_test.rb +0 -23
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "activeresource", "~> 3.0.0"
6
- gem "rack", "< 2" if RUBY_VERSION < "2.2"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "activeresource", "~> 3.1.0"
6
- gem "rack", "< 2" if RUBY_VERSION < "2.2"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "activeresource", "~> 3.2.0"
6
- gem "rack", "< 2" if RUBY_VERSION < "2.2"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec
4
-
5
- gem "activeresource", "4.0.0"
6
- gem "rack", "< 2" if RUBY_VERSION < "2.2"
@@ -1,21 +0,0 @@
1
- module ActiveResource
2
- class Base
3
- if ActiveResource::VERSION::MAJOR < 4
4
- # Backported from ActiveResource master branch
5
- def self.headers
6
- @headers ||= {}
7
-
8
- if superclass != Object && superclass.headers
9
- @headers = superclass.headers.merge(@headers)
10
- else
11
- @headers
12
- end
13
- end
14
-
15
- # https://github.com/rails/activeresource/commit/dfef85ce8f653f75673631b2950fcdb0781c313c
16
- def self.delete(id, options = {})
17
- connection.delete(element_path(id, options), headers)
18
- end
19
- end
20
- end
21
- end
@@ -1,36 +0,0 @@
1
- module DisablePrefixCheck
2
- extend ActiveSupport::Concern
3
-
4
- module ClassMethods
5
- def check_prefix_options(options)
6
- end
7
-
8
- # `flexible = true` is hack to allow multiple things through the same AR class
9
- def conditional_prefix(resource, flexible = false)
10
- resource_id = "#{resource}_id".to_sym
11
- resource_type = flexible ? ":#{resource}" : resource.to_s.pluralize
12
-
13
- init_prefix_explicit resource_type, resource_id
14
-
15
- define_singleton_method :prefix do |options = {}|
16
- resource_type = options[resource] if flexible
17
-
18
- options[resource_id].nil? ? "/admin/" : "/admin/#{resource_type}/#{options[resource_id]}/"
19
- end
20
-
21
- define_singleton_method :instantiate_record do |record, prefix_options = {}|
22
- new_record(record).tap do |resource|
23
- resource.prefix_options = prefix_options unless prefix_options.blank?
24
- end
25
- end
26
- end
27
-
28
- def new_record(record)
29
- if ActiveSupport::VERSION::MAJOR == 3 && ActiveSupport::VERSION::MINOR == 0
30
- new(record)
31
- else
32
- new(record, true)
33
- end
34
- end
35
- end
36
- end
@@ -1,10 +0,0 @@
1
- # ActiveSupport 3.0 doesn't URL-encode paths with arrays as params properly.
2
- # Backported from ActiveSupport > 3.0
3
- if ActiveSupport::VERSION::MAJOR == 3 && ActiveSupport::VERSION::MINOR == 0
4
- class Object
5
- def to_query(key)
6
- require 'cgi' unless defined?(CGI) && defined?(CGI::escape)
7
- "#{CGI.escape(key.to_param)}=#{CGI.escape(to_param.to_s)}"
8
- end
9
- end
10
- end
@@ -1,18 +0,0 @@
1
- module ActiveResource
2
-
3
- # ActiveResource 3.1 removes root on decoding, so this patch is only needed in 3.0
4
- if ActiveResource::VERSION::MAJOR == 3 && ActiveResource::VERSION::MINOR == 0
5
- module Formats
6
- module JsonFormat
7
- def decode(json)
8
- data = ActiveSupport::JSON.decode(json)
9
- if data.is_a?(Hash) && data.keys.size == 1
10
- data.values.first
11
- else
12
- data
13
- end
14
- end
15
- end
16
- end
17
- end
18
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # This resource is deprecated and will be removed in a future version of this gem.
4
- # Use ShopifyAPI::ApiPermission.destroy instead
5
-
6
- module ShopifyAPI
7
- class OAuth < Base
8
- self.collection_name = 'oauth'
9
-
10
- def self.revoke
11
- warn '[DEPRECATED] ShopifyAPI::OAuth#revoke is deprecated and will be removed in a future version. ' \
12
- 'Use ShopifyAPI::ApiPermission#destroy instead.'
13
-
14
- delete(:revoke)
15
- end
16
- end
17
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShopifyAPI
4
- module Ping
5
- class Conversation < Base
6
- self.prefix = "/admin/api/ping-api/v1/"
7
-
8
- def send_message(message_attrs)
9
- message = ShopifyAPI::Ping::Message.new(
10
- message_attrs.merge(conversation_id: id)
11
- )
12
-
13
- message.save
14
- message
15
- end
16
-
17
- def successful_delivery(message_id:, delivery_timestamp:)
18
- delivery_details = ShopifyAPI::Ping::DeliveryConfirmationDetails.new(
19
- delivery_attrs(message_id, delivery_timestamp).merge(delivered: true)
20
- )
21
- delivery_details.save
22
- delivery_details
23
- end
24
-
25
- def failed_delivery(message_id:, delivery_timestamp:, details:)
26
- delivery_details = ShopifyAPI::Ping::DeliveryConfirmationDetails.new(
27
- delivery_attrs(message_id, delivery_timestamp).merge(delivered: false, details: details)
28
- )
29
- delivery_details.save
30
- delivery_details
31
- end
32
-
33
- def delivery_attrs(message_id, delivery_timestamp)
34
- {
35
- conversation_id: id,
36
- message_id: message_id,
37
- confirmation_timestamp: delivery_timestamp,
38
- }
39
- end
40
- end
41
- end
42
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module ShopifyAPI
4
- module Ping
5
- class DeliveryConfirmationDetails < Base
6
- self.prefix = "/admin/api/ping-api/v1/conversations/:conversation_id/messages/:message_id/"
7
- self.collection_name = "delivery_confirmation"
8
- end
9
- end
10
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
- module ShopifyAPI
3
- module Ping
4
- class Message < Base
5
- self.prefix = "/admin/api/ping-api/v1/conversations/:conversation_id/"
6
- end
7
- end
8
- end
@@ -1,5 +0,0 @@
1
- {
2
- "permission": {
3
- "access_token": "8ccb0232e04c672bf044f71ff0156098"
4
- }
5
- }
@@ -1,8 +0,0 @@
1
- require 'test_helper'
2
-
3
- class OAuthTest < Test::Unit::TestCase
4
- def test_revoke_kills_the_token
5
- fake 'oauth/revoke', method: :delete, body: load_fixture('o_auth_revoke')
6
- assert ShopifyAPI::OAuth.revoke
7
- end
8
- end
@@ -1,71 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'test_helper'
4
-
5
- class PingConversationTest < Test::Unit::TestCase
6
- def test_create_conversation
7
- fake "api/ping-api/v1/conversations", method: :post, body: load_fixture('ping/conversation')
8
-
9
- conversation = ShopifyAPI::Ping::Conversation.new(
10
- topic: 'my topic',
11
- participants: [
12
- {
13
- name: 'foo',
14
- id: 'test',
15
- group: 'customer',
16
- },
17
- ]
18
- )
19
-
20
- conversation.save
21
-
22
- assert_equal "d315d4f7-53bd-49ec-8808-23f6db3c641a", conversation.id
23
- end
24
-
25
- def test_send_message
26
- fake "api/ping-api/v1/conversations/123/messages", method: :post, body: load_fixture('ping/message')
27
-
28
- conversation = ShopifyAPI::Ping::Conversation.new(id: '123')
29
- message = conversation.send_message(
30
- dedupe_key: SecureRandom.uuid,
31
- content: {
32
- text: "Hello from shopify_api",
33
- },
34
- sender_id: 'test',
35
- )
36
-
37
- assert_equal "d0c7a2e6-8084-4e79-8483-e4a1352b81f7", message.id
38
- end
39
-
40
- def test_successful_delivery
41
- fake("api/ping-api/v1/conversations/123/messages/111/delivery_confirmation",
42
- method: :post,
43
- body: load_fixture('ping/successful_delivery_confirmation'))
44
-
45
- conversation = ShopifyAPI::Ping::Conversation.new(id: '123')
46
- delivery_confirmation = conversation.successful_delivery(
47
- message_id: '111',
48
- delivery_timestamp: "2018-08-29T22:16:05.589479Z"
49
- )
50
-
51
- assert_equal("true", delivery_confirmation.delivered)
52
- assert_equal("2018-08-29T22:16:05.589479Z", delivery_confirmation.delivery_timestamp)
53
- end
54
-
55
- def test_failed_delivery
56
- fake("api/ping-api/v1/conversations/123/messages/111/delivery_confirmation",
57
- method: :post,
58
- body: load_fixture('ping/failed_delivery_confirmation'))
59
-
60
- conversation = ShopifyAPI::Ping::Conversation.new(id: '123')
61
- delivery_confirmation = conversation.failed_delivery(
62
- message_id: '111',
63
- delivery_timestamp: Time.now.to_s,
64
- details: "Integration failed to deliver message."
65
- )
66
-
67
- assert_equal("false", delivery_confirmation.delivered)
68
- assert_equal("2018-08-29T22:16:05.589479Z", delivery_confirmation.delivery_timestamp)
69
- assert_equal("Integration failed to deliver message.", delivery_confirmation.details)
70
- end
71
- end
@@ -1,23 +0,0 @@
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