Sha256: de97dd28461d0362378cdad556804f16614d0fc8badbe394ae62e9e8c23f298a
Contents?: true
Size: 1.94 KB
Versions: 1
Compression:
Stored size: 1.94 KB
Contents
require 'uri' require 'net/https' require 'json' require 'net/http/post/multipart' require 'open-uri' require 'cgi' require 'active_support/inflector' module Wakatime class Client def initialize(session) @session = session end def summary(start_at = Time.now - 86400 , end_at = Time.now ) request_builder("summary", {:start => start_at, :end => end_at}) end def daily(start_at = Time.now - 86400 , end_at = Time.now ) request_builder("summary/daily", {:start => start_at, :end => end_at}) end def actions(params = {}) params[:start] ||= Time.now - 86400 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) casted_params = params.inject({}) { |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::URI.new uri.query_values = cast_params(params) url = "#{Wakatime::API_URL}/#{action}?#{uri.query}" response = @session.get( url ) 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.1 | lib/wakatime/client.rb |