# encoding: utf-8moduleGithubclassReposmodulePubSubHubbub# Subscribe to existing topic through pubsubhubbub## = Parameters# * topic - Required string - The URI of the GitHub repository to subscribe to. The path must be in the format of /:user/:repo/events/:event.# * callback - Required string - The URI to receive the updates to the topic.## = Examples# @github = Github.new :oauth_token => '...'# @github.subscribe 'https://github.com/:user/:repo/events/push',# 'github://Email?address=peter-murach@gmail.com',# :verify => 'sync',# :secret => '...'#defsubscribe(topic,callback,params={})_validate_presence_oftopic,callback_normalize_params_keys(params)_merge_action!("subscribe",topic,callback,params)post("/hub",params)end# Unsubscribe from existing topic though pubsubhubbub##defunsubscribe(topic,callback,params={})_validate_presence_oftopic,callback_normalize_params_keys(params)_merge_action!("unsubscribe",topic,callback,params)post("/hub",params)end# Subscribe repository to service hook through pubsubhubbub## = Parameters# * repo-name - Required string,# * service-name - Required string# * <tt>:event</tt> - Required hash key for the type of event. The default event is <tt>push</tt>## = Examples# @github = Github.new :oauth_token => '...'# @github.repos.subscribe_service 'user-name', 'repo-name', 'campfire',# :subdomain => 'github',# :room => 'Commits',# :token => 'abc123',# :event => 'watch'#defsubscribe_service(user_name,repo_name,service_name,params={})_validate_presence_ofuser_name,repo_name,service_name_normalize_params_keys(params)event=params.delete('event')||'push'topic="https://github.com/#{user_name}/#{repo_name}/events/#{event}"callback="github://#{service_name}?#{params.serialize}"subscribe(topic,callback)endalias:subscribe_repository:subscribe_service# Subscribe repository to service hook through pubsubhubbub## = Parameters# * repo-name - Required string,# * service-name - Required string# * <tt>:event</tt> - Optional hash key for the type of event. The default event is <tt>push</tt>## = Examples# @github = Github.new :oauth_token => '...'# @github.repos.unsubscribe_service 'user-name', 'repo-name', 'campfire'#defunsubscribe_service(user_name,repo_name,service_name,params={})_validate_presence_ofuser_name,repo_name,service_name_normalize_params_keys(params)event=params.delete('event')||'push'topic="https://github.com/#{user_name}/#{repo_name}/events/#{event}"callback="github://#{service_name}"unsubscribe(topic,callback)endalias:unsubscribe_repository:unsubscribe_serviceprivatedef_merge_action!(action,topic,callback,params)# :nodoc:options={"hub.mode"=>action.to_s,"hub.topic"=>topic.to_s,"hub.callback"=>callback,"hub.verify"=>params.delete('verify')||'sync',"hub.secret"=>params.delete('secret')||''}params.merge!optionsendend# PubSubHubbubend# Reposend# Github