summaryrefslogtreecommitdiffstats
path: root/app/models/merge_request.rb
diff options
context:
space:
mode:
authorMarius Mathiesen <marius.mathiesen@gmail.com>2009-03-24 15:36:20 +0100
committerJohan Sørensen <johan@johansorensen.com>2009-04-22 15:17:24 +0200
commitf6a92104048adec69818395cde00a904181c0a13 (patch)
treef252653002d325515e108bf683ed8ce0e3d8856a /app/models/merge_request.rb
parent4e7d5c3bfa2d784a8f1e2b40dcad7e58e709a11c (diff)
downloadgitorious-mainline-outdated-f6a92104048adec69818395cde00a904181c0a13.zip
gitorious-mainline-outdated-f6a92104048adec69818395cde00a904181c0a13.tar.gz
gitorious-mainline-outdated-f6a92104048adec69818395cde00a904181c0a13.tar.bz2
Adding configurable merge request signoff information:
- Project has got settings for OAuth settings (ie. consumer) - MergeRequest has got settings for access token information. Instead of storing it in the user's session we store it in the db, giving us the possibility to call back when the state changes - The Project now builds an OAuth consumer from the settings in the db - The MergeRequests use this consumer (which is stubbed out when testing) - Removed the passed arguments when performing OAuth validations, as these are now stored - Removed the now obsolete CONSUMER constant (OAuth settings can now safely be removed from gitorious.yml)
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r--app/models/merge_request.rb32
1 files changed, 21 insertions, 11 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb
index ca175b2..e6a0ee5 100644
--- a/app/models/merge_request.rb
+++ b/app/models/merge_request.rb
@@ -205,24 +205,34 @@ class MergeRequest < ActiveRecord::Base
end
end
- def terms_accepted(oauth_request_token, oauth_request_secret)
- validate_through_oauth(oauth_request_token, oauth_request_secret) do
+ def oauth_request_token=(token)
+ self.oauth_token = token.token
+ self.oauth_secret = token.secret
+ end
+
+ def terms_accepted
+ validate_through_oauth do
confirmed_by_user
+ callback_response = access_token.post('/merge_requests', {'commit_id' => ending_commit, 'user_name' => user.title, 'user_email' => user.email})
+ update_attributes(:contribution_agreement_version => callback_response.body)
end
end
- def validate_through_oauth(token, secret)
- yield if valid_oauth_credentials?(token, secret)
+ def validate_through_oauth
+ yield if valid_oauth_credentials?
end
- def valid_oauth_credentials?(token, secret)
- access_token = CONSUMER.build_access_token(token, secret)
- response = access_token.get("/merge_requests.xml")
- RAILS_DEFAULT_LOGGER.debug("OAuth: Sending off request")
- post_response = access_token.post('/merge_requests', {'commit_id' => ending_commit, 'user_name' => user.title, 'user_email' => user.email})
- RAILS_DEFAULT_LOGGER.debug("OAuth: Sent request, got #{post_response.body}")
- return Net::HTTPSuccess === post_response
+
+ def access_token
+ @access_token ||= oauth_consumer.build_access_token(oauth_token, oauth_secret)
end
+ def oauth_consumer
+ target_repository.project.oauth_consumer
+ end
+ def valid_oauth_credentials?
+ response = access_token.get("/merge_requests.xml")
+ return Net::HTTPSuccess === response
+ end
end