Sha256: 0f7386dd0f644a60d5a5ce1bd4e9cff92d0e2e97cae19be36de4e13f7be30f71
Contents?: true
Size: 1.98 KB
Versions: 1
Compression:
Stored size: 1.98 KB
Contents
require 'uri' require 'net/https' require 'json' require 'net/http/post/multipart' require 'open-uri' require 'cgi' require 'active_support/inflector' require 'addressable/template' require 'base64' module Wakatime class Client def initialize(session) @session = session end def summary(start_at = Time.now - 86_400, end_at = Time.now) request_builder('summary', start: start_at, end: end_at) end def daily(start_at = Time.now - 86_400, end_at = Time.now) request_builder('summary/daily', start: start_at, end: end_at) end def actions(params = {}) params[:start] ||= Time.now - 86_400 params[:end] ||= Time.now params[:show] ||= 'file,branch,project,time' request_builder('actions', params) end def plugins(params = {}) params[:show] ||= 'name,version' request_builder('plugins', params) end def current_user(params = {}) params[:show] ||= 'email,timeout,last_plugin,timezone' request_builder('users/current', params) end private def cast_params(params) params.reduce({}) { |h, (k, v)| h[k] = cast_param(v); h } end def cast_param(param) case param.class.to_s when 'Time' param.to_i else param end end 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 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 end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
wakatime-0.0.2 | lib/wakatime/client.rb |