Sha256: 7efa3289484ea96e442a1c9aee2b61ef35287e424c095926d3550452d610f4fa

Contents?: true

Size: 1.32 KB

Versions: 1

Compression:

Stored size: 1.32 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)
      end

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

      private
      def client
        @client ||= @_client.get
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
akephalos-0.0.5 lib/akephalos/client.rb