diff --git a/.gitignore b/.gitignore index 482a03e0e..cd770bf1b 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,5 @@ tmp pkg .iml Gemfile.lock + +github-services*.gem diff --git a/README.md b/README.md index e27689300..e6e708a00 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,10 @@ + +🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 + +**_GitHub Services has been deprecated_. No more contributions will be accepted. Please see our [blog post](https://developer.github.com/changes/2018-04-25-github-services-deprecation/) for more information.** + +🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨 + GitHub Services =============== diff --git a/docs/agilezen b/docs/agilezen deleted file mode 100644 index 81eb1d0a7..000000000 --- a/docs/agilezen +++ /dev/null @@ -1,17 +0,0 @@ -AgileZen is a simple and easy to use project management tool that helps you collaborate with your team and visualize all your work in progress. - -Integrating with GitHub will allow you to associate Git commits to specific story cards. If you add a story number to your commit message, AgileZen will associate the commit with the story, making it visible on the board and story focus screen. For example, if you add the text `#123` to your commit message, AgileZen will attach the commit to story card 123. - -This allows your team to stay up to date on the latest development work and view a history of commits for each story. - -Install Notes -------------- - -1. **API Key** - This is your AgileZen API key. -2. **Project ID** - This is the project's numeric ID (the number in the project's URL on AgileZen) to associate with the repository. -3. **Branches** - This is an optional space-separated list of branches to watch commits for. Commits to other branches will not be notified to AgileZen. If no branches are specified, AgileZen will be notified of all commits. - -Need Help? ----------- - -Check out our [step by step instructions](http://help.agilezen.com/kb/integrations/github). diff --git a/docs/boxcar b/docs/boxcar deleted file mode 100644 index 4584be2c3..000000000 --- a/docs/boxcar +++ /dev/null @@ -1,10 +0,0 @@ -Install Notes -------------- - -Send your commits to Boxcar, a messaging platform. Get instant commit messages on your desktop and mobile devices. - -1. Download and install Boxcar from - -2. Type in the Boxcar e-mail addresses of the users wanting to be notified of commits to this repository (comma separated). - -3. If the user does not yet have Boxcar, we'll send them an e-mail to let them know where they can get it. \ No newline at end of file diff --git a/docs/codeportingcsharp2java b/docs/codeportingcsharp2java deleted file mode 100644 index b989bbcb6..000000000 --- a/docs/codeportingcsharp2java +++ /dev/null @@ -1,10 +0,0 @@ -Allows you to setup a GitHub repository to port C# code to Java on git commit. - -Install Notes -------------- - -1. Enter name for your project (It will be used to organize target repository structure) -2. Enter name for your source repository, the one which contains CSharp code. -3. Enter name for your target repository, the one which will contain the Java ported code (the target repository must be git initialized first). -4. Signup for a CodePorting account at https://apps.codeporting.com/signup and add your CodePorting username/password above. -5. Authorize CodePorting to use your GitHub account and enter GitHub access token above on service settings page. diff --git a/docs/coffeedocinfo b/docs/coffeedocinfo deleted file mode 100644 index 470cbd8d5..000000000 --- a/docs/coffeedocinfo +++ /dev/null @@ -1,2 +0,0 @@ -This service allows you to auto-publish documentation for your CoffeeScript library. -The resulting documentation will be hosted for you at http://coffeedoc.info/github/your-name/your-project diff --git a/docs/coop b/docs/coop deleted file mode 100644 index 6a30dcad0..000000000 --- a/docs/coop +++ /dev/null @@ -1,8 +0,0 @@ -Install Notes -------------- - - 1. group_id is in the URL for your group, for example if your URL is "http://coopapp.com/groups/1066", your group_id is 1066 - - 2. token is your API token. You can find this token in the group management panel as the group administrator, eg: "http://coopapp.com/groups/1066/edit" - - 3. Commit messages show up as being from Cobot, the Co-op message robot \ No newline at end of file diff --git a/docs/cube b/docs/cube deleted file mode 100644 index 8e01ef25e..000000000 --- a/docs/cube +++ /dev/null @@ -1,6 +0,0 @@ -Install Notes -------------- - - 1. **Domain** should be the company domain for Google Apps account or user email address for individual accounts. - 2. **Project** should be your project name. - 3. **Token** should be the project integration token as seen in the project's Settings tab. \ No newline at end of file diff --git a/docs/depending b/docs/depending deleted file mode 100644 index 10e233a29..000000000 --- a/docs/depending +++ /dev/null @@ -1,7 +0,0 @@ -Install Notes -------------- - -1. Create an account at http://depending.in -2. Enter your Token (see instructions below) - -To get your Token: Log into your Depending account, click the carret icon at the top-right, then click the setting tab. \ No newline at end of file diff --git a/docs/distiller b/docs/distiller deleted file mode 100644 index fbe70bf3a..000000000 --- a/docs/distiller +++ /dev/null @@ -1,14 +0,0 @@ -Distiller is a hosted continuous integration service. - -If you already connected this repository to Distiller we've probably already set up a webhook for this repository - check this list of webhooks above. - -If you haven't connected this project but want to: - -1. Go to http://distiller.io/ and sign up with your GitHub credentials. -2. Create a New Project and add the GitHub repository. -3. Configure the project. -4. We'll add a webhook - you're done! - -If you or someone else has connected this repository to Distiller but wasn't able to configure the webhook (if, for example, they weren't an administrator for this repository), simply check β€œActive” to enable the hook and Distiller will automatically build this repository when you push. - -Learn more at http://distiller.io. \ No newline at end of file diff --git a/docs/divecloud b/docs/divecloud index 29ad01fcd..3275eedbf 100644 --- a/docs/divecloud +++ b/docs/divecloud @@ -1,9 +1,9 @@ DiveCloud integrates Application Performance Testing into the Continuous Integration Cycle by allowing you to run a performance test after each successful deployment. -When Github receives notice that you have successfully deployed your application, it will initiate a performance test based on the test plan you created at https://divecloud.nouvola.com. +When GitHub receives notice that you have successfully deployed your application, it will initiate a performance test based on the test plan you created at https://divecloud.nouvola.com. -Please enter your API Key and the Plan ID for the plan that you would like to run on successful deployment of your application. +Please enter your API Key and the Plan ID for the plan that you would like to run on successful deployment of your application. -If you would like to add 'Think Time' to you test, select the 'Think Time' checkbox. +If you would like to add 'Think Time' to you test, select the 'Think Time' checkbox. -If your test plan includes credentials, include your credential password in the field below. +If your test plan includes credentials, include your credential password in the field below. diff --git a/docs/hall b/docs/hall deleted file mode 100644 index a790596a6..000000000 --- a/docs/hall +++ /dev/null @@ -1,8 +0,0 @@ -Broadcast this project's commits, pull requests, issues, and their respective comments to Hall. - -Install Notes -------------- - - * Room Token is a room-specific token. - * You can locate your token by viewing the desired room's setting page. - * Hall is available 24/7 to help. Email us at contact@hall-inc.com diff --git a/docs/honbu b/docs/honbu deleted file mode 100644 index 24f577511..000000000 --- a/docs/honbu +++ /dev/null @@ -1,15 +0,0 @@ -This service posts GitHub events to the Honbu integration service. - -Supported events are currently: -'push', 'issues', 'issue_comment', 'commit_comment', 'create', -'delete', pull_request', 'pull_request_review_comment', 'gollum', -'watch', 'release', 'fork', 'member', 'public', 'team_add', -'status', 'deployment', 'deployment_status'. - -As described at https://developer.github.com/webhooks/#service-hooks - - -Install Notes ------------- - -Token: The GUID generated by Honbu app when the user chooses to integrate with GitHub diff --git a/docs/loggly b/docs/loggly deleted file mode 100644 index 64d1660b1..000000000 --- a/docs/loggly +++ /dev/null @@ -1,7 +0,0 @@ -This service hook allows you to log pushed commits directly to a Loggly HTTP -input. - -Install Notes -------------- - -1. input token -- take this from the detail page for your HTTP input. \ No newline at end of file diff --git a/docs/masterbranch b/docs/masterbranch deleted file mode 100644 index 5bd8c21ab..000000000 --- a/docs/masterbranch +++ /dev/null @@ -1,4 +0,0 @@ -With this service your commit's logs will be sent to Masterbranch.com. -Masterbranch will proportionate you with an automatic-updated profile of your -project. This profile will show the different technologies you are using, -including some stats based on the contributors development. diff --git a/docs/nma b/docs/nma deleted file mode 100644 index f9e52cabb..000000000 --- a/docs/nma +++ /dev/null @@ -1,11 +0,0 @@ -With NotifyMyAndroid (NMA) you can push notifications to your Android devices -through Google's C2DM notification system. The [public Web API](http://www.notifymyandroid.com/api.php) -can be used by virtually any application to delivery push notifications to -your Android. - -Install Notes -------------- - -1. Register at https://www.notifymyandroid.com/register.php. - -2. Generate an API key at https://www.notifymyandroid.com/account.php to be used on GitHub. diff --git a/docs/pushalot b/docs/pushalot deleted file mode 100644 index 5df67e2ac..000000000 --- a/docs/pushalot +++ /dev/null @@ -1,11 +0,0 @@ -Pushalot is a platform for receiving custom push notifications to connected devices running Windows Phone or Windows 8. Custom means that those push notifications can be sent from virtually any source, as long as that source can interact with our open [REST API](https://pushalot.com/api). - -Install Notes -------------- - -1. Install the [Windows 8 app](https://pushalot.com/apps) from the Windows Store, or the [Windows Phone app](https://pushalot.com/apps) from the Windows Phone Apps+Games Store. - -2. Sign in to [Pushalot](https://pushalot.com/) and copy your authorization token. - -3. Add your authorization token in the field above. - diff --git a/docs/railsbp b/docs/railsbp deleted file mode 100644 index bb9fd27a0..000000000 --- a/docs/railsbp +++ /dev/null @@ -1,14 +0,0 @@ -Railsbp - a code analyzer service for rails projects. - -Install Notes -------------- - -1. Create an account on railsbp.com (just sign in with GitHub) -2. Create a repository on railsbp.com -3. Enter your token - - the token which you can find on repository edit page on railsbp.com -4. Enter your railsbp_url if you deploy the proxy on your own server -5. Check the "Active" checkbox and click "Update Settings" - -For more details about Railsbp, go to https://railsbp.com - diff --git a/docs/railsbrakeman b/docs/railsbrakeman deleted file mode 100644 index fdc2256e0..000000000 --- a/docs/railsbrakeman +++ /dev/null @@ -1,12 +0,0 @@ -RailsBrakeman is an online service to find security issues in your Rails -projects. - -1. Create an account on rails-brakeman.com (just sign in with GitHub) -2. Create a repository on rails-brakeman.com -3. Enter your token - - the token which you can find on repository edit page on rails-brakeman.com -4. Enter your rails_brakeman_url if you deploy the proxy on your own server -5. Check the "Active" checkbox and click "Update Settings" - -For more details about RailsBrakeman, go to https://rails-brakeman.com - diff --git a/docs/rapidpush b/docs/rapidpush deleted file mode 100644 index e951239ac..000000000 --- a/docs/rapidpush +++ /dev/null @@ -1,9 +0,0 @@ -RapidPush is an easy-to-use push notification service. -You can receive notifications from third-party applications like nagios, GitHub or flexget directly to your smartphone. - -Install Notes -------------- -1. Get an account at https://rapidpush.net/signup -2. Install the RapidPush Android App through the Google Play Store and login to your created account -3. Generate an API-Key within the user interface under the API-Key tab and provide this key to the GitHub RapidPush service hook -4. Finished, you can now receive the notifications diff --git a/docs/sqwiggle b/docs/sqwiggle deleted file mode 100644 index b478302c2..000000000 --- a/docs/sqwiggle +++ /dev/null @@ -1,13 +0,0 @@ -This service alerts your colleagues, collaborators and friends of GitHub events -by posting a message into the Sqwiggle room of your choice! - -Install Notes ------------- - -**Token**: You'll need to generate an API Client and paste in the provided token. -(create one here: https://www.sqwiggle.com/company/clients) - -**Room**: (optional) The last part of the url for the room you would like the -messages to appear in e.g sqwiggle.com/company_name/ROOM_ID_HERE. Leave blank if you want to use the default room. - -See https://www.sqwiggle.com/docs for more info on the Sqwiggle API diff --git a/docs/stormpath b/docs/stormpath deleted file mode 100644 index 0d3902fa4..000000000 --- a/docs/stormpath +++ /dev/null @@ -1,14 +0,0 @@ -[Stormpath](http://stormpath.com/) is a User Management API that reduces development time with instant-on, scalable user infrastructure. Stormpath's intuitive API and expert support make it easy for developers to authenticate, manage, and secure users and roles in any application. - -This service will help you update the Single Sign On site configured in Stormpath. In the Stormpath Admin Console, you can specify which branch needs to be synced with Stormpath. - -Install Notes -------------- - -After signing up for Stormpath at https://api.stormpath.com/register: - -1. Log in to the Stormpath Admin Console using the email address and password you used to register with Stormpath. -1. In the top-right corner of the resulting page, visit Settings > My Account. -1. On the Account Details page, under Security Credentials, click Create API Key. -1. Set **API Key ID** to the API Key ID generated by Stormpath -1. Set **API Key Secret** to the API Key Secret generated by Stormpath \ No newline at end of file diff --git a/docs/tinypm b/docs/tinypm deleted file mode 100644 index d73e33c55..000000000 --- a/docs/tinypm +++ /dev/null @@ -1,12 +0,0 @@ -This service posts an event object for GitHub events to [tinyPM][tinyPM_link] application. - -[tinyPM][tinyPM_link] is an agile collaboration tool with product management, backlog, taskboard, user stories and wiki. Web-based and internationalized. - - -Install Notes -------------- - -1. You will need to copy your GitHub integration URL. Open your tinyPM and navigate to Application Settings (requires admin access to tinyPM). -2. Don't forget to check **Active** - -[tinyPM_link]: http://www.tinypm.com diff --git a/docs/trajectory b/docs/trajectory deleted file mode 100644 index 13eef5e98..000000000 --- a/docs/trajectory +++ /dev/null @@ -1,7 +0,0 @@ -Install Notes -------------- - -1. api_key: Your api key can be found in this link: https://www.apptrajectory.com/profile/edit - -All you need to do is copy your api key from the application and paste it into the GitHub service configuration. - diff --git a/docs/visualops b/docs/visualops deleted file mode 100644 index 81ee9068d..000000000 --- a/docs/visualops +++ /dev/null @@ -1,13 +0,0 @@ -Trigger a re-deploy of VisualOps apps when you push to GitHub. You can set a list of app_id with correspond branch. - -Install Notes -------------- - -1. You will need to register an account and launch an app in [VisualOps][visualops], and get a token that authorises GitHub to write to the VisualOps API. -2. Supply a list of apps you want to update when you push to GitHub, and the apps are separated by commas. You can specify the git branch for every app with a colon suffix (`app_id:branch`), and the default branch for an app is `master`. The following is an example of App List: - - app-11223344, app-1a2b3c4d:develop, app-12345678:master - - Then the app `app-11223344` and `app-12345678` will be update when you push to `master` branch, and `app-1a2b3c4d` will you push to `develop` branch. And the you can find your app_id in the property pannel of VisualOps IDE - -[visualops]: http://www.visualops.io \ No newline at end of file diff --git a/docs/yammer b/docs/yammer deleted file mode 100644 index 1f73c1500..000000000 --- a/docs/yammer +++ /dev/null @@ -1,5 +0,0 @@ -Install Notes -------------- - -1. Go to the Yammer App Directory and login in the GitHub app. -2. Enter the token above. diff --git a/github-services-1.0.0.bab7cf5.gem b/github-services-1.0.0.bab7cf5.gem deleted file mode 100644 index ab1913fd8..000000000 Binary files a/github-services-1.0.0.bab7cf5.gem and /dev/null differ diff --git a/lib/github-services.rb b/lib/github-services.rb index 3a2b1dedb..b76d5cbdc 100644 --- a/lib/github-services.rb +++ b/lib/github-services.rb @@ -22,14 +22,11 @@ require 'xmpp4r/presence' require 'xmpp4r/muc' require 'xmpp4r/roster' -require 'rubyforge' require 'oauth' -require 'yammer4r' require 'twilio-ruby' # vendor require 'basecamp' -require 'rubyforge' require 'softlayer/messaging' require 'faraday' diff --git a/lib/service.rb b/lib/service.rb index 5de58cb99..094ba06a0 100644 --- a/lib/service.rb +++ b/lib/service.rb @@ -484,6 +484,8 @@ def inherited(svc) attr_reader :remote_calls + attr_reader :pre_delivery_callbacks + def initialize(event = :push, data = {}, payload = nil) helper_name = "#{event.to_s.classify}Helpers" if Service.const_defined?(helper_name) @@ -500,6 +502,7 @@ def initialize(event = :push, data = {}, payload = nil) @http = @secrets = @email_config = nil @http_calls = [] @remote_calls = [] + @pre_delivery_callbacks = [] end # Boolean fields as either nil, "0", or "1". @@ -562,13 +565,18 @@ def shorten_url(url) # # Yields a Faraday::Request instance. # Returns a Faraday::Response instance. - def http_get(url = nil, params = nil, headers = nil) + def http_get(url = nil, params = {}, headers = {}) raise_config_error("Invalid scheme") unless permitted_transport?(url) url = url.strip if url + + if pre_delivery_callbacks.any? + pre_delivery_callbacks.each { |c| c.call(url, nil, headers, params) } + end + http.get do |req| req.url(url) if url - req.params.update(params) if params - req.headers.update(headers) if headers + req.params.update(params) if params.present? + req.headers.update(headers) if headers.present? yield req if block_given? end end @@ -599,7 +607,7 @@ def http_get(url = nil, params = nil, headers = nil) # # Yields a Faraday::Request instance. # Returns a Faraday::Response instance. - def http_post(url = nil, body = nil, headers = nil, params = nil) + def http_post(url = nil, body = nil, headers = {}, params = {}) block = Proc.new if block_given? http_method :post, url, body, headers, params, &block end @@ -631,18 +639,22 @@ def http_post(url = nil, body = nil, headers = nil, params = nil) # # Yields a Faraday::Request instance. # Returns a Faraday::Response instance. - def http_method(method, url = nil, body = nil, headers = nil, params = nil) + def http_method(method, url = nil, body = nil, headers = {}, params = {}) block = Proc.new if block_given? url = url.strip if url raise_config_error("Invalid scheme") unless permitted_transport?(url) + if pre_delivery_callbacks.any? + pre_delivery_callbacks.each { |c| c.call(url, body, headers, params) } + end + check_ssl do http.send(method) do |req| req.url(url) if url - req.headers.update(headers) if headers + req.headers.update(headers) if headers.present? req.body = body if body - req.params = params if params + req.params = params if params.present? block.call req if block end end @@ -852,6 +864,14 @@ def reportable_http_env(env, time) } end + def before_delivery(&block) + @pre_delivery_callbacks << block + end + + def reset_pre_delivery_callbacks! + @pre_delivery_callbacks = [] + end + # Raised when an unexpected error occurs during service hook execution. class Error < StandardError attr_reader :original_exception diff --git a/lib/services/CodePorting-C#2Java.rb b/lib/services/CodePorting-C#2Java.rb deleted file mode 100644 index 11b6e1a13..000000000 --- a/lib/services/CodePorting-C#2Java.rb +++ /dev/null @@ -1,77 +0,0 @@ -class Service::CodePortingCSharp2Java < Service - string :project_name, :repo_key, :target_repo_key, :codeporting_username - password :codeporting_password, :github_access_token - - self.title = 'CodePorting-C#2Java' - - def receive_push - return if Array(payload['commits']).empty? - - check_configuration_options(data) - - response = nil - token = perform_login - - if token.blank? - response = "Unable to login on codeporting.com at the moment :( " - raise_config_error "#{response}" - end - - response = process_on_codeporting(token) - if response != "True" - raise_config_error 'Porting performed with errors, porting will be performed again on next commit.' - end - - response - end - - def perform_login - http.ssl[:verify] = false - login_url = "https://apps.codeporting.com/csharp2java/v0/UserSignin" - resp = http.post login_url do |req| - req.body = {:LoginName => data['codeporting_username'], :Password => data['codeporting_password']} - end - - doc = REXML::Document.new(resp.body) - retValue = nil - doc.each_element('//return') do |item| - retValue = item.attributes['success'] - end - - if retValue == "True" - token = nil - doc.each_element('//Token') do |item| - token = item.text - end - token - end - end - - def process_on_codeporting(token) - process_url = "https://apps.codeporting.com/csharp2java/v0/githubpluginsupport" - resp = http.post process_url do |req| - req.body = {:token => token, :ProjectName => data['project_name'], - :RepoKey => data['repo_key'], :TarRepoKey => data['target_repo_key'], - :Username => data['codeporting_username'], :Password => data['codeporting_password'], - :GithubAccessToken => data['github_access_token']} - end - - doc = REXML::Document.new(resp.body) - retValue = nil - doc.each_element('//return') do |item| - retValue = item.attributes['success'] - end - retValue - end - - private - - def check_configuration_options(data) - raise_config_error 'Project name must be set' if data['project_name'].blank? - raise_config_error 'Repository is required' if data['repo_key'].blank? - raise_config_error 'Target repository is required' if data['target_repo_key'].blank? - raise_config_error 'Codeporting username must be provided' if data['codeporting_username'].blank? - raise_config_error 'Codeporting password must be provided' if data['codeporting_password'].blank? - raise_config_error 'GitHub Access Token must be provided for committing changes back to GitHub' if data['github_access_token'].blank? - end -end diff --git a/lib/services/agilezen.rb b/lib/services/agilezen.rb deleted file mode 100644 index 47e285947..000000000 --- a/lib/services/agilezen.rb +++ /dev/null @@ -1,23 +0,0 @@ -class Service::AgileZen < Service - string :api_key, :project_id, :branches - white_list :project_id, :branches - - def receive_push - raise_config_error "Missing 'api_key'" if data['api_key'].to_s == '' - raise_config_error "Missing 'project_id'" if data['project_id'].to_s == '' - - branches = data['branches'].to_s.split(/\s+/) - ref = payload["ref"].to_s - return unless branches.empty? || branches.include?(ref.split("/").last) - - http.headers['X-Zen-ApiKey'] = data['api_key'] - http.headers['Content-Type'] = 'application/json' - - res = http_post "https://agilezen.com/api/v1/projects/#{data['project_id']}/changesets/github", - generate_json(payload) - - if res.status < 200 || res.status > 299 - raise_config_error - end - end -end diff --git a/lib/services/boxcar.rb b/lib/services/boxcar.rb deleted file mode 100644 index 6fb5db036..000000000 --- a/lib/services/boxcar.rb +++ /dev/null @@ -1,12 +0,0 @@ -class Service::Boxcar < Service - string :subscribers - white_list :subscribers - - def receive_push - http_post \ - "http://providers.boxcar.io/github/%s" % - [secrets['boxcar']['apikey']], - :emails => data['subscribers'], - :payload => generate_json(payload) - end -end diff --git a/lib/services/co_op.rb b/lib/services/co_op.rb deleted file mode 100644 index 6de6d9e32..000000000 --- a/lib/services/co_op.rb +++ /dev/null @@ -1,23 +0,0 @@ -class Service::CoOp < Service - string :group_id - password :token - white_list :group_id - - self.title = 'Co-Op' - - def receive_push - repository = payload['repository']['name'] - payload['commits'].each do |commit| - status = "#{commit['author']['name']} just committed a change to #{repository} on GitHub: #{commit['message']} (#{commit['url']})" - res = http_post "http://coopapp.com/groups/%s/notes" % [data['group_id']], - generate_json(:status => status, :key => data['token']), - 'Accept' => 'application/json', - 'Content-Type' => 'application/json; charset=utf-8', - 'User-Agent' => 'GitHub Notifier' - - if res.status >= 400 - raise_config_error - end - end - end -end diff --git a/lib/services/coffeedocinfo.rb b/lib/services/coffeedocinfo.rb deleted file mode 100644 index ba59eb493..000000000 --- a/lib/services/coffeedocinfo.rb +++ /dev/null @@ -1,17 +0,0 @@ -class Service::CoffeeDocInfo < Service::HttpPost - self.title = 'CoffeeDoc.info' - - default_events :push - - url "http://coffeedoc.info/" - - maintained_by :github => 'pwnall', :twitter => '@pwnall' - - supported_by :web => 'https://github.com/netzpirat/coffeedoc.info', - :twitter => 'netzpirat', :github => 'netzpirat' - - def receive_event - url = 'http://coffeedoc.info/checkout' - deliver url - end -end diff --git a/lib/services/cube.rb b/lib/services/cube.rb deleted file mode 100644 index 92cb7d26f..000000000 --- a/lib/services/cube.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Service::Cube < Service - string :domain, :project - password :token - white_list :domain, :project - - def receive_push - http_post "http://cube.bitrzr.com/integration/events/github/create", - 'payload' => generate_json(payload), - 'project_name' => data['project'], - 'project_token' => data['token'], - 'domain' => data['domain'] - end -end diff --git a/lib/services/distiller.rb b/lib/services/distiller.rb deleted file mode 100644 index 13503ead6..000000000 --- a/lib/services/distiller.rb +++ /dev/null @@ -1,24 +0,0 @@ -class Service::Distiller < Service::HttpPost - self.title = "Distiller" - url "http://distiller.io" - logo_url "http://www.distiller.io/favicon.ico" - - maintained_by :github => 'travis' - supported_by :web => 'http://distiller.io/chat', - :email => 'help@distiller.io' - - default_events :push - - def receive_event - http.headers['content-type'] = 'application/x-www-form-urlencoded' - http_post distiller_url, - "payload" => generate_json(payload), - "event_type" => generate_json(:event_type => event) - end - - private - - def distiller_url - "https://www.distiller.io/hooks/github" - end -end diff --git a/lib/services/email.rb b/lib/services/email.rb index 3be8f2c17..2d4e8b587 100644 --- a/lib/services/email.rb +++ b/lib/services/email.rb @@ -192,7 +192,12 @@ def mail_body body << compare_text unless single_commit? - body + body << <<-NOTE + + **NOTE:** GitHub Services has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/ + + We will provide an alternative path for the email notifications by January 31st, 2019. + NOTE end # Public diff --git a/lib/services/hall.rb b/lib/services/hall.rb deleted file mode 100644 index da3f7292e..000000000 --- a/lib/services/hall.rb +++ /dev/null @@ -1,19 +0,0 @@ -class Service::Hall < Service - - default_events :commit_comment, :gollum, :issues, :issue_comment, :pull_request, :push - password :room_token - - # Contributing Assets - url "https://hall.com" - logo_url "https://s3.amazonaws.com/hall-production-assets/assets/media_kit/hall_logo-8b3fb6d39f78ad4b234e684f378b87b7.jpg" - maintained_by :github => 'bhellman1' - supported_by :web => 'https://hallcom.uservoice.com/', :email => 'contact@hall-inc.com', :twitter => 'hall' - - def receive_event - raise_config_error "Missing room token" if data['room_token'].to_s.empty? - room_token = data['room_token'].to_s - - res = http_post "https://hall.com/api/1/services/github/#{room_token}", :payload => generate_json(payload) - end - -end diff --git a/lib/services/honbu.rb b/lib/services/honbu.rb deleted file mode 100644 index f89d8d368..000000000 --- a/lib/services/honbu.rb +++ /dev/null @@ -1,29 +0,0 @@ -class Service::Honbu < Service::HttpPost - password :token - - - default_events :push, :issues, :issue_comment, :commit_comment, - :create, :delete, :pull_request, :follow, :gollum, :fork, - :member, :team_add, :deployment, :deployment_status - - - - url "http://honbu.io" - logo_url "http://honbu.io/assets/honbu-website-logo.png" - - maintained_by :github => 'RedFred7' - - supported_by :web => 'http://honbu.io/company', - :email => 'support@honbu.io' - - def receive_event - token = required_config_value('token') - - http.headers['Authorization'] = "#{token}" - http.headers['X-GitHub-Event'] = event.to_s - - url = "https://integrations.honbu.io/github" - - deliver url - end -end diff --git a/lib/services/loggly.rb b/lib/services/loggly.rb deleted file mode 100644 index 8da0f9aa6..000000000 --- a/lib/services/loggly.rb +++ /dev/null @@ -1,9 +0,0 @@ -class Service::Loggly < Service - password :input_token - - def receive_push - http.headers['Content-Type'] = 'application/json' - url = "https://logs.loggly.com/inputs/#{data['input_token']}" - payload['commits'].each { |commit| http_post url, generate_json(commit) } - end -end diff --git a/lib/services/masterbranch.rb b/lib/services/masterbranch.rb deleted file mode 100644 index 8caf78e21..000000000 --- a/lib/services/masterbranch.rb +++ /dev/null @@ -1,7 +0,0 @@ -class Service::Masterbranch < Service - def receive_push - http_post "http://webhooks.masterbranch.com/gh-hook", - :payload => generate_json(payload) - end -end - diff --git a/lib/services/notifymyandroid.rb b/lib/services/notifymyandroid.rb deleted file mode 100644 index 512573122..000000000 --- a/lib/services/notifymyandroid.rb +++ /dev/null @@ -1,24 +0,0 @@ -class Service::NMA < Service - string :apikey - self.title = 'Notify My Android' - - def receive_push - return unless payload['commits'] - - url = URI.parse('https://www.notifymyandroid.com/publicapi/notify') - repository = payload['repository']['url'].split("/") - event = [repository[-2], repository[-1]].join('/') - application = "GitHub" - description = "#{payload['commits'].length} commits pushed to #{application} (#{payload['commits'][-1]['id'][0..7]}..#{payload['commits'][0]['id'][0..7]}) - - Latest Commit by #{payload['commits'][-1]['author']['name']} - #{payload['commits'][-1]['id'][0..7]} #{payload['commits'][-1]['message']}" - - http_post 'https://www.notifymyandroid.com/publicapi/notify', - :apikey => data['apikey'], - :application => application, - :event => event, - :description => description, - :url => payload['compare'] - end -end diff --git a/lib/services/pushalot.rb b/lib/services/pushalot.rb deleted file mode 100644 index ab8c6cb90..000000000 --- a/lib/services/pushalot.rb +++ /dev/null @@ -1,23 +0,0 @@ -class Service::Pushalot < Service - password :authorization_token - - url "https://pushalot.com" - logo_url "https://pushalot.com/content/images/favicon.png" - maintained_by :github => 'molesinski' - supported_by :web => 'https://pushalot.com/support' - - def receive_push - res = http_post "https://pushalot.com/api/githubhook", - :authorizationToken => authorization_token, - :payload => generate_json(payload) - - if res.status != 200 - raise_config_error - end - end - - def authorization_token - data["authorization_token"].to_s.strip - end -end - diff --git a/lib/services/rails_brakeman.rb b/lib/services/rails_brakeman.rb deleted file mode 100644 index 0a6dcaff3..000000000 --- a/lib/services/rails_brakeman.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Service::RailsBrakeman < Service - string :rails_brakeman_url - password :token - white_list :rails_brakeman_url - - def receive_push - http_post rails_brakeman_url, :token => token, :payload => generate_json(payload) - end - - def rails_brakeman_url - if !(url = data["rails_brakeman_url"].to_s).empty? - url.strip - else - "https://rails-brakeman.com" - end - end - - def token - data['token'].strip - end -end diff --git a/lib/services/railsbp.rb b/lib/services/railsbp.rb deleted file mode 100644 index ba79c33d7..000000000 --- a/lib/services/railsbp.rb +++ /dev/null @@ -1,21 +0,0 @@ -class Service::Railsbp < Service - string :railsbp_url - password :token - white_list :railsbp_url - - def receive_push - http_post railsbp_url, :token => token, :payload => generate_json(payload) - end - - def railsbp_url - if !(url = data["railsbp_url"].to_s).empty? - url.strip - else - "https://railsbp.com" - end - end - - def token - data['token'].strip - end -end diff --git a/lib/services/rapidpush.rb b/lib/services/rapidpush.rb deleted file mode 100644 index 9241977b8..000000000 --- a/lib/services/rapidpush.rb +++ /dev/null @@ -1,12 +0,0 @@ -class Service::RapidPush < Service - string :apikey - - def receive_push - http.ssl[:verify] = false - http_post "https://rapidpush.net/api/github/#{apikey}", :payload => generate_json(payload) - end - - def apikey - data["apikey"].to_s.strip - end -end diff --git a/lib/services/sqwiggle.rb b/lib/services/sqwiggle.rb deleted file mode 100644 index 23bf5a6fa..000000000 --- a/lib/services/sqwiggle.rb +++ /dev/null @@ -1,34 +0,0 @@ -class Service::Sqwiggle < Service::HttpPost - password :token - string :room - - # only include 'room' in the debug logs, skip the api token. - white_list :room - - #accept all events and filter on sqwiggle servers so we can add events as - #requested without the need to wait on GitHub PR's - default_events Service::ALL_EVENTS - - url "https://www.sqwiggle.com" - logo_url "https://sqwiggle-assets.s3.amazonaws.com/assets/logo-header-b4bc3b6e82e42a0beb96b7fa413537f6.png" - - maintained_by :github => 'lukeroberts1990', - :twitter => '@lukeroberts1990' - - supported_by :web => 'https://www.sqwiggle.com/help', - :email => 'howdy@sqwiggle.com', - :twitter => '@sqwiggle' - - def receive_event - token = required_config_value('token') - http.basic_auth token, 'X' - - #dev url - # url = "http://localhost:3001/integrations/github/#{data['room']}" - - #production url - url = "https://api.sqwiggle.com:443/integrations/github/#{data['room']}" - - deliver url - end -end diff --git a/lib/services/stormpath.rb b/lib/services/stormpath.rb deleted file mode 100644 index de13a33e5..000000000 --- a/lib/services/stormpath.rb +++ /dev/null @@ -1,40 +0,0 @@ -class Service::Stormpath < Service::HttpPost - - string :api_key_id - password :api_key_secret - white_list :api_key_id - - url "https://stormpath.com" - - maintained_by :github => "lhazlewood" - - default_events :push - - logo_url "https://api.stormpath.com/assets/images/logo_nav.png" - - supported_by :web => 'https://support.stormpath.com', - :email => 'support@stormpath.com', - :twitter => '@goStormpath' - - def receive_event - - id = required_config_value('api_key_id') - secret = required_config_value('api_key_secret') - - http.basic_auth id.to_s, secret.to_s - - res = deliver api_url - - case res.status - when 200..299 - when 401 then raise_config_error("Authentication with a valid API Key is required. The provided Api Key Id/Secret is invalid.") - else raise_config_error("HTTP: #{res.status}") - end - - end - - def api_url - "https://api.stormpath.com/vendors/github/events" - end - -end \ No newline at end of file diff --git a/lib/services/tinypm.rb b/lib/services/tinypm.rb deleted file mode 100644 index cc631c966..000000000 --- a/lib/services/tinypm.rb +++ /dev/null @@ -1,23 +0,0 @@ -class Service::TinyPM < Service::HttpPost - string :url - # white_list :server - - default_events :push - - url "http://www.tinypm.com" - logo_url "http://www.tinypm.com/images/tinypm_logo.gif" - - maintained_by :github => 'raho', - :email => 'rafal.hotlos@gmail.com' - - supported_by :web => 'http://www.tinypm.com/', - :email => 'support@tinypm.com' - - - def receive_push - server_url = required_config_value('url') - http.headers['Content-Type'] = 'application/json' - http_post(server_url, generate_json(payload)) - end - -end diff --git a/lib/services/trajectory.rb b/lib/services/trajectory.rb deleted file mode 100644 index d619ac0a2..000000000 --- a/lib/services/trajectory.rb +++ /dev/null @@ -1,47 +0,0 @@ -class Service::Trajectory < Service - string :api_key - BASE_URL = "https://www.apptrajectory.com/api/payloads?api_key=" - - def receive_push - send_to_trajectory - end - - def receive_pull_request - send_to_trajectory - end - - private - - def send_to_trajectory - set_http_headers - response = send_post - raise_config_error_for_bad_status(response) - end - - def set_http_headers - http.headers['content-type'] = 'application/json' - end - - def send_post - http_post full_url, json_payload - end - - def full_url - BASE_URL + api_key - end - - def raise_config_error_for_bad_status(response) - if response.status < 200 || response.status > 299 - raise_config_error - end - end - - def api_key - raise_config_error "Missing 'api_key'" if data['api_key'].to_s == '' - data['api_key'].to_s - end - - def json_payload - generate_json(payload) - end -end diff --git a/lib/services/visualops.rb b/lib/services/visualops.rb deleted file mode 100644 index 89f513a07..000000000 --- a/lib/services/visualops.rb +++ /dev/null @@ -1,65 +0,0 @@ -class Service::VisualOps < Service::HttpPost - string :username, :app_list - password :consumer_token - - white_list :username, :app_list - - default_events :push - - url "http://www.visualops.io" - - maintained_by :github => "gnawux", - :twitter => "@gnawux" - - supported_by :email => 'support@visualops.io' - - def receive_event - return unless update_states? - - # Confirm all required config is present - assert_required_credentials - - # Update State - app = push_list(app_list) - if not app.empty? - data.update('app_list' => app) - deliver update_url, :content_type => 'application/json' - end - end - - private - - def update_states? - payload['commits'].size != 0 - end - - def app_list - data['app_list'].split(',').map do |ab_pair| - (app, sep, bx) = ab_pair.strip.partition(":") - branch = bx.empty? ? "master" : bx - [app, branch] - end - end - - def push_list(apps) - apps.keep_if{|x| x[1] == branch_name}.map{|x| x[0]} - end - - def assert_required_credentials - if (consumer_token.empty? || username.empty?) - raise_config_error "You need a user ID and an authorization Token." - end - end - - def update_url - "https://api.visualops.io:443/v1/github" - end - - def consumer_token - data['consumer_token'].to_s - end - - def username - data['username'].to_s - end -end diff --git a/lib/services/yammer.rb b/lib/services/yammer.rb deleted file mode 100644 index 38a1393ef..000000000 --- a/lib/services/yammer.rb +++ /dev/null @@ -1,13 +0,0 @@ -class Service::Yammer < Service - default_events :push, :commit_comment, :pull_request, :pull_request_review_comment, :public - password :token - - def receive_event - http_post "https://yammer-github.herokuapp.com/#{token}/notify/#{event}", :payload => generate_json(payload) - end - - def token - data["token"].to_s.strip - end -end - diff --git a/test/CodePorting-C#2Java_test.rb b/test/CodePorting-C#2Java_test.rb deleted file mode 100644 index 3b7d7a59a..000000000 --- a/test/CodePorting-C#2Java_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class CodePortingCSharp2JavaTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @stubs.post '/csharp2java/v0/UserSignin' do |env| - form = Faraday::Utils.parse_query(env[:body]) - assert_equal 'codeportingtest', form['LoginName'] - assert_equal 'testpassword', form['Password'] - [200, {}, %(MONKEY)] - end - end - - def test_push - @stubs.post '/csharp2java/v0/githubpluginsupport' do |env| - form = Faraday::Utils.parse_query(env[:body]) - assert_equal 'MONKEY', form['token'] - assert_equal 'Test_Project', form['ProjectName'] - assert_equal 'Test', form['RepoKey'] - assert_equal 'TestJava', form['TarRepoKey'] - assert_equal 'codeportingtest', form['Username'] - assert_equal 'testpassword', form['Password'] - assert_equal '0314adcacbb895bd52f3bc6f2f361ebac3ffbfb6', form['GithubAccessToken'] - [200, {}, %()] - end - - svc = service({'project_name' => 'Test_Project', - 'repo_key' => 'Test', - 'target_repo_key' => 'TestJava', - 'codeporting_username' => 'codeportingtest', - 'codeporting_password' => 'testpassword', - 'active' => '1', - 'github_access_token' => '0314adcacbb895bd52f3bc6f2f361ebac3ffbfb6'}, payload) - - assert_equal 3, payload['commits'].size - assert_equal "True", svc.receive_push - end - - def service(*args) - super Service::CodePortingCSharp2Java, *args - end -end diff --git a/test/agilezen_test.rb b/test/agilezen_test.rb deleted file mode 100644 index e96a49823..000000000 --- a/test/agilezen_test.rb +++ /dev/null @@ -1,85 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class AgileZenTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_unspecified_branch - payload = {'answer' => 42, 'ref' => 'refs/heads/master'} - @stubs.post '/api/v1/projects/123/changesets/github' do |env| - body = JSON.parse(env[:body]) - assert_equal payload, body - assert_equal 'test_api_key', env[:request_headers]['X-Zen-ApiKey'] - assert_equal 'application/json', env[:request_headers]['Content-Type'] - [200, {}, ''] - end - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123'}, payload) - svc.receive_push - @stubs.verify_stubbed_calls - end - - def test_matching_branch - payload = {"ref" => "refs/heads/foo"} - @stubs.post("/api/v1/projects/123/changesets/github") { |e| [200, {}, ''] } - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123', 'branches' => 'foo'}, payload) - svc.receive_push - @stubs.verify_stubbed_calls - end - - def test_unmatching_branch - payload = {"ref" => "refs/heads/bar"} - @stubs.post("/api/v1/projects/123/changesets/github") { |e| [200, {}, ''] } - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123', 'branches' => 'foo'}, payload) - svc.receive_push - - # Test that no post fired - begin - @stubs.verify_stubbed_calls - rescue RuntimeError - else - assert_true false - end - end - - def test_matching_branch_of_many - payload = {"ref" => "refs/heads/foo"} - @stubs.post("/api/v1/projects/123/changesets/github") { |e| [200, {}, ''] } - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123', 'branches' => 'baz foo'}, payload) - svc.receive_push - @stubs.verify_stubbed_calls - end - - def test_unmatching_branch_of_many - payload = {"ref" => "refs/heads/bar"} - @stubs.post("/api/v1/projects/123/changesets/github") { |e| [200, {}, ''] } - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123', 'branches' => 'baz foo'}, payload) - svc.receive_push - - # Test that no post fired - begin - @stubs.verify_stubbed_calls - rescue RuntimeError - else - assert_true false - end - end - - def test_matching_tag - payload = {"ref" => "refs/tags/foo"} - @stubs.post("/api/v1/projects/123/changesets/github") { |e| [200, {}, ''] } - - svc = service({'api_key' => 'test_api_key', 'project_id' => '123', 'branches' => 'foo'}, payload) - svc.receive_push - @stubs.verify_stubbed_calls - end - - def service(*args) - super Service::AgileZen, *args - end -end diff --git a/test/boxcar_test.rb b/test/boxcar_test.rb deleted file mode 100644 index 2455b2a15..000000000 --- a/test/boxcar_test.rb +++ /dev/null @@ -1,27 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class BoxcarTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - svc = service :push, {'subscribers' => 'abc'}, 'a' => 1 - svc.secrets = {'boxcar' => {'apikey' => 'key'}} - - @stubs.post "/github/key" do |env| - assert_match /(^|\&)emails=abc($|\&)/, env[:body] - assert_match /(^|\&)payload=%7B%22a%22%3A1%7D($|\&)/, env[:body] - [200, {}, ''] - end - - svc.receive - - @stubs.verify_stubbed_calls - end - - def service(*args) - super Service::Boxcar, *args - end -end - diff --git a/test/coffeedocinfo_test.rb b/test/coffeedocinfo_test.rb deleted file mode 100644 index 93dcde211..000000000 --- a/test/coffeedocinfo_test.rb +++ /dev/null @@ -1,25 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class CoffeeDocInfoTest < Service::TestCase - include Service::HttpTestMethods - - def test_push - @stubs.post "/checkout" do |env| - assert_equal 'coffeedoc.info', env[:url].host - body = JSON.parse(env[:body]) - assert_equal 'push', body['event'] - assert_equal 'test', body['payload']['commits'][0]['id'] - [200, {}, ''] - end - - payload = {'commits'=>[{'id'=>'test'}]} - svc = service({}, payload) - svc.receive_event - @stubs.verify_stubbed_calls - end - - def service_class - Service::CoffeeDocInfo - end -end - diff --git a/test/coop_test.rb b/test/coop_test.rb deleted file mode 100644 index 331e417db..000000000 --- a/test/coop_test.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class CoOpTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - svc = service({'group_id' => 'abc', 'token' => 'def'}, payload) - - num = 0 - @stubs.post "/groups/abc/notes" do |env| - data = JSON.parse env[:body] - assert_match /tom/i, data['status'] - assert_equal 'def', data['key'] - - assert_equal 'GitHub Notifier', env[:request_headers]['User-Agent'] - assert_equal 'application/json; charset=utf-8', - env[:request_headers]['Content-Type'] - assert_equal 'application/json', - env[:request_headers]['Accept'] - - num += 1 - - [200, {}, ''] - end - - svc.receive_push - assert_equal 3, num - - @stubs.verify_stubbed_calls - end - - def service(*args) - super Service::CoOp, *args - end -end - - - diff --git a/test/cube_test.rb b/test/cube_test.rb deleted file mode 100644 index 45869df51..000000000 --- a/test/cube_test.rb +++ /dev/null @@ -1,29 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class CubeTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - url = "/integration/events/github/create" - @stubs.post url do |env| - assert_match /(^|\&)payload=%7B%22a%22%3A1%7D($|\&)/, env[:body] - assert_match "project_name=p", env[:body] - assert_match "project_token=t", env[:body] - assert_match "domain=d", env[:body] - [200, {}, ''] - end - - svc = service( - {'project' => 'p', 'token' => 't', 'domain' => 'd'}, - 'a' => 1) - svc.receive_push - end - - def service(*args) - super Service::Cube, *args - end -end - - diff --git a/test/distiller_test.rb b/test/distiller_test.rb deleted file mode 100644 index 81e953482..000000000 --- a/test/distiller_test.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) -class DistillerTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - # currently supported events - - # push - - def test_push - post_to_service(:push) - end - - def test_supported_events - assert_equal Service::Distiller.supported_events.sort , Service::ALL_EVENTS.sort - assert_equal Service::Distiller.default_events.sort , [:push].sort - end - - private - - def service(*args) - super Service::Distiller, *args - end - - def post_to_service(event_name) - assert Service::ALL_EVENTS.include? event_name.to_s - svc = service(event_name, {'token' => 'abc'}, payload) - - @stubs.post "/hooks/github" do |env| - body = Faraday::Utils.parse_query env[:body] - assert_match "https://www.distiller.io/hooks/github", env[:url].to_s - assert_match 'application/x-www-form-urlencoded', env[:request_headers]['content-type'] - assert_equal payload, JSON.parse(body["payload"].to_s) - assert_equal event_name.to_s, JSON.parse(body["event_type"].to_s)["event_type"] - end - - svc.receive_event - end -end diff --git a/test/hall_test.rb b/test/hall_test.rb deleted file mode 100644 index a91a6c6d0..000000000 --- a/test/hall_test.rb +++ /dev/null @@ -1,23 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class HallTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @room_token = "test_token" - end - - def test_push - @stubs.post "/api/1/services/github/#{@room_token}" do |env| - assert_equal 'hall.com', env[:url].host - [200, {}, ''] - end - - svc = service( - {'room_token' => 'test_token'}, payload) - svc.receive_event - end - - def service(*args) - super Service::Hall, *args - end -end diff --git a/test/honbu_test.rb b/test/honbu_test.rb deleted file mode 100644 index 23148a3a7..000000000 --- a/test/honbu_test.rb +++ /dev/null @@ -1,40 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class HonbuTest < Service::TestCase - include Service::HttpTestMethods - - def test_push - test_token = "0123456789abcde" - - - data = { - 'token' => test_token, - } - - - - payload = {'commits'=>[{'id'=>'test'}]} - svc = service(data, payload) - - @stubs.post "/github" do |env| - body = JSON.parse(env[:body]) - - assert_equal env[:url].host, "integrations.honbu.io" - assert_equal env[:request_headers]['Authorization'], "#{test_token}" - assert_equal env[:request_headers]['X-GitHub-Event'], "push" - assert_equal 'test', body['payload']['commits'][0]['id'] - assert_match 'guid-', body['guid'] - assert_equal data, body['config'] - assert_equal 'push', body['event'] - [200, {}, ''] - end - - svc.receive_event - @stubs.verify_stubbed_calls - end - - def service_class - Service::Honbu - end -end - diff --git a/test/loggly_test.rb b/test/loggly_test.rb deleted file mode 100644 index 2aafdbac7..000000000 --- a/test/loggly_test.rb +++ /dev/null @@ -1,22 +0,0 @@ -class LogglyTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - @stubs.post "/inputs/input-foo" do |env| - assert_equal 'application/json', env[:request_headers]['Content-Type'] - assert_equal 'logs.loggly.com', env[:url].host - [200, {}, ''] - end - - svc = service( - {"input_token" => "input-foo"}, - payload) - svc.receive_push - end - - def service(*args) - super Service::Loggly, *args - end -end diff --git a/test/masterbranch_test.rb b/test/masterbranch_test.rb deleted file mode 100644 index 9a343f5e9..000000000 --- a/test/masterbranch_test.rb +++ /dev/null @@ -1,23 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class MasterbranchTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - @stubs.post "/gh-hook" do |env| - assert_equal 'webhooks.masterbranch.com', env[:url].host - assert_match 'payload=%7B%22a%22%3A1%7D', env[:body] - [200, {}, ''] - end - - svc = service({}, :a => 1) - svc.receive_push - end - - def service(*args) - super Service::Masterbranch, *args - end -end - diff --git a/test/notifymyandroid_test.rb b/test/notifymyandroid_test.rb deleted file mode 100644 index d793338dd..000000000 --- a/test/notifymyandroid_test.rb +++ /dev/null @@ -1,24 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class NMATest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - @stubs.post "/publicapi/notify" do |env| - assert_equal 'www.notifymyandroid.com', env[:url].host - data = Faraday::Utils.parse_query(env[:body]) - assert_equal 'a', data['apikey'] - [200, {}, ''] - end - - svc = service({'apikey' => 'a'}, payload) - svc.receive_push - end - - def service(*args) - super Service::NMA, *args - end -end - diff --git a/test/pushalot_test.rb b/test/pushalot_test.rb deleted file mode 100644 index bff7e83c0..000000000 --- a/test/pushalot_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class PushalotTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @svc = service(data, payload) - end - - def test_reads_token_from_data - assert_equal "be82304d88d74eb884e384a98a282b8a", @svc.authorization_token - end - - def test_strips_whitespace_from_token - svc = service({'authorization_token' => 'be82304d88d74eb884e384a98a282b8a '}, payload) - assert_equal 'be82304d88d74eb884e384a98a282b8a', svc.authorization_token - end - - def test_posts_payload - @stubs.post '/api/githubhook' do |env| - assert_equal 'https', env[:url].scheme - assert_equal 'pushalot.com', env[:url].host - data = Faraday::Utils.parse_query(env[:body]) - assert_equal "be82304d88d74eb884e384a98a282b8a", data["authorizationToken"] - assert_equal payload, JSON.parse(data['payload']) - [200, {}, 'ok'] - end - - @svc.receive_push - end - -private - - def service(*args) - super Service::Pushalot, *args - end - - def data - { 'authorization_token' => 'be82304d88d74eb884e384a98a282b8a' } - end - -end - diff --git a/test/rails_brakeman_test.rb b/test/rails_brakeman_test.rb deleted file mode 100644 index 5f7833d48..000000000 --- a/test/rails_brakeman_test.rb +++ /dev/null @@ -1,87 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class RailsBrakemanTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @svc = service(data, payload) - end - - def test_reads_token_from_data - assert_equal "xAAQZtJhYHGagsed1kYR", @svc.token - end - - def test_reads_default_rails_brakeman_url_from_data - assert_equal "https://rails-brakeman.com", @svc.rails_brakeman_url - end - - def test_reads_custom_rails_brakeman_url_from_data - data = { "token" => "xAAQZtJhYHGagsed1kYR", "rails_brakeman_url" => "http://rails-brakeman.heroku.com" } - svc = service(data, payload) - assert_equal "http://rails-brakeman.heroku.com", svc.rails_brakeman_url - end - - def test_strips_whitespace_from_form_values - data = { "token" => " xAAQZtJhYHGagsed1kYR ", "rails_brakeman_url" => " http://rails-brakeman.heroku.com " } - svc = service(data, payload) - assert_equal "xAAQZtJhYHGagsed1kYR", svc.token - assert_equal "http://rails-brakeman.heroku.com", svc.rails_brakeman_url - end - - def test_posts_payload - @stubs.post "/" do |env| - assert_equal payload, JSON.parse(Faraday::Utils.parse_query(env[:body])['payload']) - end - @svc.receive_push - end - - def service(*args) - super Service::RailsBrakeman, *args - end - - def data - { "token" => "xAAQZtJhYHGagsed1kYR", 'rails_brakeman_url' => '' } - end - - def payload - { - "before" => "a6ab010bc21151e238c73d5229c36892d51c2d4f", - "repository" => { - "url" => "https =>//github.com/flyerhzm/rails-brakeman.com", - "name" => "rails-brakeman.com", - "description" => "rails-brakeman.com", - "watchers" => 1, - "forks" => 1, - "private" => 0, - "owner" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - } - }, - "commits" => [ - { - "id" => "af9718a9bee64b9bbbefc4c9cf54c4cc102333a8", - "url" => "https =>//github.com/flyerhzm/rails-brakeman.com/commit/af9718a9bee64b9bbbefc4c9cf54c4cc102333a8", - "author" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - }, - "message" => "fix typo in .travis.yml", - "timestamp" => "2011-12-25T18 =>57 =>17+08 =>00", - "modified" => [".travis.yml"] - }, - { - "id" => "473d12b3ca40a38f12620e31725922a9d88b5386", - "url" => "https =>//github.com/flyerhzm/rails-brakeman.com/commit/473d12b3ca40a38f12620e31725922a9d88b5386", - "author" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - }, - "message" => "copy config yaml files for travis", - "timestamp" => "2011-12-25T20 =>36 =>34+08 =>00" - } - ], - "after" => "473d12b3ca40a38f12620e31725922a9d88b5386", - "ref" => "refs/heads/master" - } - end -end diff --git a/test/railsbp_test.rb b/test/railsbp_test.rb deleted file mode 100644 index b0aeeeaaf..000000000 --- a/test/railsbp_test.rb +++ /dev/null @@ -1,87 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class RailsbpTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @svc = service(data, payload) - end - - def test_reads_token_from_data - assert_equal "xAAQZtJhYHGagsed1kYR", @svc.token - end - - def test_reads_default_railsbp_url_from_data - assert_equal "https://railsbp.com", @svc.railsbp_url - end - - def test_reads_custom_railsbp_url_from_data - data = { "token" => "xAAQZtJhYHGagsed1kYR", "railsbp_url" => "http://railsbp.heroku.com" } - svc = service(data, payload) - assert_equal "http://railsbp.heroku.com", svc.railsbp_url - end - - def test_strips_whitespace_from_form_values - data = { "token" => " xAAQZtJhYHGagsed1kYR ", "railsbp_url" => " http://railsbp.heroku.com " } - svc = service(data, payload) - assert_equal "xAAQZtJhYHGagsed1kYR", svc.token - assert_equal "http://railsbp.heroku.com", svc.railsbp_url - end - - def test_posts_payload - @stubs.post "/" do |env| - assert_equal payload, JSON.parse(Faraday::Utils.parse_query(env[:body])['payload']) - end - @svc.receive_push - end - - def service(*args) - super Service::Railsbp, *args - end - - def data - { "token" => "xAAQZtJhYHGagsed1kYR", 'railsbp_url' => '' } - end - - def payload - { - "before" => "a6ab010bc21151e238c73d5229c36892d51c2d4f", - "repository" => { - "url" => "https =>//github.com/railsbp/rails-bestpractices.com", - "name" => "rails-bestpractice.com", - "description" => "rails-bestpractices.com", - "watchers" => 64, - "forks" => 14, - "private" => 0, - "owner" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - } - }, - "commits" => [ - { - "id" => "af9718a9bee64b9bbbefc4c9cf54c4cc102333a8", - "url" => "https =>//github.com/railsbp/rails-bestpractices.com/commit/af9718a9bee64b9bbbefc4c9cf54c4cc102333a8", - "author" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - }, - "message" => "fix typo in .travis.yml", - "timestamp" => "2011-12-25T18 =>57 =>17+08 =>00", - "modified" => [".travis.yml"] - }, - { - "id" => "473d12b3ca40a38f12620e31725922a9d88b5386", - "url" => "https =>//github.com/railsbp/rails-bestpractices.com/commit/473d12b3ca40a38f12620e31725922a9d88b5386", - "author" => { - "email" => "flyerhzm@gmail.com", - "name" => "Richard Huang" - }, - "message" => "copy config yaml files for travis", - "timestamp" => "2011-12-25T20 =>36 =>34+08 =>00" - } - ], - "after" => "473d12b3ca40a38f12620e31725922a9d88b5386", - "ref" => "refs/heads/master" - } - end -end diff --git a/test/rapidpush_test.rb b/test/rapidpush_test.rb deleted file mode 100644 index 801a49579..000000000 --- a/test/rapidpush_test.rb +++ /dev/null @@ -1,24 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class RapidPushTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_push - @stubs.post "/api/github/a" do |env| - assert_equal 'rapidpush.net', env[:url].host - data = Faraday::Utils.parse_query(env[:body]) - assert_equal payload.to_json, data['payload'] - [200, {}, ''] - end - - svc = service({'apikey' => 'a'}, payload) - svc.receive_push - end - - def service(*args) - super Service::RapidPush, *args - end -end - diff --git a/test/service_test.rb b/test/service_test.rb index e3420c730..160ed1450 100644 --- a/test/service_test.rb +++ b/test/service_test.rb @@ -171,6 +171,72 @@ def test_config_boolean_true_helper assert svc.config_boolean_true?("is_checked") end + def test_before_delivery + @service.before_delivery do |url, payload, headers, params| + headers['EDITED-IN-BEFORE-DELIVERY'] = true + payload.replace("EDITED") + end + + @stubs.post '/' do |env| + assert_equal '/', env.url.to_s + assert_equal 'EDITED', env[:body] + assert_equal true, env[:request_headers]['Edited-In-Before-Delivery'] + [200, {'X-Test' => 'success'}, 'OK'] + end + + @service.http_post('/', payload.to_s) + + @service.http_calls.each do |env| + assert_equal 200, env[:response][:status] + end + + assert_equal 1, @service.http_calls.size + end + + def test_multiple_before_delivery_callbacks + @service.before_delivery do |url, payload, headers, params| + headers['EDITED-IN-BEFORE-DELIVERY-1'] = true + end + + @service.before_delivery do |url, payload, headers, params| + headers['EDITED-IN-BEFORE-DELIVERY-2'] = true + end + + @stubs.get '/' do |env| + assert_equal true, env[:request_headers]['Edited-In-Before-Delivery-1'] + assert_equal true, env[:request_headers]['Edited-In-Before-Delivery-2'] + [200, {'X-Test' => 'success'}, 'OK'] + end + + @service.http_get('/') + + @service.http_calls.each do |env| + assert_equal 200, env[:response][:status] + end + end + + def test_reset_pre_delivery_callbacks! + @service.before_delivery do |url, payload, headers, params| + headers['EDITED-IN-BEFORE-DELIVERY'] = true + payload.replace("EDITED") + end + + @stubs.post '/' do |env| + assert_equal 'EDITED', env[:body] + assert_equal true, env[:request_headers]['Edited-In-Before-Delivery'] + [200, {'X-Test' => 'success'}, 'OK'] + end + + @service.http_post('/', "desrever") + @service.reset_pre_delivery_callbacks! + + @stubs.post '/' do |env| + refute_equal 'EDITED', env[:body] + refute_equal true, env[:request_headers]['Edited-In-Before-Delivery'] + [200, {'X-Test' => 'success'}, 'OK'] + end + end + def service(*args) super TestService, *args end diff --git a/test/sqwiggle_test.rb b/test/sqwiggle_test.rb deleted file mode 100644 index fbf7929d4..000000000 --- a/test/sqwiggle_test.rb +++ /dev/null @@ -1,61 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class SqwiggleTest < Service::TestCase - include Service::HttpTestMethods - - def test_default_room_push - - data = { - 'token' => 'some_token' - } - - payload = {'commits'=>[{'id'=>'test'}]} - svc = service(data, payload) - - @stubs.post "integrations/github/" do |env| - body = JSON.parse(env[:body]) - - assert_equal env[:url].host, "api.sqwiggle.com" - assert_equal basic_auth('some_token', 'X'), env[:request_headers][:authorization] - assert_equal 'test', body['payload']['commits'][0]['id'] - assert_match 'guid-', body['guid'] - assert_equal data, body['config'] - assert_equal 'push', body['event'] - [200, {}, ''] - end - - svc.receive_event - @stubs.verify_stubbed_calls - end - - def test_specified_room_push - data = { - 'token' => 'some_token', - 'room' => 'some_room' - } - - payload = {'commits'=>[{'id'=>'test'}]} - svc = service(data, payload) - - @stubs.post "integrations/github/some_room" do |env| - body = JSON.parse(env[:body]) - - assert_equal env[:url].host, "api.sqwiggle.com" - assert_equal basic_auth('some_token', 'X'), env[:request_headers][:authorization] - assert_equal 'test', body['payload']['commits'][0]['id'] - assert_match 'guid-', body['guid'] - assert_equal data, body['config'] - assert_equal 'push', body['event'] - [200, {}, ''] - end - - svc.receive_event - @stubs.verify_stubbed_calls - end - - def service_class - Service::Sqwiggle - end -end - - diff --git a/test/stormpath_test.rb b/test/stormpath_test.rb deleted file mode 100644 index 1ab783290..000000000 --- a/test/stormpath_test.rb +++ /dev/null @@ -1,92 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class Hash - def except!(*keys) - keys.each { |key| delete(key) } - self - end -end - -class StormpathTest < Service::TestCase - include Service::HttpTestMethods - - TEST_API_KEY_ID = "18WJZYBI2I1YX8LDJBIK5DA6O" - TEST_API_KEY_SECRET = "5awFkPbNusdIKJkkmjVY6GUjap+VDw39Mnwy16C0luU" - - def data - { - 'api_key_id' => TEST_API_KEY_ID, - 'api_key_secret' => TEST_API_KEY_SECRET - } - end - - def payload - { - 'commits'=>[{'id'=>'test'}] - } - end - - def test_push - - svc = service(data, payload) - - @stubs.post "/vendors/github/events" do |env| - body = JSON.parse(env[:body]) - - assert_equal env[:request_headers]['content-type'], "application/json" - assert_equal 'test', body['payload']['commits'][0]['id'] - assert_match 'guid-', body['guid'] - assert_equal data, body['config'] - assert_equal 'push', body['event'] - [200, {}, ''] - end - - svc.receive_event - @stubs.verify_stubbed_calls - end - - def verify_requires(svc) - assert_raises Service::ConfigurationError do - svc.receive_event - end - end - - def test_requires_api_key_id - verify_requires(service(data.except!('api_key_id'), payload)) - end - - def test_requires_api_key_secret - verify_requires(service(data.except!('api_key_secret'), payload)) - end - - def test_invalid_api_key - - invalid_api_key = {'api_key_id' => 'invalid_id', 'api_key_secret' => 'invalid_secret'} - svc = service(invalid_api_key, payload) - - @stubs.post "/vendors/github/events" do |env| - body = JSON.parse(env[:body]) - - assert_equal env[:request_headers]['content-type'], "application/json" - assert_equal 'test', body['payload']['commits'][0]['id'] - assert_match 'guid-', body['guid'] - assert_equal 'push', body['event'] - [401, {}, ''] - end - - verify_requires svc - @stubs.verify_stubbed_calls - end - - def test_config - - svc = service(data, payload) - - assert_equal svc.data['api_key_id'], TEST_API_KEY_ID - assert_equal svc.data['api_key_secret'], TEST_API_KEY_SECRET - end - - def service_class - Service::Stormpath - end -end \ No newline at end of file diff --git a/test/tinypm_test.rb b/test/tinypm_test.rb deleted file mode 100644 index 1bf12acbc..000000000 --- a/test/tinypm_test.rb +++ /dev/null @@ -1,33 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TinyPMTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @data = {'url' => 'http://tinypm.com/github'} - end - - def test_push - @stubs.post "/github" do |env| - form = Faraday::Utils.parse_query(env[:body]) - assert_equal 'tinypm.com', env[:url].host - assert_equal 'application/json', env[:request_headers]['Content-Type'] - assert_equal JSON.generate(payload), env[:body] - [200, {}, ''] - end - - svc = service(@data, payload) - svc.receive_push - @stubs.verify_stubbed_calls - end - - def test_no_server - assert_raises Service::ConfigurationError do - svc = service :push, {'url' => ''}, payload - svc.receive_push - end - end - - def service(*args) - super Service::TinyPM, *args - end -end diff --git a/test/trajectory_test.rb b/test/trajectory_test.rb deleted file mode 100644 index e7edfb4fd..000000000 --- a/test/trajectory_test.rb +++ /dev/null @@ -1,52 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class TrajectoryTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_raise_config_error_without_api_key - assert_raises Service::ConfigurationError do - svc = service({}, payload) - svc.receive_push - end - - assert_raises Service::ConfigurationError do - svc = service({}, payload) - svc.receive_pull_request - end - end - - def test_push - @stubs.post '/api/payloads?api_key=test_api_key' do |env| - confirm_trajectory_receives_request(env) - [200, {}, ''] - end - - svc = service({'api_key' => 'test_api_key'}, payload) - svc.receive_push - - @stubs.verify_stubbed_calls - end - - def test_pull_request - @stubs.post '/api/payloads?api_key=test_api_key' do |env| - confirm_trajectory_receives_request(env) - [200, {}, ''] - end - - svc = service({'api_key' => 'test_api_key'}, payload) - svc.receive_pull_request - - @stubs.verify_stubbed_calls - end - - def service(*args) - super Service::Trajectory, *args - end - - def confirm_trajectory_receives_request(env) - assert_equal 'application/json', env[:request_headers]['Content-Type'] - assert_equal 'https://www.apptrajectory.com/api/payloads?api_key=test_api_key', env[:url].to_s - end -end diff --git a/test/visualops_test.rb b/test/visualops_test.rb deleted file mode 100644 index 1c43b736a..000000000 --- a/test/visualops_test.rb +++ /dev/null @@ -1,55 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class VisualOpsTest < Service::TestCase - - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - @data = {'username' => 'someuser', 'app_list' => 'abc123, madeira:master, xyz456:devel', 'consumer_token' => 'madeira-visualops'} - end - - def test_push - svc = service :push, @data - - @stubs.post "/v1/github" do |env| - assert_equal 'api.visualops.io', env[:url].host - body = JSON.parse(env[:body]) - assert_equal 'someuser', body['config']['username'] - assert_equal 'madeira-visualops', body['config']['consumer_token'] - assert_equal ['abc123','madeira'], body['config']['app_list'] - [200, {}, ''] - end - - svc.receive_event - end - - def test_develop - svc = service :push, @data, - payload.update("ref" => "refs/heads/devel") - - @stubs.post "/v1/github" do |env| - assert_equal 'api.visualops.io', env[:url].host - body = JSON.parse(env[:body]) - assert_equal 'someuser', body['config']['username'] - assert_equal 'madeira-visualops', body['config']['consumer_token'] - assert_equal ['xyz456'], body['config']['app_list'] - [200, {}, ''] - end - - svc.receive_event - end - - def test_other_branch - svc = service :push, @data, - payload.update("ref" => "refs/heads/no-such-branch") - - @stubs.post "/v1/github" do |env| - raise "This should not be called" - end - - svc.receive_event - end - - def service(*args) - super Service::VisualOps, *args - end -end diff --git a/test/yammer_test.rb b/test/yammer_test.rb deleted file mode 100644 index 4ae6b8c59..000000000 --- a/test/yammer_test.rb +++ /dev/null @@ -1,42 +0,0 @@ -require File.expand_path('../helper', __FILE__) - -class YammerTest < Service::TestCase - def setup - @stubs = Faraday::Adapter::Test::Stubs.new - end - - def test_reads_token_from_data - svc = service({'token' => 'a4f1200fc99331027ab1239%3D%3D'}, payload) - assert_equal "a4f1200fc99331027ab1239%3D%3D", svc.token - end - - def test_strips_whitespace_from_token - svc = service({'token' => 'a4f1200fc99331027ab1239%3D%3D '}, payload) - assert_equal 'a4f1200fc99331027ab1239%3D%3D', svc.token - end - - def test_posts_payload - [:push, :commit_comment, :pull_request, :pull_request_review_comment, :public].each do |event| - svc = service(event, data, payload) - @stubs.post "/a4f1200fc99331027ab1239%3D%3D/notify/#{event}" do |env| - assert_equal 'https', env[:url].scheme - assert_equal 'yammer-github.herokuapp.com', env[:url].host - assert_equal "/a4f1200fc99331027ab1239%3D%3D/notify/#{event}", env[:url].path - assert_equal payload, JSON.parse(Faraday::Utils.parse_query(env[:body])['payload']) - end - - svc.receive_event - end - end - -private - - def service(*args) - super Service::Yammer, *args - end - - def data - { 'token' => 'a4f1200fc99331027ab1239%3D%3D' } - end - -end diff --git a/vendor/internal-gems/rubyforge/lib/rubyforge.rb b/vendor/internal-gems/rubyforge/lib/rubyforge.rb deleted file mode 100644 index 61b0e9714..000000000 --- a/vendor/internal-gems/rubyforge/lib/rubyforge.rb +++ /dev/null @@ -1,74 +0,0 @@ -# This code was pretty much copied from Ara Howard's -# RubyForge gem... thanks Ara! :) - -require 'net/https' -require 'openssl' -require 'webrick/cookie' - -class RubyForge - def initialize(username, password) - @cookies = Array.new - login(username, password) - end - - def post_news(group_id, subject, body) - url = URI.parse('http://rubyforge.org/news/submit.php') - form = { - 'group_id' => group_id.to_s, - 'post_changes' => 'y', - 'summary' => subject, - 'details' => body, - 'submit' => 'Submit' - } - execute(url, form) - end - - ####### - private - ####### - - def login(username, password) - url = URI.parse('https://rubyforge.org/account/login.php') - form = { - 'return_to' => '', - 'form_loginname' => username, - 'form_pw' => password, - 'login' => 'Login' - } - response = execute(url, form) - bake_cookies(url, response) - end - - def execute(url, parameters) - request = Net::HTTP::Post.new(url.request_uri) - request['Content-Type'] = 'application/x-www-form-urlencoded' - @cookies.each do |cookie| - request['Cookie'] = cookie - end - http = Net::HTTP.new(url.host, url.port) - if url.scheme == 'https' - http.use_ssl = true - http.verify_mode = OpenSSL::SSL::VERIFY_NONE - end - request_data = query_string_for(parameters) - request['Content-Length'] = request_data.length.to_s - http.request(request, request_data) - end - - def bake_cookies(url, response) - (response.get_fields('Set-Cookie') || []).each do |raw_cookie| - WEBrick::Cookie.parse_set_cookies(raw_cookie).each do |baked_cookie| - baked_cookie.domain ||= url.host - baked_cookie.path ||= url.path - @cookies << baked_cookie - end - end - end - - def query_string_for(parameters) - parameters.sort_by { |k,v| k.to_s }.map { |k,v| - k && [ WEBrick::HTTPUtils.escape_form(k.to_s), - WEBrick::HTTPUtils.escape_form(v.to_s) ].join('=') - }.compact.join('&') - end -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/README b/vendor/internal-gems/yammer4r-0.1.5/README deleted file mode 100644 index 40290f9bc..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/README +++ /dev/null @@ -1,16 +0,0 @@ -= Yammer4R - -== Developers -* {Jim Patterson} - -== Description -Yammer4R provides an object based API to query or update your Yammer account via pure Ruby. It hides the ugly HTTP/REST code from your code. - -== External Dependencies -* Ruby 1.8 (tested with 1.8.7) -* JSON gem (tested with versions: 1.1.3) -* OAuth gem (tested with versions: 0.2.7) -* RSpec gem (tested with versions: 1.1.11) - -== Usage Examples -Coming soon... \ No newline at end of file diff --git a/vendor/internal-gems/yammer4r-0.1.5/Rakefile b/vendor/internal-gems/yammer4r-0.1.5/Rakefile deleted file mode 100644 index c183b6602..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/Rakefile +++ /dev/null @@ -1,13 +0,0 @@ -$:.unshift(File.join(File.dirname(__FILE__), 'lib')) - -require 'rubygems' -require 'rake' -require 'spec/rake/spectask' -require 'yammer4r' - -desc "Run all specs" -Spec::Rake::SpecTask.new('spec') do |t| - t.spec_files = FileList['spec/**/*spec.rb'] -end - -task :default => [:spec] \ No newline at end of file diff --git a/vendor/internal-gems/yammer4r-0.1.5/TODO b/vendor/internal-gems/yammer4r-0.1.5/TODO deleted file mode 100644 index 438a76403..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/TODO +++ /dev/null @@ -1,2 +0,0 @@ -Test! There are currently no tests for yammer4r, and that makes me very sad. -Switch to HTTParty instead of yammer_request. diff --git a/vendor/internal-gems/yammer4r-0.1.5/bin/yammer_create_oauth_yml.rb b/vendor/internal-gems/yammer4r-0.1.5/bin/yammer_create_oauth_yml.rb deleted file mode 100644 index 4c845e19f..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/bin/yammer_create_oauth_yml.rb +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/env ruby - -# Instructions: -# -# Register your application at https://www.yammer.com/client_applications/new -# Upon successful registration, you'll recieve your consumer key and secret. -# Pass these values on the command line as --key (-k) and --secret (-s) then -# follow the instructions. - -require 'optparse' -require 'rubygems' -require 'oauth' - -OPTIONS = { - :outfile => 'oauth.yml' -} - -YAMMER_OAUTH = "https://www.yammer.com" - -ARGV.options do |o| - script_name = File.basename($0) - - o.set_summary_indent(' ') - o.banner = "Usage: #{script_name} [OPTIONS]" - o.define_head "Create a yaml file for yammer oauth" - o.separator "" - o.separator "[-k] and [-s] options are mandatory" - o.separator "" - - o.on("-o", "--outfile=[val]", String, - "Yaml output file", - "Default: #{OPTIONS[:outfile]}") { |OPTIONS[:outfile]| } - o.on("-k", "--key=val", String, - "Consumer key for Yammer app") { |key| OPTIONS[:key] = key} - o.on("-s", "--secret=val", String, - "Consumer secret for Yammer app") { |secret| OPTIONS[:secret] = secret} - - o.separator "" - - o.on_tail("-h", "--help", "Show this help message.") { puts o; exit } - o.parse! -end - -unless OPTIONS[:key] && OPTIONS[:secret] - raise ArgumentError, "Must supply consumer key and secret (use -h for help)" -end - -consumer = OAuth::Consumer.new OPTIONS[:key], OPTIONS[:secret], {:site => YAMMER_OAUTH} -request_token = consumer.get_request_token - -puts "Please visit the following URL in your browser to authorize your application, then enter the 4 character security code when done: #{request_token.authorize_url}" -oauth_verifier = gets -response = consumer.token_request(consumer.http_method, - (consumer.access_token_url? ? consumer.access_token_url : consumer.access_token_path), - request_token, - {}, - :oauth_verifier => oauth_verifier.chomp) -access_token = OAuth::AccessToken.new(consumer,response[:oauth_token],response[:oauth_token_secret]) - -oauth_yml = <<-EOT -consumer: - key: #{OPTIONS[:key]} - secret: #{OPTIONS[:secret]} -access: - token: #{access_token.token} - secret: #{access_token.secret} -EOT - -File.open(OPTIONS[:outfile], "w") do |f| - f.write oauth_yml -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/example.rb b/vendor/internal-gems/yammer4r-0.1.5/example.rb deleted file mode 100644 index 17e0eed42..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/example.rb +++ /dev/null @@ -1,15 +0,0 @@ -require 'yammer4r' - -config_path = File.dirname(__FILE__) + 'oauth.yml' -yammer = Yammer::Client.new(:config => config_path) - -# Get all messages -messages = yammer.messages -puts messages.size -puts messages.last.body.plain -puts messages.last.body.parsed - -# Print out all the users -yammer.users.each do |u| - puts "#{u.name} - #{u.me?}" -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/ext/core_ext.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/ext/core_ext.rb deleted file mode 100644 index fad18ac2d..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/ext/core_ext.rb +++ /dev/null @@ -1,30 +0,0 @@ -class String - def to_boolean - case self - when 'true' - true - when 'false' - false - else - nil - end - end -end - -class Hash - def symbolize_keys - inject({}) do |options, (key, value)| - options[(key.to_sym rescue key) || key] = value - options - end - end - - def symbolize_keys! - self.replace(self.symbolize_keys) - end - - def assert_has_keys(*valid_keys) - missing_keys = [valid_keys].flatten - keys - raise(ArgumentError, "Missing Option(s): #{missing_keys.join(", ")}") unless missing_keys.empty? - end -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/client.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/client.rb deleted file mode 100644 index 35a17a1cb..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/client.rb +++ /dev/null @@ -1,100 +0,0 @@ -module Yammer - class Client - def initialize(options={}) - options.assert_has_keys(:consumer, :access) unless options.has_key?(:config) - - yammer_url = options.delete(:yammer_host) || "https://www.yammer.com" - @api_path = "/api/v1/" - - if options[:config] - config = YAML.load(open(options[:config])) - options[:consumer] = config['consumer'].symbolize_keys - options[:access] = config['access'].symbolize_keys - end - - consumer = OAuth::Consumer.new(options[:consumer][:key], options[:consumer][:secret], :site => yammer_url) - consumer.http.set_debug_output($stderr) if options[:verbose] == true - @access_token = OAuth::AccessToken.new(consumer, options[:access][:token], options[:access][:secret]) - end - - - # TODO: modularize message and user handling - def messages(action = :all, params = {}) - params.merge!(:resource => :messages) - params.merge!(:action => action) unless action == :all - - parsed_response = JSON.parse(yammer_request(:get, params).body) - older_available = parsed_response['meta']['older_available'] - - ml = parsed_response['messages'].map do |m| - mash(m) - end - Yammer::MessageList.new(ml, older_available, self) - end - - # POST or DELETE a message - def message(action, params) - params.merge!(:resource => :messages) - yammer_request(action, params) - end - - def users(params = {}) - params.merge!(:resource => :users) - JSON.parse(yammer_request(:get, params).body).map { |u| Yammer::User.new(mash(u), self) } - end - - def user(id) - u = JSON.parse(yammer_request(:get, {:resource => :users, :id => id}).body) - Yammer::User.new(mash(u), self) - end - - def current_user - u = JSON.parse(yammer_request(:get, {:resource => :users, :action => :current}).body) - Yammer::User.new(mash(u), self) - end - alias_method :me, :current_user - - private - - def yammer_request(http_method, options) - request_uri = @api_path + options.delete(:resource).to_s - [:action, :id].each {|k| request_uri += "/#{options.delete(k)}" if options.has_key?(k) } - request_uri += ".json" - - if options.any? - request_uri += "?#{create_query_string(options)}" unless http_method == :post - end - - if http_method == :post - handle_response(@access_token.send(http_method, request_uri, options)) - else - handle_response(@access_token.send(http_method, request_uri)) - end - end - - def create_query_string(options) - options.map {|k, v| "#{OAuth::Helper.escape(k)}=#{OAuth::Helper.escape(v)}"}.join('&') - end - - def mash(json) - Mash.new(json) - end - - def handle_response(response) - # TODO: Write classes for exceptions - case response.code.to_i - when 200..201 - response - when 400 - raise "Bad Request: #{response.body}" - when 401 - raise "Authentication failed. Check your username and password" - when 503 - raise "503: Service Unavailable" - else - raise "Error. HTTP Response #{response.code}: #{response.body}" - end - end - - end -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message.rb deleted file mode 100644 index 3b097d83b..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message.rb +++ /dev/null @@ -1,26 +0,0 @@ -class Yammer::Message - - attr_reader :id, :url, :web_url, :replied_to_id, :thread_id, - :body_plain, :body_parsed, :message_type, :client_type, - :sender_id, :sender_type - - def initialize(m) - @id = m['id'] - @url = m['url'] - @web_url = m['web_url'] - @replied_to_id = m['replied_to_id'] - @thread_id = m['thread_id'] - @body_plain = m['body']['plain'] - @body_parsed = m['body']['parsed'] - @message_type = m['message_type'] - @client_type = m['client_type'] - @sender_id = m['sender_id'] - @sender_type = m['sender_type'] - begin - @created_at = m['created_at'] - rescue ArgumentError => e - @created_at = nil - end - end - -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message_list.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message_list.rb deleted file mode 100644 index 98928559e..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/message_list.rb +++ /dev/null @@ -1,20 +0,0 @@ -class Yammer::MessageList < Array - - attr_reader :older_available, :ids - - def initialize(a, oa, c) - super(a) - @older_available = oa - @client = c - @ids = a.map {|m| m.id}.sort - end - - def first - self[0] - end - - def last - self[self.size - 1] - end - -end \ No newline at end of file diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/user.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/user.rb deleted file mode 100644 index ff965fe9c..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer/user.rb +++ /dev/null @@ -1,17 +0,0 @@ -class Yammer::User - extend Forwardable - def_delegator :@user, :id - - def initialize(mash, client) - @user = mash - @client = client - end - - def me? - @user.id == @client.me.id - end - - def method_missing(call, *args) - @user.send(call, *args) - end -end diff --git a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer4r.rb b/vendor/internal-gems/yammer4r-0.1.5/lib/yammer4r.rb deleted file mode 100644 index 0907b43a7..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/lib/yammer4r.rb +++ /dev/null @@ -1,21 +0,0 @@ -require 'forwardable' -require 'rubygems' -require 'date' -require 'yaml' -require 'open-uri' - -#gem 'json', '>= 1.1.7' -#require 'json' - -#gem 'oauth', '>=0.3.5' -require 'oauth' - -#gem 'mash', '>=0.0.3' -require 'mash' - -$:.unshift(File.dirname(__FILE__)) -require 'ext/core_ext' -require 'yammer/client' -require 'yammer/message' -require 'yammer/message_list' -require 'yammer/user' diff --git a/vendor/internal-gems/yammer4r-0.1.5/oauth.yml.template b/vendor/internal-gems/yammer4r-0.1.5/oauth.yml.template deleted file mode 100644 index 248c13b47..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/oauth.yml.template +++ /dev/null @@ -1,7 +0,0 @@ -consumer: - key: CLIENT_KEY - secret: CLIENT_SECRET - -access: - token: CONSUMER_TOKEN - secret: CONSUMER_SECRET diff --git a/vendor/internal-gems/yammer4r-0.1.5/spec/spec_helper.rb b/vendor/internal-gems/yammer4r-0.1.5/spec/spec_helper.rb deleted file mode 100644 index 64f17e490..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/spec/spec_helper.rb +++ /dev/null @@ -1,3 +0,0 @@ -$LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib")) -require 'yammer4r' -require 'spec' \ No newline at end of file diff --git a/vendor/internal-gems/yammer4r-0.1.5/spec/yammer/client_spec.rb b/vendor/internal-gems/yammer4r-0.1.5/spec/yammer/client_spec.rb deleted file mode 100644 index 2d06e049c..000000000 --- a/vendor/internal-gems/yammer4r-0.1.5/spec/yammer/client_spec.rb +++ /dev/null @@ -1,53 +0,0 @@ -require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') -require 'ostruct' - -describe Yammer::Client do - - context "creating" do - - before(:each) do - mock_consumer = mock(OAuth::Consumer) - OAuth::Consumer.stub!("new").and_return(mock_consumer) - @mock_http = mock("http") - mock_consumer.stub!("http").and_return(@mock_http) - end - - it "can be configured to be verbose" do - @mock_http.should_receive("set_debug_output").with($stderr) - Yammer::Client.new(:consumer => {}, :access => {}, :verbose => true) - end - - it "should not be configured to be verbose unless asked to be" do - @mock_http.should_not_receive("set_debug_output") - Yammer::Client.new(:consumer => {}, :access => {}) - end - - it "should not be configured to be verbose if asked not to be" do - @mock_http.should_not_receive("set_debug_output") - Yammer::Client.new(:consumer => {}, :access => {}, :verbose => false) - end - - end - - context "users" do - - before(:each) do - @mock_access_token = mock(OAuth::AccessToken) - @response = OpenStruct.new(:code => 200, :body => '{}') - OAuth::AccessToken.stub!("new").and_return(@mock_access_token) - @client = Yammer::Client.new(:consumer => {}, :access => {}) - end - - it "should request the first page by default" do - @mock_access_token.should_receive("get").with("/api/v1/users.json").and_return(@response) - @client.users - end - - it "can request a specified page" do - @mock_access_token.should_receive("get").with("/api/v1/users.json?page=2").and_return(@response) - @client.users(:page => 2) - end - - end - -end \ No newline at end of file