summaryrefslogtreecommitdiff
path: root/lib/gitlab/identifier.rb
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-29 09:43:18 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-04-29 09:43:18 +0300
commita1704273ecd8809f918e5776f4bc27490169ae2a (patch)
tree56a087b6008342fe55e7e808224980db4f5bc7b5 /lib/gitlab/identifier.rb
parent348eb12598afb7f61b438da5e2240b709b17402f (diff)
downloadgitlab-ce-a1704273ecd8809f918e5776f4bc27490169ae2a.tar.gz
Refactor post-receive worker
Diffstat (limited to 'lib/gitlab/identifier.rb')
-rw-r--r--lib/gitlab/identifier.rb23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/gitlab/identifier.rb b/lib/gitlab/identifier.rb
new file mode 100644
index 00000000000..19cb5c38a53
--- /dev/null
+++ b/lib/gitlab/identifier.rb
@@ -0,0 +1,23 @@
+# Detect user based on identifier like
+# key-13 or user-36 or last commit
+module Gitlab
+ module Indentifier
+ def identify(identifier, project, newrev)
+ if identifier.blank?
+ # Local push from gitlab
+ email = project.repository.commit(newrev).author_email rescue nil
+ User.find_by_email(email) if email
+
+ elsif identifier =~ /\Auser-\d+\Z/
+ # git push over http
+ user_id = identifier.gsub("user-", "")
+ User.find_by_id(user_id)
+
+ elsif identifier =~ /\Akey-\d+\Z/
+ # git push over ssh
+ key_id = identifier.gsub("key-", "")
+ Key.find_by_id(key_id).try(:user)
+ end
+ end
+ end
+end