class ShopifyAPI::Webhooks::Registrations::PubSub
Public Instance Methods
build_check_query()
click to toggle source
# File lib/shopify_api/webhooks/registrations/pub_sub.rb, line 30 def build_check_query <<~QUERY { webhookSubscriptions(first: 1, topics: #{@topic}) { edges { node { id endpoint { __typename ... on WebhookPubSubEndpoint { pubSubProject pubSubTopic } } } } } } QUERY end
callback_address()
click to toggle source
# File lib/shopify_api/webhooks/registrations/pub_sub.rb, line 11 def callback_address @path end
mutation_name(webhook_id)
click to toggle source
# File lib/shopify_api/webhooks/registrations/pub_sub.rb, line 25 def mutation_name(webhook_id) webhook_id ? "pubSubWebhookSubscriptionUpdate" : "pubSubWebhookSubscriptionCreate" end
parse_check_result(body)
click to toggle source
# File lib/shopify_api/webhooks/registrations/pub_sub.rb, line 52 def parse_check_result(body) edges = body.dig("data", "webhookSubscriptions", "edges") || {} webhook_id = nil current_address = nil unless edges.empty? node = edges[0]["node"] webhook_id = node["id"].to_s current_address = "pubsub://#{node["endpoint"]["pubSubProject"]}:#{node["endpoint"]["pubSubTopic"]}" end { webhook_id: webhook_id, current_address: current_address } end
subscription_args()
click to toggle source
# File lib/shopify_api/webhooks/registrations/pub_sub.rb, line 16 def subscription_args project_topic_pair = callback_address.gsub(%r{^pubsub://}, "").split(":") project = project_topic_pair[0] topic = project_topic_pair[1] { pubSubProject: project, pubSubTopic: topic, includeFields: fields, metafieldNamespaces: metafield_namespaces, }.compact end