diff options
author | Valery Sizov <valery@gitlab.com> | 2015-01-27 15:37:19 -0800 |
---|---|---|
committer | Valery Sizov <valery@gitlab.com> | 2015-02-05 12:50:34 -0800 |
commit | 5194214e3a2f97accf0c8119b4cb39fd4fcef5db (patch) | |
tree | 7320257c4470abadd90a0f17fd92f408143b6bb1 /lib/gitlab/gitlab_import/importer.rb | |
parent | 0a9cab4ee65f2b42c56989698c401cab60d68b53 (diff) | |
download | gitlab-ce-5194214e3a2f97accf0c8119b4cb39fd4fcef5db.tar.gz |
GitLab integration. Importer
Diffstat (limited to 'lib/gitlab/gitlab_import/importer.rb')
-rw-r--r-- | lib/gitlab/gitlab_import/importer.rb | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/gitlab/gitlab_import/importer.rb b/lib/gitlab/gitlab_import/importer.rb new file mode 100644 index 00000000000..3e9087a556c --- /dev/null +++ b/lib/gitlab/gitlab_import/importer.rb @@ -0,0 +1,48 @@ +module Gitlab + module GitlabImport + class Importer + attr_reader :project, :client + + def initialize(project) + @project = project + @client = Client.new(project.creator.gitlab_access_token) + end + + def execute + project_identifier = URI.encode(project.import_source, '/') + + #Issues && Comments + issues = client.issues(project_identifier) + + issues.each do |issue| + body = "*Created by: #{issue["author"]["name"]}*\n\n#{issue["description"]}" + + + comments = client.issue_comments(project_identifier, issue["id"]) + if comments.any? + body += "\n\n\n**Imported comments:**\n" + end + comments.each do |comment| + body += "\n\n*By #{comment["author"]["name"]} on #{comment["created_at"]}*\n\n#{comment["body"]}" + end + + project.issues.create!( + description: body, + title: issue["title"], + state: issue["state"], + author_id: gl_user_id(project, issue["author"]["id"]) + ) + end + + true + end + + private + + def gl_user_id(project, gitlab_id) + user = User.joins(:identities).find_by("identities.extern_uid = ?", gitlab_id.to_s) + (user && user.id) || project.creator_id + end + end + end +end |