Sha256: f502a1294c2bbb7b094450907ba41d1d245bf7aef6b199d0f40fa8b437079ef5

Contents?: true

Size: 1.43 KB

Versions: 9

Compression:

Stored size: 1.43 KB

Contents

require 'akephalos/configuration'

if RUBY_PLATFORM != "java"
  require 'akephalos/remote_client'
  Akephalos::Client = Akephalos::RemoteClient
else
  require 'akephalos/htmlunit'
  require 'akephalos/htmlunit/ext/http_method'

  require 'akephalos/page'
  require 'akephalos/node'

  require 'akephalos/client/filter'
  require 'akephalos/client/listener'

  module Akephalos
    class Client
      java_import 'com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController'
      java_import 'com.gargoylesoftware.htmlunit.SilentCssErrorHandler'

      attr_reader :page

      def initialize
        @_client = java.util.concurrent.FutureTask.new do
          client = WebClient.new

          Filter.new(client)
          client.addWebWindowListener(Listener.new(self))
          client.setAjaxController(NicelyResynchronizingAjaxController.new)
          client.setCssErrorHandler(SilentCssErrorHandler.new)

          client
        end
        Thread.new { @_client.run }
      end

      def configuration=(config)
        Akephalos.configuration = config
      end

      def visit(url)
        client.getPage(url)
        page
      end

      def page=(_page)
        if @page != _page
          @page = Page.new(_page)
        end
        @page
      end

      private
      def client
        @client ||= @_client.get.tap do |client|
          client.getCurrentWindow.getHistory.ignoreNewPages_.set(true)
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
akephalos-0.2.3-java lib/akephalos/client.rb
akephalos-0.2.3 lib/akephalos/client.rb
akephalos-0.2.2-java lib/akephalos/client.rb
akephalos-0.2.2 lib/akephalos/client.rb
akephalos-0.2.1 lib/akephalos/client.rb
akephalos-0.2.0 lib/akephalos/client.rb
akephalos-0.2.0-java lib/akephalos/client.rb
akephalos-0.1.0-java lib/akephalos/client.rb
akephalos-0.1.0 lib/akephalos/client.rb