diff options
author | Marius Mathiesen <marius.mathiesen@gmail.com> | 2009-03-24 15:36:20 +0100 |
---|---|---|
committer | Johan Sørensen <johan@johansorensen.com> | 2009-04-22 15:17:24 +0200 |
commit | f6a92104048adec69818395cde00a904181c0a13 (patch) | |
tree | f252653002d325515e108bf683ed8ce0e3d8856a /app/models/merge_request.rb | |
parent | 4e7d5c3bfa2d784a8f1e2b40dcad7e58e709a11c (diff) | |
download | gitorious-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.rb | 32 |
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 |