shopify_graphql 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9c0cf0f17f7be4a5d2cca27309dfe08963507d9293342df944be33b8766d49e
4
- data.tar.gz: 91849801ca320f1d173a20197094ca5fbfa102bef5bbc3c711cedaa8b332c259
3
+ metadata.gz: ae1e8d2f4d571b2b213c2a16b4119aa5067f4eaca441db0893b80cff71b0bde7
4
+ data.tar.gz: 7246d23c32915ef20166202cf920f811631dd9a47c922bc207eeba7706d85f44
5
5
  SHA512:
6
- metadata.gz: '086eef695310cd96ebc3730d43df74ea56f9bcb80b1536c547a3c293f396f72483abf7be0e0ef549e09c892e78ed7ed8c74789fde518330125c350eed9f96e6b'
7
- data.tar.gz: fe14262b4729dc21a3ec5515de1f9273a9a599d7faa47db48ab2eac359eb194730197ccf438dcb0383bf780640e839425bf4e531024ed724aaaf2635382645e1
6
+ metadata.gz: 744a08c3749b3083d5a3f7214a639102a2fa6a6a817bc416e5ae7688064f797a182555ab0965abaca75353a82464c2e124274585216f3df75665a8511ea37fb6
7
+ data.tar.gz: aad5f84d8c809cb208d455d4cbf1d25024f254febb3582469b8a65886d357a247f23f94821fc93333767d72bff6dc5cecde57bb87173ae580d8a22bcdd496d58
data/README.md CHANGED
@@ -737,6 +737,8 @@ ShopifyGraphql.handle_user_errors(response)
737
737
  - `ShopifyGraphql::CreateRecurringSubscription`
738
738
  - `ShopifyGraphql::CreateUsageSubscription`
739
739
  - `ShopifyGraphql::GetAppSubscription`
740
+ - `ShopifyGraphql::UpsertPrivateMetafield`
741
+ - `ShopifyGraphql::DeletePrivateMetafield`
740
742
 
741
743
  Built-in wrappers are located in [`app/graphql/shopify_graphql`](/app/graphql/shopify_graphql/) folder. You can use them directly in your apps or as an example to create your own wrappers.
742
744
 
@@ -0,0 +1,36 @@
1
+ module ShopifyGraphql
2
+ class DeletePrivateMetafield
3
+ include ShopifyGraphql::Mutation
4
+
5
+ MUTATION = <<~GRAPHQL
6
+ mutation privateMetafieldDelete($input: PrivateMetafieldDeleteInput!) {
7
+ privateMetafieldDelete(input: $input) {
8
+ deletedPrivateMetafieldId
9
+ userErrors {
10
+ field
11
+ message
12
+ }
13
+ }
14
+ }
15
+ GRAPHQL
16
+
17
+ def call(namespace:, key:, owner: nil)
18
+ input = {namespace: namespace, key: key}
19
+ input[:owner] = owner if owner
20
+
21
+ response = execute(MUTATION, input: input)
22
+ handle_user_errors(response.data.privateMetafieldDelete)
23
+ response.data = parse_data(response.data)
24
+ response
25
+ end
26
+
27
+ private
28
+
29
+ def parse_data(data)
30
+ id = data.privateMetafieldDelete.deletedPrivateMetafieldId
31
+ OpenStruct.new(
32
+ deleted_private_metafield_id: id
33
+ )
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,58 @@
1
+ module ShopifyGraphql
2
+ class UpsertPrivateMetafield
3
+ include ShopifyGraphql::Mutation
4
+
5
+ MUTATION = <<~GRAPHQL
6
+ mutation privateMetafieldUpsert($input: PrivateMetafieldInput!) {
7
+ privateMetafieldUpsert(input: $input) {
8
+ privateMetafield {
9
+ id
10
+ namespace
11
+ key
12
+ value
13
+ valueType
14
+ }
15
+ userErrors {
16
+ field
17
+ message
18
+ }
19
+ }
20
+ }
21
+ GRAPHQL
22
+
23
+ def call(namespace:, key:, value:, owner: nil)
24
+ input = {namespace: namespace, key: key}
25
+ input[:owner] = owner if owner
26
+
27
+ case value
28
+ when Hash, Array
29
+ value = value.to_json
30
+ value_type = "JSON_STRING"
31
+ when Integer
32
+ value_type = "INTEGER"
33
+ else
34
+ value = value.to_s
35
+ value_type = "STRING"
36
+ end
37
+ input[:valueInput] = {value: value, valueType: value_type}
38
+
39
+ response = execute(MUTATION, input: input)
40
+ handle_user_errors(response.data.privateMetafieldUpsert)
41
+ response.data = parse_data(response.data)
42
+ response
43
+ end
44
+
45
+ private
46
+
47
+ def parse_data(data)
48
+ metafield = data.privateMetafieldUpsert.privateMetafield
49
+ OpenStruct.new(
50
+ id: metafield.id,
51
+ namespace: metafield.namespace,
52
+ key: metafield.key,
53
+ value: metafield.value,
54
+ value_type: metafield.valueType
55
+ )
56
+ end
57
+ end
58
+ end
@@ -6,9 +6,13 @@ module ShopifyGraphql
6
6
 
7
7
  def execute(query, **variables)
8
8
  response = client.query(query: query, variables: variables)
9
- ShopifyGraphql::Response.new(handle_response(response))
9
+ Response.new(handle_response(response))
10
10
  rescue ShopifyAPI::Errors::HttpResponseError => e
11
- ShopifyGraphql::Response.new(handle_response(e.response))
11
+ Response.new(handle_response(e.response))
12
+ rescue JSON::ParserError => e
13
+ raise ServerError.new(e, "Invalid JSON response")
14
+ rescue Errno::ECONNRESET, Errno::EPIPE, Net::ReadTimeout, Net::OpenTimeout, OpenSSL::SSL::SSLError => e
15
+ raise ConnectionError.new(e, "Network error")
12
16
  end
13
17
 
14
18
  def parsed_body(response)
@@ -65,6 +69,8 @@ module ShopifyGraphql
65
69
  case error_code
66
70
  when "THROTTLED"
67
71
  raise TooManyRequests.new(response, error_message, code: error_code, doc: error_doc)
72
+ when "INTERNAL_SERVER_ERROR"
73
+ raise ServerError.new(response, error_message, code: error_code, doc: error_doc)
68
74
  else
69
75
  raise ConnectionError.new(response, error_message, code: error_code, doc: error_doc)
70
76
  end
@@ -1,3 +1,3 @@
1
1
  module ShopifyGraphql
2
- VERSION = "1.0.0"
2
+ VERSION = "1.1.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: shopify_graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kirill Platonov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-01-16 00:00:00.000000000 Z
11
+ date: 2023-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -66,7 +66,9 @@ files:
66
66
  - app/graphql/shopify_graphql/cancel_subscription.rb
67
67
  - app/graphql/shopify_graphql/create_recurring_subscription.rb
68
68
  - app/graphql/shopify_graphql/create_usage_subscription.rb
69
+ - app/graphql/shopify_graphql/delete_private_metafield.rb
69
70
  - app/graphql/shopify_graphql/get_app_subscription.rb
71
+ - app/graphql/shopify_graphql/upsert_private_metafield.rb
70
72
  - config/routes.rb
71
73
  - lib/shopify_graphql.rb
72
74
  - lib/shopify_graphql/client.rb