# encoding: utf-8
module Github
class Orgs < API
extend AutoloadHelper
autoload_all 'github_api/orgs',
:Members => 'members',
:Teams => 'teams'
include Github::Orgs::Members
include Github::Orgs::Teams
VALID_ORG_PARAM_NAMES = %w[
billing_email
company
email
location
name
].freeze
# Creates new Orgs API
def initialize(options = {})
super(options)
end
# List all public organizations for a user.
#
# = Examples
# @github = Github.new :user => 'user-name'
# @github.orgs.orgs
#
# List public and private organizations for the authenticated user.
#
# @github = Github.new :oauth_token => '..'
# @github.orgs.org 'github'
#
def orgs(user_name=nil, params={})
_update_user_repo_params(user_name)
_normalize_params_keys(params)
response = if user?
get("/users/#{user}/orgs", params)
else
get("/user/orgs", params)
end
return response unless block_given?
response.each { |el| yield el }
end
alias :list_orgs :orgs
alias :list_organizations :orgs
# Get properties for a single organization
#
# = Examples
# @github = Github.new
# @github.orgs.org 'github'
#
def org(org_name, params={})
_validate_presence_of org_name
get("/orgs/#{org_name}")
end
alias :get_org :org
alias :organisation :org
# Edit organization
#
# = Parameters
# :billing_email - Optional string - Billing email address. This address is not publicized.
# :company - Optional string
# :email - Optional string
# :location - Optional string
# :name - Optional string
#
# = Examples
# @github = Github.new :oauth_token => '...'
# @github.orgs.edit_org 'github',
# "billing_email" => "support@github.com",
# "blog" => "https://github.com/blog",
# "company" => "GitHub",
# "email" => "support@github.com",
# "location" => "San Francisco",
# "name" => "github"
#
def edit_org(org_name, params={})
_validate_presence_of org_name
_normalize_params_keys(params)
_filter_params_keys(VALID_ORG_PARAM_NAMES, params)
patch("/orgs/#{org_name}", params)
end
alias :edit_organization :edit_org
end # Orgs
end # Github