class Glman::Repos::ProjectsRepo

Constants

PER_PAGE

Attributes

gitlab_url[R]
private_token[R]

Public Class Methods

new(opts={}) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 10
def initialize(opts={})
  @gitlab_url    = opts.fetch(:url)
  @private_token = opts.fetch(:private_token)
end

Public Instance Methods

create_merge_request(id, opts={}) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 46
def create_merge_request(id, opts={})
  merge_request_params_validate(opts)
  #source_branch, target_branch, assignee_id, title
  JSON.parse(client.post(url(id: id, path: 'merge_requests'), opts).body)
end
find(opts={}) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 52
def find(opts={})
  opts = Hash[opts.map{ |k, v| [k.to_s, v] }]
  all.each do |project|
    return project if project.eql?(project.merge(opts))
  end
  nil
end
get(id) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 18
def get(id)
  get_base(id)
end
get_branches(id, branch_id=nil) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 36
def get_branches(id, branch_id=nil)
  path = ['repository/branches', branch_id].compact.join('/')
  get_base(id, path)
end
get_events(id) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 22
def get_events(id)
  get_base(id, 'events')
end
get_hooks(id, hook_id=nil) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 31
def get_hooks(id, hook_id=nil)
  path = ['hooks', hook_id].compact.join('/')
  get_base(id, path)
end
get_merge_requests(id, mk_id=nil) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 41
def get_merge_requests(id, mk_id=nil)
  path = ['merge_requests', mk_id].compact.join('/')
  get_base(id, path)
end
get_team_members(id, member_id=nil) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 26
def get_team_members(id, member_id=nil)
  path = ['members', member_id].compact.join('/')
  get_base(id, path)
end
list() click to toggle source
# File lib/glman/repos/projects_repo.rb, line 14
def list
  all
end

Private Instance Methods

all() click to toggle source
# File lib/glman/repos/projects_repo.rb, line 73
def all
  JSON.parse(client.get(url).body)
end
client() click to toggle source
# File lib/glman/repos/projects_repo.rb, line 84
def client
  @client ||= HTTPClient.new
end
get_base(id, path=nil) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 69
def get_base(id, path=nil)
  JSON.parse(client.get(url(id: id, path: path)).body)
end
merge_request_params_validate(params) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 63
def merge_request_params_validate(params)
  raise ArgumentError, 'source_branch missing in configuration' unless params.has_key?(:source_branch)
  raise ArgumentError, 'target_branch missing in configuration' unless params.has_key?(:target_branch)
  raise ArgumentError, 'title missing in configuration'         unless params.has_key?(:title)
end
url(opts={}) click to toggle source
# File lib/glman/repos/projects_repo.rb, line 77
def url(opts={})
  id   = CGI.escape(opts[:id].to_s) if opts[:id]
  path = opts[:path]
  uri  = [gitlab_url, 'api', 'v3', 'projects', id, path, "?private_token=#{private_token}&per_page=#{PER_PAGE}"].compact.join('/')
  URI.join(uri)
end