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