Sha256: 7db00f66c4a01f46e0de595235c6ff7df964f523634b3e722139f2ca62897572

Contents?: true

Size: 1.29 KB

Versions: 17

Compression:

Stored size: 1.29 KB

Contents

module NulogyMessageBusProducer
  module Configuration
    class QueryParser
      class ParseError < StandardError
        attr_reader :source_error

        def intialize(source_error)
          @source_error = source_error
        end
      end

      def initialize(query)
        @query = query
      end

      def subscription_id
        parse

        argument("subscriptionId")
      rescue => e
        error("subscriptionId", e)
      end

      def subscription_group_id
        parse

        argument("subscriptionGroupId")
      rescue => e
        error("subscriptionGroupId", e)
      end

      def event_type
        parse

        first_selection.name
      rescue => e
        error("event type", e)
      end

      def topic
        parse

        argument("topicName")
      rescue => e
        error("topic", e)
      end

      private

      def parse
        @gql ||= GraphQL::Language::Parser.parse(@query)
      end

      def argument(field)
        first_selection
          .arguments.detect { |e| e.name == field }
          .value
      end

      def first_selection
        @gql
          .definitions.first
          .selections.first
      end

      def error(field, err)
        raise ParseError.new(err), "Error extracting #{field} from the subscription"
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
nulogy_message_bus_producer-5.0.8 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.7 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.6 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.5 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.4 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.3 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.2 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.1 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.1.alpha lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-5.0.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-4.0.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-3.7.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-3.6.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-3.5.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-4.0.0.alpha lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-3.4.1 lib/nulogy_message_bus_producer/configuration/query_parser.rb
nulogy_message_bus_producer-3.4.0 lib/nulogy_message_bus_producer/configuration/query_parser.rb