class Encounter::Connection

Connection class

@todo Allow UserAgent name override

Constants

DDL_NETWORKS

Attributes

domain[R]

Public Class Methods

new(options = {}) click to toggle source

@param [Hash] options ({}) @option options [String] :username Nickname or user id @option options [String] :password @option options [String] :domain Domain to connect. @option options [String] :network ('Encounter') Network to login.

Can be _Encounter_ or _QuestUa_.

@option options [String] :user_agent Browser identifier for connection.

@example Connect using account

Encounter::Connection.new(
  domain: 'test.en.cx',
  username: 'nickname',
  password: 'password'
)

@example Connect anonymous

Encounter::Connection.new(domain: 'test.en.cx')
# File lib/encounter/connection.rb, line 26
def initialize(options = {})
  raise ArgumentError, ':domain is required option' if options[:domain].nil?
  options[:network] ||= 'Encounter'
  @options = options
  @conn = new_faraday_connection
  raise 'No such domain' unless domain_exist?
  @domain = options[:domain]
  authorize unless options[:username].nil? || options[:password].nil?
end

Public Instance Methods

page_get(url, params = {}) click to toggle source

Load specified url using GET method. Params added to URL

@param [String] url @param [Hash] params

# File lib/encounter/connection.rb, line 40
def page_get(url, params = {})
  @conn.get(url, params).body
end

Private Instance Methods

authorize() click to toggle source

Authorize on domain

# File lib/encounter/connection.rb, line 80
def authorize
  res = @conn.post do |req|
    req.url '/login/signin?json=1'
    req.headers['Content-Type'] = 'application/json'
    req.body = {
      Login: @options[:username],
      Password:  @options[:password]
    }.to_json
  end
  res = JSON.parse res.body
  raise "Authorization error: #{res['Message']}" unless res['Error'].zero?
end
domain_exist?() click to toggle source

Check if domain exist

@return [Boolean]

# File lib/encounter/connection.rb, line 75
def domain_exist?
  !@conn.get('/').body.include? 'Domain name is unregistered!'
end
new_faraday_connection() click to toggle source
# File lib/encounter/connection.rb, line 60
def new_faraday_connection
  Faraday.new(url: "http://#{@options[:domain]}") do |conn|
    conn.request :url_encoded
    conn.use FaradayMiddleware::FollowRedirects
    conn.use :cookie_jar, jar: cookie_jar
    if @options[:user_agent]
      conn.headers[:user_agent] = @options[:user_agent]
    end
    conn.adapter Faraday.default_adapter
  end
end