Sha256: ae5abc3b88a4e69c90d757f279f3199ebd9ba39d0f06892a09313019a61ad9e5

Contents?: true

Size: 1013 Bytes

Versions: 2

Compression:

Stored size: 1013 Bytes

Contents

# frozen_string_literal: true

# https://upstash.com/docs/qstash/api/enqueue
module Qstash
  module Message
    class Enqueue
      attr_reader :queue_name, :destination, :body, :headers
      ENDPOINT = "v2/enqueue"

      class << self
        def call(queue_name:, destination:, body:, headers: {})
          new(
            queue_name: queue_name,
            destination: destination,
            body: body,
            headers: headers
          ).call
        end
      end

      def initialize(queue_name:, destination:, body:, headers: {})
        @queue_name = queue_name
        @destination = destination
        @body = body
        @headers = headers
      end

      def call
        uri = URI(endpoint)
        client = Qstash::HttpClient.new(uri)
        client.post(body, headers)
      end

      private

      def endpoint
        [
          Qstash.config.url.sub(/\/$/, ""),
          ENDPOINT,
          queue_name,
          destination
        ].join("/")
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
qstash-rb-0.1.1 lib/qstash/message/enqueue.rb
qstash-rb-0.1.0 lib/qstash/message/enqueue.rb