diff options
Diffstat (limited to 'app/serializers/import')
7 files changed, 108 insertions, 0 deletions
diff --git a/app/serializers/import/base_provider_repo_entity.rb b/app/serializers/import/base_provider_repo_entity.rb new file mode 100644 index 00000000000..88a831a1686 --- /dev/null +++ b/app/serializers/import/base_provider_repo_entity.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class Import::BaseProviderRepoEntity < Grape::Entity + expose :id + expose :full_name + expose :sanitized_name + expose :provider_link +end diff --git a/app/serializers/import/bitbucket_provider_repo_entity.rb b/app/serializers/import/bitbucket_provider_repo_entity.rb new file mode 100644 index 00000000000..e8c647d407e --- /dev/null +++ b/app/serializers/import/bitbucket_provider_repo_entity.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class Import::BitbucketProviderRepoEntity < Import::BaseProviderRepoEntity + expose :id, override: true do |repo| + repo.full_name + end + + expose :sanitized_name, override: true do |repo| + repo.name.gsub(/[^\s\w.-]/, '') + end + + expose :provider_link, override: true do |repo, options| + repo.clone_url + end +end diff --git a/app/serializers/import/bitbucket_server_provider_repo_entity.rb b/app/serializers/import/bitbucket_server_provider_repo_entity.rb new file mode 100644 index 00000000000..d818cac46cd --- /dev/null +++ b/app/serializers/import/bitbucket_server_provider_repo_entity.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class Import::BitbucketServerProviderRepoEntity < Import::BitbucketProviderRepoEntity + expose :provider_link, override: true do |repo, options| + repo.browse_url + end +end diff --git a/app/serializers/import/fogbugz_provider_repo_entity.rb b/app/serializers/import/fogbugz_provider_repo_entity.rb new file mode 100644 index 00000000000..d420de141e1 --- /dev/null +++ b/app/serializers/import/fogbugz_provider_repo_entity.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class Import::FogbugzProviderRepoEntity < Import::BaseProviderRepoEntity + include ImportHelper + + expose :full_name, override: true do |repo| + repo.name + end + + expose :sanitized_name, override: true do |repo| + repo.safe_name + end + + expose :provider_link, override: true do |repo, options| + provider_project_link_url(options[:provider_url], repo.path) + end +end diff --git a/app/serializers/import/githubish_provider_repo_entity.rb b/app/serializers/import/githubish_provider_repo_entity.rb new file mode 100644 index 00000000000..d3e323053f9 --- /dev/null +++ b/app/serializers/import/githubish_provider_repo_entity.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class Import::GithubishProviderRepoEntity < Import::BaseProviderRepoEntity + include ImportHelper + + expose :sanitized_name, override: true do |provider_repo| + sanitize_project_name(provider_repo[:name]) + end + + expose :provider_link, override: true do |provider_repo, options| + provider_project_link_url(options[:provider_url], provider_repo[:full_name]) + end + + private + + def owner_name(provider_repo, provider) + provider_repo.dig(:owner, :login) if provider == :github + end +end diff --git a/app/serializers/import/gitlab_provider_repo_entity.rb b/app/serializers/import/gitlab_provider_repo_entity.rb new file mode 100644 index 00000000000..5fecd0a1cd3 --- /dev/null +++ b/app/serializers/import/gitlab_provider_repo_entity.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class Import::GitlabProviderRepoEntity < Import::BaseProviderRepoEntity + expose :id, override: true do |repo| + repo["id"] + end + + expose :full_name, override: true do |repo| + repo["path_with_namespace"] + end + + expose :sanitized_name, override: true do |repo| + repo["path"] + end + + expose :provider_link, override: true do |repo| + repo["web_url"] + end +end diff --git a/app/serializers/import/provider_repo_serializer.rb b/app/serializers/import/provider_repo_serializer.rb new file mode 100644 index 00000000000..5a9549d79aa --- /dev/null +++ b/app/serializers/import/provider_repo_serializer.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Import::ProviderRepoSerializer < BaseSerializer + def represent(repo, opts = {}) + entity = + case opts[:provider] + when :fogbugz + Import::FogbugzProviderRepoEntity + when :github, :gitea + Import::GithubishProviderRepoEntity + when :bitbucket + Import::BitbucketProviderRepoEntity + when :bitbucket_server + Import::BitbucketServerProviderRepoEntity + when :gitlab + Import::GitlabProviderRepoEntity + else + raise NotImplementedError + end + + super(repo, opts, entity) + end +end |