class GitlabRuby::QueryChain

Attributes

urlstring[RW]
verb[RW]

Public Class Methods

generate_methods() click to toggle source
# File lib/gitlab_ruby/query_chain.rb, line 17
def generate_methods
  CSV.foreach('lib/gitlab_ruby/routes_table_no_verb.csv') do |url_row|
    query_stacks =  GitlabRuby::Helpers::QueryChain
                    .to_query_stacks(url_row.first)
    query_stacks.each_with_index do |key|
      key = key.match(/{(.+)}/)[1] if key.match(/{.+}/)
      build_method(key)
    end
  end
end
new(params = {}) click to toggle source
# File lib/gitlab_ruby/query_chain.rb, line 6
def initialize(params = {})
  @verb = params[:verb]
  @client = params[:client]
  @urlstring = ''
end

Private Class Methods

build_method(key) click to toggle source
# File lib/gitlab_ruby/query_chain.rb, line 30
def build_method(key)
  define_method key do |*param|
    if param.size == 1
      @urlstring = @urlstring + param[0].to_s + '/'
    elsif param.size.zero?
      @urlstring = @urlstring + key + '/'
    else
      raise GitlabRuby::QueryChainArgumentError
    end
    self
  end
end

Public Instance Methods

execute(params = {}) click to toggle source
# File lib/gitlab_ruby/query_chain.rb, line 12
def execute(params = {})
  @client.api_call(@urlstring, params, @verb)
end