63 lines
1.1 KiB
Ruby
63 lines
1.1 KiB
Ruby
module Gitlab
|
|
module GitoriousImport
|
|
GITORIOUS_HOST = "https://gitorious.org"
|
|
|
|
class Client
|
|
attr_reader :repo_list
|
|
|
|
def initialize(repo_list)
|
|
@repo_list = repo_list
|
|
end
|
|
|
|
def authorize_url(redirect_uri)
|
|
"#{GITORIOUS_HOST}/gitlab-import?callback_url=#{redirect_uri}"
|
|
end
|
|
|
|
def repos
|
|
@repos ||= repo_names.map { |full_name| Repository.new(full_name) }
|
|
end
|
|
|
|
def repo(id)
|
|
repos.find { |repo| repo.id == id }
|
|
end
|
|
|
|
private
|
|
|
|
def repo_names
|
|
repo_list.to_s.split(',').map(&:strip).reject(&:blank?)
|
|
end
|
|
end
|
|
|
|
Repository = Struct.new(:full_name) do
|
|
def id
|
|
Digest::SHA1.hexdigest(full_name)
|
|
end
|
|
|
|
def namespace
|
|
segments.first
|
|
end
|
|
|
|
def path
|
|
segments.last
|
|
end
|
|
|
|
def name
|
|
path.titleize
|
|
end
|
|
|
|
def description
|
|
""
|
|
end
|
|
|
|
def import_url
|
|
"#{GITORIOUS_HOST}/#{full_name}.git"
|
|
end
|
|
|
|
private
|
|
|
|
def segments
|
|
full_name.split('/')
|
|
end
|
|
end
|
|
end
|
|
end
|