Sha256: b7a2ba8f39dbc01c8f4f2da6f4ac56577a0f300bf8b00296cd242157f3050f8e

Contents?: true

Size: 1.5 KB

Versions: 2

Compression:

Stored size: 1.5 KB

Contents

module ClickSession

  # Executes the click session and retuns a serialized response
  class Sync
    attr_reader :model
    attr_accessor :click_session

    def initialize(model)
      @model = model
    end

    def run
      @click_session = SessionState.create!(model: model)

      begin
        click_session_processor = ClickSessionProcessor.new(
          click_session,
          processor,
          configured_notifier,
          options
        )

        click_session_processor.process

        click_session.reported_back!
        serialize_success_response
      rescue TooManyRetriesError => e
        click_session.reported_back!
        serialize_failure_response
      end
    end

    private

    delegate :notifier_class, to: :clicksession_configuration

    def serialize_success_response
      serializer.serialize_success(click_session)
    end

    def serialize_failure_response
      serializer.serialize_failure(click_session)
    end

    def processor
      @processor ||= ClickSession::WebRunnerProcessor.new
    end

    def configured_notifier
      @notifier ||= notifier_class.new
    end

    def options
      if clicksession_configuration.screenshot_enabled?
        {
          screenshot_enabled: true,
          screenshot_options: clicksession_configuration.screenshot
        }
      else
        {}
      end
    end

    def clicksession_configuration
      ClickSession.configuration
    end

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

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
click_session-0.1.1 lib/click_session/sync.rb
click_session-0.1.0 lib/click_session/sync.rb