Sha256: f9ec86c2164a2b36be69218b98f86aa5a37bb6e288e6561d1a7c6f0ec4306ba9

Contents?: true

Size: 1.01 KB

Versions: 3

Compression:

Stored size: 1.01 KB

Contents

module ClickSession
  class Async
    attr_reader :model
    attr_accessor :click_session

    def initialize(model)
      @model = model
    end

    def run
      validate_async_configuration

      @click_session = SessionState.create(model: model)
      serialize_success_response
    end

    private

    def validate_async_configuration
      if success_callback_missing? || failure_callback_missing?
        raise ConfigurationError.new("You need to configure the callback URLs in order to use the AsyncClickSession")
      end
    end

    def success_callback_missing?
      ClickSession.configuration.success_callback_url == nil
    end

    def failure_callback_missing?
      ClickSession.configuration.failure_callback_url == nil
    end

    def serialize_success_response
      serializer.serialize_success(click_session)
    end

    def serialize_failure_response
      serializer.serialize_failure(click_session)
    end

    def serializer
      @serializer ||= ClickSession::ResponseSerializer.new
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
click_session-0.1.1 lib/click_session/async.rb
click_session-0.1.0 lib/click_session/async.rb
click_session-0.0.1 lib/click_session/async.rb