add common function for blockchain operation
This commit is contained in:
parent
2395d4ef5e
commit
f230c0d640
|
@ -344,7 +344,7 @@ class ApplicationController < ActionController::Base
|
|||
User.current = User.find 8686
|
||||
elsif params[:debug] == 'admin'
|
||||
logger.info "@@@@@@@@@@@@@@@@@@@@@@ debug mode....."
|
||||
user = User.find 36480
|
||||
user = User.find 35
|
||||
User.current = user
|
||||
cookies.signed[:user_id] = user.id
|
||||
end
|
||||
|
@ -814,4 +814,89 @@ class ApplicationController < ActionController::Base
|
|||
HotSearchKeyword.add(keyword)
|
||||
end
|
||||
|
||||
|
||||
# author: zxh
|
||||
# blockchain存证api
|
||||
def invoke_blockchain_api(uri, params)
|
||||
begin
|
||||
uri = URI.parse(URI.encode(uri.strip))
|
||||
res = Net::HTTP.start(uri.host, uri.port) do |http|
|
||||
req = Net::HTTP::Post.new(uri)
|
||||
req['Content-Type'] = 'application/json'
|
||||
req.body = params
|
||||
http.request(req)
|
||||
end
|
||||
if res.code.to_i != 200
|
||||
puts '区块链接口请求失败.'
|
||||
return false
|
||||
else
|
||||
res_body = JSON.parse(res.body)
|
||||
if res_body.has_key?("data") && JSON.parse(res_body["data"]).has_key?("status") && JSON.parse(res_body["data"])['status'] == "Success"
|
||||
else
|
||||
puts '区块链接口请求出错.'
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
rescue Exception => e
|
||||
puts '区块链接口请求失败.'
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
# author: zxh
|
||||
# blockchain相关项目活动调用函数
|
||||
# return true: 表示上链操作成功; return false: 表示上链操作失败
|
||||
def push_activity_2_blockchain(activity_type, model)
|
||||
if activity_type == "issue_create"
|
||||
|
||||
project_id = model['project_id']
|
||||
project = Project.find(project_id)
|
||||
if project['use_blockchain'] == 0
|
||||
# 无需执行上链操作
|
||||
return true
|
||||
end
|
||||
|
||||
id = model['id']
|
||||
|
||||
owner_id = project['user_id']
|
||||
owner = User.find(owner_id)
|
||||
ownername = owner['login']
|
||||
reponame = project['name']
|
||||
|
||||
author_id = project['user_id']
|
||||
author = User.find(author_id)
|
||||
username = author['login']
|
||||
|
||||
action = 'opened'
|
||||
|
||||
title = model['subject']
|
||||
content = model['description']
|
||||
created_at = model['created_on']
|
||||
updated_at = model['updated_on']
|
||||
|
||||
# 调用区块链接口
|
||||
param = {
|
||||
"action": "executeContract",
|
||||
"contractID": "RepositoryDB1",
|
||||
"operation": "putIssue",
|
||||
"arg": {
|
||||
"issue_id": id,
|
||||
"repo_id": project_id,
|
||||
"reponame": reponame,
|
||||
"ownername": ownername,
|
||||
"username": username,
|
||||
"action": action,
|
||||
"title": title,
|
||||
"content": content,
|
||||
"created_at": created_at,
|
||||
"updated_at": updated_at
|
||||
}.to_json
|
||||
}.to_json
|
||||
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||
return success_blockchain
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue