class Asana2Flowdock::Asana::Api
Constants
- Uri
Public Class Methods
new(token = ENV['ASANA_TOKEN'])
click to toggle source
# File lib/asana2flowdock/asana.rb, line 16 def initialize(token = ENV['ASANA_TOKEN']) @token = token end
Public Instance Methods
get(url, *args)
click to toggle source
# File lib/asana2flowdock/asana.rb, line 36 def get(url, *args) # url = url.to_s options = Map.options_for!(args) model = args.detect{|arg| arg <= Model} || options.delete(:model) query = options[:query] || options # unless url['://'] url = url_for(url) end # uri = URI.parse(url) unless query.blank? uri.query = query.map{|k,v| [CGI.escape(k.to_s), CGI.escape(v.to_s)].join('=')}.join('&') end url = uri.to_s # result = nil error = nil cmd = nil # 3.times do begin cmd = "curl -s -u #{ @token }: #{ url.inspect } 2>/dev/null" log(:debug, cmd) if debug result = `#{ cmd }` break result rescue => e error = e sleep(3) nil end end # raise "#{ cmd } blargh'd!?" if error || result.nil? # result = JSON.parse(result) if result['errors'] raise result['errors'].inspect end data = result['data'] # result_for(data, :model => model) end
log(level, *args, &block)
click to toggle source
# File lib/asana2flowdock/asana.rb, line 20 def log(level, *args, &block) if logger? logger.send(level, *args, &block) end end
me()
click to toggle source
# File lib/asana2flowdock/asana.rb, line 26 def me get("/users/me", :model => User) end
Also aliased as: my
model_for(model, *args, &block)
click to toggle source
# File lib/asana2flowdock/asana.rb, line 122 def model_for(model, *args, &block) model = model.for(*args, &block) ensure model.api = self if model end
result_for(data, options = {})
click to toggle source
# File lib/asana2flowdock/asana.rb, line 102 def result_for(data, options = {}) case data when Array data.map do |item| result_for(item, options) end when Hash attributes = Map.for(data) model = options[:model] if model model_for(model, attributes) else attributes end else raise ArgumentError, data.class.name end end
url_for(*paths)
click to toggle source
# File lib/asana2flowdock/asana.rb, line 95 def url_for(*paths) uri = Uri.dup path = uri.path uri.path = File.join(path, *paths.flatten.compact.map{|path| path.to_s}) uri.to_s end
users(options = {})
click to toggle source
# File lib/asana2flowdock/asana.rb, line 30 def users(options = {}) get("/users", User, options) end