mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 03:40:49 +08:00
init project
This commit is contained in:
80
app/services/git_service.rb
Normal file
80
app/services/git_service.rb
Normal file
@@ -0,0 +1,80 @@
|
||||
#coding=utf-8
|
||||
#
|
||||
# 文档在 https://www.showdoc.cc/127895880302646?page_id=1077512172693249
|
||||
#
|
||||
require 'faraday'
|
||||
|
||||
class GitService
|
||||
|
||||
class << self
|
||||
|
||||
['add_repository', 'fork_repository', 'delete_repository', 'file_tree', 'update_file', 'file_content', 'commits',
|
||||
'add_tree', 'delete_file', 'update_file_base64'].each do |method|
|
||||
define_method method do |params|
|
||||
post(method, params)
|
||||
end
|
||||
end
|
||||
|
||||
def make_new_multipar_file(full_file_path)
|
||||
Faraday::FilePart.new(full_file_path, 'application/octet-stream')
|
||||
end
|
||||
|
||||
#上传二进制文件
|
||||
#参数构造形式
|
||||
# {a: 'a', file: make_new_multipar_file('1.txt') }
|
||||
def update_file_binary(params)
|
||||
post_form('update_file', params)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def root_url
|
||||
new_git_address = EduSetting.get('git_address_domain')
|
||||
raise 'error: new_git_address not configuration' unless new_git_address.present?
|
||||
new_git_address
|
||||
end
|
||||
|
||||
def logger
|
||||
Rails.logger
|
||||
end
|
||||
|
||||
def post_form(action,params)
|
||||
conn = Faraday.new(root_url) do |f|
|
||||
f.request :multipart
|
||||
f.request :url_encoded
|
||||
f.adapter :net_http
|
||||
end
|
||||
|
||||
resp = conn.post("/api/#{action}", params)
|
||||
|
||||
body = resp.body
|
||||
parse_return(body)
|
||||
end
|
||||
|
||||
def post(action, params)
|
||||
uri = URI.parse("#{root_url}/api/#{action}")
|
||||
https = Net::HTTP.new(uri.host, uri.port)
|
||||
https.use_ssl = root_url.start_with?('https')
|
||||
req = Net::HTTP::Post.new(uri.path, initheader = {'Content-Type' => 'text/plain;charset=utf-8'})
|
||||
req.body = params.to_json
|
||||
res = https.request(req)
|
||||
body = res.body
|
||||
|
||||
parse_return(body)
|
||||
end
|
||||
|
||||
def parse_return(body)
|
||||
#logger.info("--uri_exec: .....res is #{body}")
|
||||
|
||||
content = JSON.parse(body)
|
||||
if content["code"] != 0
|
||||
logger.error("repository error: #{content['msg']}")
|
||||
raise("版本库异常")
|
||||
end
|
||||
#raise content["msg"] if content["code"] != 0
|
||||
|
||||
content["data"]
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user