class Rasana::Api
Attributes
config[R]
me[RW]
project[RW]
tag[RW]
workspace[RW]
Public Class Methods
new(options)
click to toggle source
# File lib/rasana/api.rb, line 15 def initialize(options) @config = Config.new(options) @workspace = find_workspace(@config['workspace']) @project = find_project(@config['project']) @tag = find_tag(@config['tag']) end
Public Instance Methods
all_tasks()
click to toggle source
#<Hashie::Mash errors=[#<Hashie::Mash
message="Must specify exactly one of project, tag, or workspace">]>
# File lib/rasana/api.rb, line 60 def all_tasks vputs "fetching all tasks..." workspaces.data.map do |w| on(w.id).tasks.data end.flatten end
api_key()
click to toggle source
# File lib/rasana/api.rb, line 22 def api_key config['api_key'] end
on(workspace_id_or_name)
click to toggle source
# File lib/rasana/api.rb, line 53 def on(workspace_id_or_name) self.workspace = find_workspace(workspace_id_or_name) self end
projects()
click to toggle source
# File lib/rasana/api.rb, line 34 def projects get '/projects' end
tasks()
click to toggle source
# File lib/rasana/api.rb, line 42 def tasks if workspace vputs "fetching tasks from... #{workspace.name}" get "/tasks?workspace=#{workspace.id}&assignee=#{me.data.id}" elsif project # TODO elsif tag # TODO else all_tasks end end
workspaces()
click to toggle source
# File lib/rasana/api.rb, line 30 def workspaces get '/workspaces' end
Private Instance Methods
connection()
click to toggle source
Basic api comonents
# File lib/rasana/api.rb, line 95 def connection options = { url: 'https://app.asana.com/', ssl: { verify: false } } @connection ||= Faraday.new(options) do |faraday| faraday.adapter Faraday.default_adapter # required faraday.request :json faraday.use FaradayMiddleware::Mashify faraday.use FaradayMiddleware::ParseJson end end
find_project(id_or_name)
click to toggle source
# File lib/rasana/api.rb, line 77 def find_project(id_or_name) find_resource(id_or_name, projects) end
find_resource(id_or_name, resources)
click to toggle source
# File lib/rasana/api.rb, line 85 def find_resource(id_or_name, resources) case id_or_name when Integer resources.data.find { |w| w.id == id_or_name } when String resources.data.find { |w| w.name =~ /#{id_or_name}/ } end end
find_tag(id_or_name)
click to toggle source
# File lib/rasana/api.rb, line 81 def find_tag(id_or_name) find_resource(id_or_name, tags) end
find_workspace(id_or_name)
click to toggle source
# File lib/rasana/api.rb, line 73 def find_workspace(id_or_name) find_resource(id_or_name, workspaces) end
get(path, params = {})
click to toggle source
# File lib/rasana/api.rb, line 121 def get(path, params = {}) request :get, path, params end
post(path, params = {})
click to toggle source
# File lib/rasana/api.rb, line 125 def post(path, params = {}) request :post, path, params end
request(_method, _path, params = {})
click to toggle source
# File lib/rasana/api.rb, line 108 def request(_method, _path, params = {}) connection.headers[:authorization] = 'Basic ' + ::Base64.encode64(api_key + ':').chomp path = '/api/1.0' + _path response = connection.send(_method) do |req| case _method when :get req.url path, params end end response.body end
vputs(str)
click to toggle source
# File lib/rasana/api.rb, line 68 def vputs(str) return unless config[:verbose] puts str end