class Wakatime::Client
Public Class Methods
new(session)
click to toggle source
# File lib/wakatime/client.rb, line 13 def initialize(session) @session = session end
Public Instance Methods
current_user(params = {})
click to toggle source
# File lib/wakatime/client.rb, line 37 def current_user(params = {}) params[:show] ||= 'email,timeout,last_plugin,timezone' request_builder('users/current', params) end
durations(date = Date.today)
click to toggle source
# File lib/wakatime/client.rb, line 21 def durations(date = Date.today) request_builder('users/current/durations', date: date) end
heartbeats(params = {})
click to toggle source
# File lib/wakatime/client.rb, line 25 def heartbeats(params = {}) params[:date] ||= Date.today params[:show] ||= 'file,branch,project,time' request_builder('users/current/heartbeats', params) end
plugins(params = {})
click to toggle source
# File lib/wakatime/client.rb, line 32 def plugins(params = {}) params[:show] ||= 'name,version' request_builder('users/current/plugins', params) end
summaries(start_at = Time.now - 86_400, end_at = Time.now)
click to toggle source
# File lib/wakatime/client.rb, line 17 def summaries(start_at = Time.now - 86_400, end_at = Time.now) request_builder('users/current/summaries', start: start_at, end: end_at) end
Private Instance Methods
cast_param(param)
click to toggle source
# File lib/wakatime/client.rb, line 48 def cast_param(param) case param.class.to_s when 'Time' param.to_i else param end end
cast_params(params)
click to toggle source
# File lib/wakatime/client.rb, line 44 def cast_params(params) params.reduce({}) { |h, (k, v)| h[k] = cast_param(v); h } end
request_builder(action, params = {}, raw = false)
click to toggle source
# File lib/wakatime/client.rb, line 57 def request_builder(action, params = {}, raw = false) uri = Addressable::Template.new("#{Wakatime::API_URL}/#{action}{?query*}") uri = uri.expand( 'query' => cast_params(params) ) response = @session.get(uri.to_s) if raw response else response_factory(action, response) end end
response_factory(action, response)
click to toggle source
# File lib/wakatime/client.rb, line 72 def response_factory(action, response) klass = Object.const_get("Wakatime::Models::#{action.split('/').first.singularize.classify}") if response['data'].is_a? Hash klass.new(response['data']) else response['data'].map do |attributes| klass.new(attributes) end end end