class Gitlab::QA::Component::Staging::Version

def api_get!

def api_get!
  @response_body ||= # rubocop:disable Naming/MemoizedInstanceVariableName
    begin
      response = Support::GetRequest.new(uri, Runtime::Env.qa_access_token).execute!
      JSON.parse(response.body)
    end
end

def initialize(address)

def initialize(address)
  @uri = URI.join(address, '/api/v4/version')
  Runtime::Env.require_qa_access_token!
end

def official?

def official?
  QA::Release::DEV_OFFICIAL_TAG_REGEX.match?(version)
end

def revision

def revision
  api_get!.fetch('revision')
end

def tag

def tag
  if official?
    # Because RCs are considered to be pre-releases, that come before
    # regular releases we can't check if version < 15.6.0, hence
    # using this weird not-gonna-happen-patch-release hack.
    Gem::Version.new(version) > Gem::Version.new('15.5.99') ? version : "v#{version}"
  else
    revision
  end
end

def version

def version
  api_get!.fetch('version')
end