Parent

Included Modules

Gem::Commands::WebhookCommand

Public Class Methods

new() click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 24
24:   def initialize
25:     super 'webhook', "Register a webhook that will be called any time a gem is updated on Gemcutter."
26:     option_text = "The URL of the webhook to"
27: 
28:     add_option('-a', '--add URL', "#{option_text} add") do |value, options|
29:       options[:send] = 'add'
30:       options[:url] = value
31:     end
32: 
33:     add_option('-r', '--remove URL', "#{option_text} remove") do |value, options|
34:       options[:send] = 'remove'
35:       options[:url] = value
36:     end
37: 
38:     add_option('-f', '--fire URL', "#{option_text} testfire") do |value, options|
39:       options[:send] = 'fire'
40:       options[:url] = value
41:     end
42: 
43:     add_option('-g', '--global', "Apply hook globally") do |value, options|
44:       options[:global] = true
45:     end
46: 
47:     add_proxy_option
48:   end

Public Instance Methods

add_webhook(name, url) click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 61
61:   def add_webhook(name, url)
62:     say "Adding webhook..."
63:     make_webhook_request(:post, name, url)
64:   end
arguments() click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 16
16:   def arguments
17:     "GEM_NAME       name of gem to register webhook for, or omit to list hooks."
18:   end
description() click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 8
 8:   def description
 9:     Webhooks can be created for either specific gems or all gems. In both casesyou'll get a POST request of the gem in JSON format at the URL you specify inthe command. You can also use this command to test fire a webhook for any gem.
10:   end
execute() click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 50
50:   def execute
51:     sign_in
52: 
53:     if options[:url]
54:       name = options[:global] ? '*' : get_one_gem_name
55:       send("#{options[:send]}_webhook", name, options[:url])
56:     else
57:       list_webhooks
58:     end
59:   end
fire_webhook(name, url) click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 71
71:   def fire_webhook(name, url)
72:     say "Test firing webhook..."
73:     make_webhook_request(:post, name, url, "api/v1/web_hooks/fire")
74:   end
list_webhooks() click to toggle source
     # File lib/rubygems/commands/webhook_command.rb, line 76
 76:   def list_webhooks
 77:     resp = rubygems_api_request(:get, "api/v1/web_hooks.yaml") do |request|
 78:       request.add_field("Authorization", Gem.configuration.rubygems_api_key)
 79:     end
 80: 
 81:     with_response(resp) do |response|
 82:       begin
 83:         groups = YAML.load(response.body)
 84: 
 85:         if groups.size.zero?
 86:           say "You haven't added any webhooks yet."
 87:         else
 88:           groups.each do |group, hooks|
 89:             if options[:global]
 90:               next if group != "all gems"
 91:             elsif options[:args] && options[:args].first
 92:               next if group != options[:args].first
 93:             end
 94: 
 95:             say "#{group}:"
 96:             hooks.each do |hook|
 97:               say "- #{hook['url']}"
 98:             end
 99:           end
100:         end
101:       rescue Exception => error
102:         say "There was a problem parsing the data:"
103:         say error.to_s
104:         terminate_interaction
105:       end
106:     end
107:   end
make_webhook_request(method, name, url, api = "api/v1/web_hooks") click to toggle source
     # File lib/rubygems/commands/webhook_command.rb, line 109
109:   def make_webhook_request(method, name, url, api = "api/v1/web_hooks")
110:     response = rubygems_api_request(method, api) do |request|
111:       request.set_form_data("gem_name" => name, "url" => url)
112:       request.add_field("Authorization", Gem.configuration.rubygems_api_key)
113:     end
114: 
115:     with_response(response)
116:   end
remove_webhook(name, url) click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 66
66:   def remove_webhook(name, url)
67:     say "Removing webhook..."
68:     make_webhook_request(:delete, name, url, "api/v1/web_hooks/remove")
69:   end
usage() click to toggle source
    # File lib/rubygems/commands/webhook_command.rb, line 20
20:   def usage
21:     "#{program_name} [GEM_NAME]"
22:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.