module GarminConnect::Base

Public Class Methods

cookies() click to toggle source
# File lib/garmin_connect/base.rb, line 84
def cookies
  @@cookies ||= ''
end
cookies=(cookies) click to toggle source
# File lib/garmin_connect/base.rb, line 87
def cookies=(cookies)
  @@cookies = cookies
end
format() click to toggle source
# File lib/garmin_connect/base.rb, line 90
def format
  @@format ||= :json
end
format=(format) click to toggle source
# File lib/garmin_connect/base.rb, line 93
def format=(format)
  format = :json unless [:json, :gpx, :tcx].include? format
  @@format = format
end
generate(obj) click to toggle source
# File lib/garmin_connect/base.rb, line 42
def generate(obj) # this is the only remaining place that the case doesnt work for Hash, Array
  # puts obj.class.inspect
  # puts Hash === obj
  case obj
  when Base::Hash, Base::Array
    obj
  when Hash
    Base::Hash[obj]
  when Array
    Base::Array[obj]
  else
    obj.class.to_s == 'Hash' ? Base::Hash[obj] : Base::Array[obj]
  end
end
request(base, format = nil, path) click to toggle source

def auth(p = {})

full = "https://connect.garmin.com/signin?login=login&login:signInButton=Sign%20In&javax.faces.ViewState=j_id1&login:loginUsernameField=#{p[:user]}&login:password=#{p[:pass]}&login:rememberMe=on"
url = 'https://connect.garmin.com/signin'
self.cookies = (RestClient.get url).cookies
if p[:user] && p[:pass]
  rr = RestClient::Resource.new full
  r = rr.post("", cookies: self.cookies) do |response, request, result, &block|
    if [301, 302, 307].include? response.code
      response.follow_redirection(request, result, &block)
      self.cookies = response.cookies
    else
      response.return!(request, result, &block)
    end
  end
end

end

# File lib/garmin_connect/base.rb, line 72
def request(base, format = nil, path)
  url = base + (format or self.format).to_s + path
  response = Net::HTTP.get(URI url)
  # response = RestClient.get(url, :cookies => self.cookies) do |response, request, result, &block|
  #   if [403].include? response.code
  #     puts request.inspect
  #   else
  #     response.return!(request, result, &block)
  #   end
  # end
  JSON.parse(response)
end