class WiteiWebApi::Base

Private Class Methods

agent() click to toggle source
# File lib/witei_web_api/base.rb, line 9
def self.agent
  Thread.current[:witei_web_api_agent] ||= begin
    agent = WiteiWebApi::Agent.new
    login(agent)
    agent
  end
end
get(uri) click to toggle source
# File lib/witei_web_api/base.rb, line 40
def self.get(uri)
  page = agent.get("https://witei.com#{uri}")
  uri_path = URI.parse(uri).path
  if page.uri.path != uri_path
    page = login(agent, uri: uri)
    if page.uri.path != uri_path
      raise LoggedOutException.new("Cannot get #{uri}")
    end
  end
  page
end
has_one(name, &block) click to toggle source
# File lib/witei_web_api/base.rb, line 31
def self.has_one(name, &block)
  define_method(name) do
    id = send(:"#{name}_id")
    if id && !id.empty?
      block.call.find(id)
    end
  end
end
login(agent, login: WiteiWebApi.login, password: WiteiWebApi.password, uri: nil) click to toggle source
# File lib/witei_web_api/base.rb, line 17
def self.login(agent, login: WiteiWebApi.login, password: WiteiWebApi.password, uri: nil)
  uri ||= '/pro/agencies/dashboard/'
  page = agent.get("https://witei.com/pro/accounts/login/?next=#{CGI.escape(uri)}")

  form = page.form_with(class: 'form-horizontal')
  form.login = login
  form.password = password
  new_page = form.submit
  if new_page.uri.path != URI.parse(uri).path
    raise(LoginFailedException.new)
  end
  new_page
end