Class: MOCO::API
- Inherits:
-
Object
- Object
- MOCO::API
- Defined in:
- lib/moco/api.rb
Overview
MOCO::API abstracts access to the MOCO API and its entities
Instance Method Summary collapse
- #archive_project(project_id) ⇒ Object
- #assign_project_to_group(project_id, project_group_id) ⇒ Object
- #create_activities_bulk(activities) ⇒ Object
- #create_activity(activity) ⇒ Object
- #delete_activity(activity_id) ⇒ Object
- #disable_project_report_sharing(project_id) ⇒ Object
- #disregard_activities(reason:, activity_ids:, company_id:, project_id: nil) ⇒ Object
- #get_activities(filters = {}) ⇒ Object
- #get_activity(id) ⇒ Object
- #get_assigned_projects(**args) ⇒ Object
- #get_project_report(project_id) ⇒ Object
- #get_projects(**args) ⇒ Object
-
#initialize(subdomain, api_key) ⇒ API
constructor
A new instance of API.
- #share_project_report(project_id) ⇒ Object
- #start_activity_timer(activity_id) ⇒ Object
- #stop_activity_timer(activity_id) ⇒ Object
- #unarchive_project(project_id) ⇒ Object
- #unassign_project_from_group(project_id) ⇒ Object
- #update_activity(activity) ⇒ Object
Constructor Details
#initialize(subdomain, api_key) ⇒ API
Returns a new instance of API.
9 10 11 12 13 14 15 16 17 18 |
# File 'lib/moco/api.rb', line 9 def initialize(subdomain, api_key) @subdomain = subdomain @api_key = api_key @conn = Faraday.new do |f| f.request :json f.response :json f.request :authorization, "Token", "token=#{@api_key}" if @api_key f.url_prefix = "https://#{@subdomain}.mocoapp.com/api/v1" end end |
Instance Method Details
#archive_project(project_id) ⇒ Object
94 95 96 |
# File 'lib/moco/api.rb', line 94 def archive_project(project_id) @conn.put("projects/#{project_id}/archive") end |
#assign_project_to_group(project_id, project_group_id) ⇒ Object
114 115 116 |
# File 'lib/moco/api.rb', line 114 def assign_project_to_group(project_id, project_group_id) @conn.put("projects/#{project_id}/assign_project_group", { project_group_id: project_group_id }) end |
#create_activities_bulk(activities) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/moco/api.rb', line 46 def create_activities_bulk(activities) api_entities = activities.map do |activity| activity.to_h.except(:id, :project, :user, :customer).tap do |h| h[:project_id] = activity.project.id h[:task_id] = activity.task.id end end @conn.post("activities/bulk", { activities: api_entities }) end |
#create_activity(activity) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/moco/api.rb', line 56 def create_activity(activity) api_entity = activity.to_h.except(:id, :project, :user, :customer).tap do |h| h[:project_id] = activity.project.id h[:task_id] = activity.task.id end @conn.post("activities", api_entity) end |
#delete_activity(activity_id) ⇒ Object
90 91 92 |
# File 'lib/moco/api.rb', line 90 def delete_activity(activity_id) @conn.delete("activities/#{activity_id}") end |
#disable_project_report_sharing(project_id) ⇒ Object
110 111 112 |
# File 'lib/moco/api.rb', line 110 def disable_project_report_sharing(project_id) @conn.put("projects/#{project_id}/disable_share") end |
#disregard_activities(reason:, activity_ids:, company_id:, project_id: nil) ⇒ Object
80 81 82 83 84 85 86 87 88 |
# File 'lib/moco/api.rb', line 80 def disregard_activities(reason:, activity_ids:, company_id:, project_id: nil) payload = { reason: reason, activity_ids: activity_ids, company_id: company_id } payload[:project_id] = project_id if project_id @conn.post("activities/disregard", payload) end |
#get_activities(filters = {}) ⇒ Object
36 37 38 39 |
# File 'lib/moco/api.rb', line 36 def get_activities(filters = {}) response = @conn.get("activities?#{Faraday::Utils.build_query(filters)}") parse_activities_response(response.body) end |
#get_activity(id) ⇒ Object
41 42 43 44 |
# File 'lib/moco/api.rb', line 41 def get_activity(id) response = @conn.get("activities/#{id}") parse_activities_response([response.body]).first end |
#get_assigned_projects(**args) ⇒ Object
31 32 33 34 |
# File 'lib/moco/api.rb', line 31 def get_assigned_projects(**args) response = @conn.get("projects/assigned?#{Faraday::Utils.build_query(args)}") parse_projects_response(response.body) end |
#get_project_report(project_id) ⇒ Object
102 103 104 |
# File 'lib/moco/api.rb', line 102 def get_project_report(project_id) @conn.get("projects/#{project_id}/report") end |
#get_projects(**args) ⇒ Object
26 27 28 29 |
# File 'lib/moco/api.rb', line 26 def get_projects(**args) response = @conn.get("projects?#{Faraday::Utils.build_query(args)}") parse_projects_response(response.body) end |
#share_project_report(project_id) ⇒ Object
106 107 108 |
# File 'lib/moco/api.rb', line 106 def share_project_report(project_id) @conn.put("projects/#{project_id}/share") end |
#start_activity_timer(activity_id) ⇒ Object
72 73 74 |
# File 'lib/moco/api.rb', line 72 def start_activity_timer(activity_id) @conn.patch("activities/#{activity_id}/start_timer") end |
#stop_activity_timer(activity_id) ⇒ Object
76 77 78 |
# File 'lib/moco/api.rb', line 76 def stop_activity_timer(activity_id) @conn.patch("activities/#{activity_id}/stop_timer") end |
#unarchive_project(project_id) ⇒ Object
98 99 100 |
# File 'lib/moco/api.rb', line 98 def unarchive_project(project_id) @conn.put("projects/#{project_id}/unarchive") end |
#unassign_project_from_group(project_id) ⇒ Object
118 119 120 |
# File 'lib/moco/api.rb', line 118 def unassign_project_from_group(project_id) @conn.put("projects/#{project_id}/unassign_project_group") end |
#update_activity(activity) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/moco/api.rb', line 64 def update_activity(activity) api_entity = activity.to_h.except(:project, :user, :customer).tap do |h| h[:project_id] = activity.project.id h[:task_id] = activity.task.id end @conn.put("activities/#{activity.id}", api_entity) end |