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