# 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