Codebase list ruby-gitlab / upstream/4.17.0 lib / gitlab / client.rb
upstream/4.17.0

Tree @upstream/4.17.0 (Download .tar.gz)

client.rb @upstream/4.17.0

9962458
 
dab36f1
 
 
9962458
dab36f1
c321896
 
87adcfe
 
04d932e
 
dab36f1
9962458
dab36f1
c321896
dab36f1
87adcfe
c321896
04d932e
67eea39
87adcfe
c321896
87adcfe
e98b7f8
87adcfe
 
c321896
dab36f1
87adcfe
dab36f1
c321896
dab36f1
 
87adcfe
 
c321896
dab36f1
 
 
 
c321896
dab36f1
c321896
9962458
87adcfe
 
 
dab36f1
9962458
dab36f1
 
9962458
87adcfe
e98b7f8
dab36f1
87adcfe
dab36f1
c321896
dab36f1
 
 
9962458
04d932e
dab36f1
67eea39
9962458
 
dab36f1
 
 
 
 
 
9962458
dab36f1
 
 
87adcfe
 
 
 
9962458
e98b7f8
dab36f1
 
 
 
 
c321896
dab36f1
 
 
# frozen_string_literal: true

module Gitlab
  # Wrapper for the Gitlab REST API.
  class Client < API
    Dir[File.expand_path('client/*.rb', __dir__)].each { |f| require f }

    # Please keep in alphabetical order
    include AccessRequests
    include ApplicationSettings
    include Avatar
    include AwardEmojis
    include Boards
    include Branches
    include BroadcastMessages
    include BuildVariables
    include Builds
    include Commits
    include ContainerRegistry
    include Deployments
    include Environments
    include EpicIssues
    include Epics
    include Events
    include Features
    include GroupBadges
    include GroupBoards
    include GroupLabels
    include GroupMilestones
    include Groups
    include IssueLinks
    include Issues
    include Jobs
    include Keys
    include Labels
    include Lint
    include Markdown
    include MergeRequestApprovals
    include MergeRequests
    include Milestones
    include Namespaces
    include Notes
    include PipelineSchedules
    include PipelineTriggers
    include Pipelines
    include ProjectBadges
    include ProjectClusters
    include ProjectReleaseLinks
    include ProjectReleases
    include Projects
    include ProtectedTags
    include Repositories
    include RepositoryFiles
    include RepositorySubmodules
    include ResourceLabelEvents
    include ResourceStateEvents
    include Runners
    include Search
    include Services
    include Sidekiq
    include Snippets
    include SystemHooks
    include Tags
    include Templates
    include Todos
    include Users
    include UserSnippets
    include Versions
    include Wikis

    # Text representation of the client, masking private token.
    #
    # @return [String]
    def inspect
      inspected = super
      inspected.sub! @private_token, only_show_last_four_chars(@private_token) if @private_token
      inspected
    end

    # Utility method for URL encoding of a string.
    # Copied from https://ruby-doc.org/stdlib-2.7.0/libdoc/erb/rdoc/ERB/Util.html
    #
    # @return [String]
    def url_encode(url)
      url.to_s.b.gsub(/[^a-zA-Z0-9_\-.~]/n) { |m| sprintf('%%%02X', m.unpack1('C')) } # rubocop:disable Style/FormatString
    end

    private

    def only_show_last_four_chars(token)
      "#{'*' * (token.size - 4)}#{token[-4..-1]}"
    end
  end
end