Sha256: 66253d950cd154236fb39f731af1b8fe9a217b718726ad78f0208aa9d1c86ebf

Contents?: true

Size: 927 Bytes

Versions: 1

Compression:

Stored size: 927 Bytes

Contents

# frozen_string_literal: true

# https://upstash.com/docs/qstash/api/messages/cancel
# https://upstash.com/docs/qstash/api/messages/bulk-cancel
module Qstash
  module Message
    class Cancel
      include Qstash::Callable
      attr_reader :message_ids, :headers

      def initialize(message_ids, headers: {})
        @message_ids = Array(message_ids)
        @headers = headers
      end

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

      private

      def base_url
        Qstash.config.url.sub(/\/$/, "")
      end

      def body
        (message_ids.length > 1) ? {messageIds: message_ids} : {}
      end

      def endpoint
        [
          base_url,
          (message_ids.length > 1) ? Endpoints::BULK_CANCEL_ENDPOINT : "#{Endpoints::CANCEL_ENDPOINT}/#{message_ids.first}"
        ].join("/")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
qstash-rb-0.1.3 lib/qstash/message/cancel.rb