gitlab-org--gitlab-foss/lib/gitlab/phabricator_import/representation/task.rb

73 lines
1.6 KiB
Ruby

# frozen_string_literal: true
module Gitlab
module PhabricatorImport
module Representation
class Task
def initialize(json)
@json = json
end
def phabricator_id
json['phid']
end
def author_phid
json['fields']['authorPHID']
end
def owner_phid
json['fields']['ownerPHID']
end
def phids
@phids ||= [author_phid, owner_phid]
end
def issue_attributes
@issue_attributes ||= {
title: issue_title,
description: issue_description,
state: issue_state,
created_at: issue_created_at,
closed_at: issue_closed_at
}
end
private
attr_reader :json
def issue_title
# The 255 limit is the validation we impose on the Issue title in
# Issuable
@issue_title ||= json['fields']['name'].truncate(255)
end
def issue_description
json['fields']['description']['raw']
end
def issue_state
issue_closed_at.present? ? :closed : :opened
end
def issue_created_at
return unless json['fields']['dateCreated']
@issue_created_at ||= cast_datetime(json['fields']['dateCreated'])
end
def issue_closed_at
return unless json['fields']['dateClosed']
@issue_closed_at ||= cast_datetime(json['fields']['dateClosed'])
end
def cast_datetime(value)
Time.at(value.to_i)
end
end
end
end
end