class Repositories::CreateService < ApplicationService attr_reader :user, :project, :params def initialize(user, project, params) @project = project @user = user @params = params end def call @repository = Repository.new(repository_params) ActiveRecord::Base.transaction do if @repository.save! gitea_repository = Gitea::Repository::CreateService.new(user.gitea_token, gitea_repository_params).call project.update_attributes(gpid: gitea_repository["id"]) if gitea_repository end @repository end rescue => e puts "create repository service error: #{e.message}" raise Error, e.message end private def repository_params params.merge(project_id: project.id) end def gitea_repository_params hash = { name: params[:identifier], private: !params[:hidden] # "auto_init": true, # "description": "string", # "gitignores": "string", # "issue_labels": "string", # "license": "string", # "name": "string", # "private": true, # "readme": "string" } ignore = project.ignore license = project.license hash.merge(license: license.content) if license hash.merge(gitignores: ignore.content) if ignore puts "[gitea] create repository params: #{hash}" hash end end