70 lines
1.2 KiB
Ruby
70 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module BitbucketServer
|
||
|
module Representation
|
||
|
class Repo < Representation::Base
|
||
|
def initialize(raw)
|
||
|
super(raw)
|
||
|
end
|
||
|
|
||
|
def project_key
|
||
|
raw.dig('project', 'key')
|
||
|
end
|
||
|
|
||
|
def project_name
|
||
|
raw.dig('project', 'name')
|
||
|
end
|
||
|
|
||
|
def slug
|
||
|
raw['slug']
|
||
|
end
|
||
|
|
||
|
def browse_url
|
||
|
# The JSON reponse contains an array of 1 element. Not sure if there
|
||
|
# are cases where multiple links would be provided.
|
||
|
raw.dig('links', 'self').first.fetch('href')
|
||
|
end
|
||
|
|
||
|
def clone_url
|
||
|
raw['links']['clone'].find { |link| link['name'].starts_with?('http') }.fetch('href')
|
||
|
end
|
||
|
|
||
|
def description
|
||
|
project['description']
|
||
|
end
|
||
|
|
||
|
def full_name
|
||
|
"#{project_name}/#{name}"
|
||
|
end
|
||
|
|
||
|
def issues_enabled?
|
||
|
true
|
||
|
end
|
||
|
|
||
|
def name
|
||
|
raw['name']
|
||
|
end
|
||
|
|
||
|
def valid?
|
||
|
raw['scmId'] == 'git'
|
||
|
end
|
||
|
|
||
|
def visibility_level
|
||
|
if project['public']
|
||
|
Gitlab::VisibilityLevel::PUBLIC
|
||
|
else
|
||
|
Gitlab::VisibilityLevel::PRIVATE
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def project
|
||
|
raw['project']
|
||
|
end
|
||
|
|
||
|
def to_s
|
||
|
full_name
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|