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]}", "gitlink_address": "#{params[:gitlink_address]}", "gitlink_token": "#{params[:gitlink_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(source, pageNum = 1, pageSize = 100) url = URI("#{domain}/cerobot/projects/#{@project_name}/jobs?pageSize=#{pageSize}&pageNum=#{pageNum}&source=#{source}") 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[:job_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) res 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