mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-24 05:35:46 +08:00
reposyncer同步仓库接口
This commit is contained in:
166
app/services/ob_repository_sync/api_service.rb
Normal file
166
app/services/ob_repository_sync/api_service.rb
Normal file
@@ -0,0 +1,166 @@
|
||||
class ObRepositorySync::ApiService < ApplicationService
|
||||
attr_reader :project_name
|
||||
|
||||
def initialize(project_name)
|
||||
@project_name = project_name
|
||||
end
|
||||
|
||||
def call
|
||||
true
|
||||
end
|
||||
|
||||
def create_projects(params = {})
|
||||
projects_body = {
|
||||
"name": "#{@project_name}",
|
||||
"github_address": "#{params[:github_address]}",
|
||||
"gitee_address": "#{params[:gitee_address]}",
|
||||
"github_token": "#{params[:github_token]}",
|
||||
"gitee_token": "#{params[:gitee_token]}"
|
||||
}
|
||||
url = URI("#{domain}/cerobot/projects")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Post.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
request.body = JSON.dump(projects_body)
|
||||
|
||||
response = http.request(request)
|
||||
# Rails.logger.info "cerobot/projects response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def delete_project sync_id
|
||||
url = URI("#{domain}/cerobot/projects?id=#{sync_id}")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Delete.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
# Rails.logger.info "delete project response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def get_projects_jobs
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Get.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "cerobot/projects response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def create_projects_jobs(params = {})
|
||||
job_body = {
|
||||
"github_branch": "#{params[:github_branch]}",
|
||||
"gitee_branch": "#{params[:gitee_branch]}",
|
||||
"gitlink_branch": "#{params[:gitlink_branch]}",
|
||||
"type": "#{params[:type]}",
|
||||
"base": "#{params[:base]}"
|
||||
}
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Post.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
request.body = JSON.dump(job_body)
|
||||
|
||||
response = http.request(request)
|
||||
Rails.logger.info "cerobot/projects response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def delete_job job_id
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs?id=#{job_id}")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Delete.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "delete job response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def start_job job_id
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs/#{job_id}/start")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Put.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "start job response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def stop_job job_id
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs/#{job_id}/stop")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Put.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "stop job response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def set_commit job_id, commit_id
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs/#{job_id}/set_commit?commit=#{commit_id}")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Put.new(url)
|
||||
response = http.request(request)
|
||||
Rails.logger.info "set_commit job response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
res
|
||||
end
|
||||
|
||||
def job_logs job_id
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs/#{job_id}/logs")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Get.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "set_commit job response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
if res["code"].to_s == "200"
|
||||
res["data"]
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def pull_requests
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/pullrequests")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Get.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "pull_requests response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
if res["code"].to_s == "200"
|
||||
res["data"]
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def pull_requests_sync
|
||||
url = URI("#{domain}/cerobot/projects/#{@project_name}/pullrequests/sync")
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
request = Net::HTTP::Get.new(url)
|
||||
request["Content-Type"] = "application/json"
|
||||
response = http.request(request)
|
||||
Rails.logger.info "pull_requests_sync response.read_body======#{response.read_body}"
|
||||
res = JSON.parse(response.body)
|
||||
if res["code"].to_s == "200"
|
||||
res["data"]
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
def domain
|
||||
EduSetting.get("ob_repository_sync_api_domain") || "http://106.75.110.152:50087"
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user