34 lines
		
	
	
		
			850 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			850 B
		
	
	
	
		
			Ruby
		
	
	
	
class Api::V1::Projects::CompareService < ApplicationService 
 | 
						|
  include ActiveModel::Model
 | 
						|
  attr_reader :project, :from, :to, :token, :owner, :repo 
 | 
						|
  attr_accessor :gitea_data
 | 
						|
 | 
						|
  validates :from, :to, presence: true
 | 
						|
 | 
						|
  def initialize(project, from, to, token=nil)
 | 
						|
    @project = project 
 | 
						|
    @owner = project&.owner.login 
 | 
						|
    @repo = project&.identifier 
 | 
						|
    @from = from 
 | 
						|
    @to = to 
 | 
						|
    @token = token
 | 
						|
  end
 | 
						|
 | 
						|
  def call 
 | 
						|
    raise Error, errors.full_messages.join(",") unless valid?
 | 
						|
    load_gitea_data
 | 
						|
    raise Error, '获取对比信息失败!' unless gitea_data.is_a?(Hash)
 | 
						|
    gitea_data
 | 
						|
  end
 | 
						|
 | 
						|
  private 
 | 
						|
  def request_params 
 | 
						|
    {
 | 
						|
      access_token: token
 | 
						|
    }
 | 
						|
  end
 | 
						|
 | 
						|
  def load_gitea_data 
 | 
						|
    @gitea_data = $gitea_client.get_repos_compare_by_owner_repo_from_to(owner, repo, from, to, {query: request_params}) rescue nil
 | 
						|
  end
 | 
						|
end |