|
- class Api::V1::Projects::Git::TreesService < ApplicationService
- include ActiveModel::Model
-
- attr_accessor :project, :token, :sha, :recursive, :page, :limit, :owner, :repo
- attr_accessor :gitea_data
-
- validates :sha, presence: :true
- validates :recursive, inclusion: {in: [nil, '', true, false]}
-
- def initialize(project, sha, params, token=nil)
- @project = project
- @owner = project&.owner.login
- @repo = project&.identifier
- @token = token
- @sha = sha
- @recursive = params[:recursive]
- @page = params[:page] || 1
- @limit = params[:limit] || 15
- end
-
- def call
- raise Error, errors.full_messages.join(", ") unless valid?
- $gitea_client.token = token unless token.blank?
- load_gitea_data
-
- $gitea_client.token = nil unless token.blank?
- gitea_data
- end
-
- private
- def request_query
- if recursive.present?
- {
- recursive: recursive,
- page: page,
- per_page: limit,
- access_token: token
- }
- else
- {
- page: page,
- per_page: limit,
- access_token: token
- }
- end
- end
-
- def load_gitea_data
- @gitea_data = $gitea_client.get_repos_git_trees_by_owner_repo_sha(owner, repo, sha, {query: request_query}) rescue nil
- raise Error, '获取文件树列表失败!' unless @gitea_data.is_a?(Hash)
- end
- end
|