summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Wyatt <wyatt.mike@gmail.com>2015-12-29 15:39:58 -0400
committerMike Wyatt <wyatt.mike@gmail.com>2015-12-29 15:39:58 -0400
commit12ec1e3c407a4b72f670483a558a9cb95449c838 (patch)
tree0afa30c4369ec53d9ad7d92ffaf6359458613b17
parent2cd2c54bd1c83f8545b5f903d7717c4848453f0c (diff)
downloadgitlab-ce-12ec1e3c407a4b72f670483a558a9cb95449c838.tar.gz
Update Asana service to work with Personal Access Token, lessen number of requests to Asana API
-rw-r--r--app/models/project_services/asana_service.rb52
1 files changed, 21 insertions, 31 deletions
diff --git a/app/models/project_services/asana_service.rb b/app/models/project_services/asana_service.rb
index a16adf10432..111a60431b1 100644
--- a/app/models/project_services/asana_service.rb
+++ b/app/models/project_services/asana_service.rb
@@ -67,35 +67,34 @@ http://developer.asana.com/documentation/#api_keys'
%w(push)
end
+ def client
+ @_client ||= begin
+ Asana::Client.new do |c|
+ c.authentication :access_token, api_key
+ end
+ end
+ end
+
def execute(data)
return unless supported_events.include?(data[:object_kind])
- Asana.configure do |client|
- client.api_key = api_key
- end
-
- user = data[:user_name]
+ # check the branch restriction is poplulated and branch is not included
branch = Gitlab::Git.ref_name(data[:ref])
-
branch_restriction = restrict_to_branch.to_s
-
- # check the branch restriction is poplulated and branch is not included
if branch_restriction.length > 0 && branch_restriction.index(branch).nil?
return
end
+ user = data[:user_name]
project_name = project.name_with_namespace
- push_msg = user + ' pushed to branch ' + branch + ' of ' + project_name
+ push_msg = "#{user} pushed to branch #{branch} of #{project_name} ( #{commit[:url]} )"
data[:commits].each do |commit|
- check_commit(' ( ' + commit[:url] + ' ): ' + commit[:message], push_msg)
+ check_commit(commit[:message], push_msg)
end
end
def check_commit(message, push_msg)
- task_list = []
- close_list = []
-
# matches either:
# - #1234
# - https://app.asana.com/0/0/1234
@@ -109,28 +108,19 @@ http://developer.asana.com/documentation/#api_keys'
# tuple will be
# [ 'fix', 'id_from_url', 'id_from_pound' ]
taskid = tuple[2] || tuple[1]
- task_list.push(taskid)
-
- if tuple[0]
- close_list.push(taskid)
- end
- end
-
- # post commit to every taskid found
- task_list.each do |taskid|
- task = Asana::Task.find(taskid)
- if task
- task.create_story(text: push_msg + ' ' + message)
+ begin
+ task = Asana::Task.find_by_id(client, taskid)
+ rescue Exception => e
+ puts e.message
+ puts e.backtrace.inspect
+ next
end
- end
- # close all tasks that had 'fix(ed/es/ing) #:id' in them
- close_list.each do |taskid|
- task = Asana::Task.find(taskid)
+ task.add_comment(text: "#{push_msg} #{message}")
- if task
- task.modify(completed: true)
+ if tuple[0]
+ task.update(completed: true)
end
end
end