Sha256: b963271a6dbd2cfa01a4f5f230b294557e80a17d9be1a66acfc19227a4703617

Contents?: true

Size: 1.27 KB

Versions: 39

Compression:

Stored size: 1.27 KB

Contents

# frozen_string_literal: true

module Salestation
  class App
    class Request
      def self.create(env:, input:, initialize_hook: nil, span: nil)
        new(
          env: env,
          input: input,
          initialize_hook: initialize_hook,
          span: span
        ).to_success
      end

      attr_reader :env, :input, :span

      def with_input(input_additions)
        replace_input(input.merge(input_additions))
      end

      def replace_input(new_input)
        self.class.new(
          env: env,
          input: new_input,
          initialize_hook: @initialize_hook,
          span: span
        ).to_success
      end

      def to_success
        Deterministic::Result::Success(self)
      end

      def to_failure(input)
        Deterministic::Result::Failure(input)
      end

      # Initializes an asynchronous application hook
      #
      # Set a listener on App instance to receive a notification when the
      # asynchronous process completes.
      def initialize_hook(hook, payload)
        @initialize_hook.call(hook, payload)
      end

      private

      def initialize(env:, input:, initialize_hook: nil, span: nil)
        @env = env
        @input = input
        @initialize_hook = initialize_hook
        @span = span
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
salestation-5.5.0 lib/salestation/app/request.rb
salestation-5.3.3 lib/salestation/app/request.rb
salestation-5.3.2 lib/salestation/app/request.rb
salestation-5.3.1 lib/salestation/app/request.rb
salestation-5.3.0 lib/salestation/app/request.rb
salestation-5.2.0 lib/salestation/app/request.rb
salestation-5.1.0 lib/salestation/app/request.rb
salestation-5.0.2 lib/salestation/app/request.rb
salestation-5.0.1 lib/salestation/app/request.rb
salestation-5.0.0 lib/salestation/app/request.rb
salestation-4.6.1 lib/salestation/app/request.rb
salestation-4.6.0 lib/salestation/app/request.rb
salestation-4.5.0 lib/salestation/app/request.rb
salestation-4.4.2 lib/salestation/app/request.rb
salestation-4.4.1 lib/salestation/app/request.rb
salestation-4.4.0 lib/salestation/app/request.rb
salestation-4.3.1 lib/salestation/app/request.rb
salestation-4.3.0 lib/salestation/app/request.rb
salestation-4.2.0 lib/salestation/app/request.rb
salestation-4.1.0 lib/salestation/app/request.rb