mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-09 12:46:07 +10:00
While Octokit auto pagination set the page size to the maximum 100, and seek to not overstep the rate limit. When the rate limit is reached its raises an exception, and stop doing new requests. Here we use a custom pattern for traversing large lists, so we can check if we’ll reach the rate limit and wait the API to reset the rate limit before making new requests.
79 lines
1.5 KiB
Ruby
79 lines
1.5 KiB
Ruby
module Gitlab
|
|
module GithubImport
|
|
class IssueFormatter < BaseFormatter
|
|
def attributes
|
|
{
|
|
iid: number,
|
|
project: project,
|
|
milestone: milestone,
|
|
title: raw_data.title,
|
|
description: description,
|
|
state: state,
|
|
author_id: author_id,
|
|
assignee_id: assignee_id,
|
|
created_at: raw_data.created_at,
|
|
updated_at: updated_at
|
|
}
|
|
end
|
|
|
|
def create!
|
|
Issue.create!(self.attributes)
|
|
end
|
|
|
|
def has_comments?
|
|
raw_data.comments > 0
|
|
end
|
|
|
|
def number
|
|
raw_data.number
|
|
end
|
|
|
|
def valid?
|
|
raw_data.pull_request.nil?
|
|
end
|
|
|
|
private
|
|
|
|
def assigned?
|
|
raw_data.assignee.present?
|
|
end
|
|
|
|
def assignee_id
|
|
if assigned?
|
|
gl_user_id(raw_data.assignee.id)
|
|
end
|
|
end
|
|
|
|
def author
|
|
raw_data.user.login
|
|
end
|
|
|
|
def author_id
|
|
gl_user_id(raw_data.user.id) || project.creator_id
|
|
end
|
|
|
|
def body
|
|
raw_data.body || ""
|
|
end
|
|
|
|
def description
|
|
@formatter.author_line(author) + body
|
|
end
|
|
|
|
def milestone
|
|
if raw_data.milestone.present?
|
|
project.milestones.find_by(iid: raw_data.milestone.number)
|
|
end
|
|
end
|
|
|
|
def state
|
|
raw_data.state == 'closed' ? 'closed' : 'opened'
|
|
end
|
|
|
|
def updated_at
|
|
state == 'closed' ? raw_data.closed_at : raw_data.updated_at
|
|
end
|
|
end
|
|
end
|
|
end
|