class IDoneThis::Client

Public Class Methods

new(options={}) click to toggle source
# File lib/idonethis/client.rb, line 10
def initialize(options={})
  options = IDoneThis.options.merge(options)

  Configuration::VALID_OPTIONS_KEYS.each do |key|
    send("#{key}=", options[key])
  end
end

Public Instance Methods

dones(start_date, end_date=nil) click to toggle source
# File lib/idonethis/client.rb, line 57
def dones(start_date, end_date=nil)
  start_date = Date.parse(start_date.to_s)
  end_date   = Date.parse((end_date || Date.today).to_s)

  self.get "dones/?start=#{start_date.to_s}&end=#{end_date.to_s}"
end
get(path) click to toggle source
# File lib/idonethis/client.rb, line 51
def get(path)
  req = self.connection.get(path)
  raise StandardError.new(req.body) unless req.status == 200
  req.body
end
login() click to toggle source
# File lib/idonethis/client.rb, line 18
def login
  begin
    self.login! 
  rescue
    return false
  end

  true
end
login!() click to toggle source
# File lib/idonethis/client.rb, line 28
def login!
  base = base_connection

  login_form = base.get('https://idonethis.com/accounts/login/')
  login_html = Nokogiri::HTML(login_form.body)
  login_csrf = login_html.search('form input[@name=csrfmiddlewaretoken]').first["value"]

  login_creds =  { username: self.username, password: self.password, csrfmiddlewaretoken: login_csrf}

  login_resp = base.post do |request|
    request.url 'https://idonethis.com/accounts/login/'
    request.headers['Referer'] = 'https://idonethis.com/accounts/login/'
    request.body = login_creds
  end

  raise ServiceError.new('Unable to login') if login_resp.status != 302

  self.connection = base
  self.connection.url_prefix = URI("https://idonethis.com/api/v3/team/#{self.team}/")

  login_resp
end