Sha256: dc5fec96db6c8771784157a1dc352597903721da60412a77cdd676490166f590
Contents?: true
Size: 1.72 KB
Versions: 17
Compression:
Stored size: 1.72 KB
Contents
# typed: strict # frozen_string_literal: true module ShopifyAPI module Webhooks module Registrations class EventBridge < Registration extend T::Sig sig { override.returns(String) } def callback_address @path end sig { override.returns(T::Hash[Symbol, String]) } def subscription_args { arn: callback_address, includeFields: fields }.compact end sig { override.params(webhook_id: T.nilable(String)).returns(String) } def mutation_name(webhook_id) webhook_id ? "eventBridgeWebhookSubscriptionUpdate" : "eventBridgeWebhookSubscriptionCreate" end sig { override.returns(String) } def build_check_query <<~QUERY { webhookSubscriptions(first: 1, topics: #{@topic}) { edges { node { id endpoint { __typename ... on WebhookEventBridgeEndpoint { arn } } } } } } QUERY end sig { override.params(body: T::Hash[String, T.untyped]).returns(T::Hash[Symbol, String]) } 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 = node["endpoint"]["arn"].to_s end { webhook_id: webhook_id, current_address: current_address } end end end end end
Version data entries
17 entries across 17 versions & 1 rubygems