modify common function for update blockchain
This commit is contained in:
parent
43374c8019
commit
6aef8e19c7
|
@ -896,6 +896,251 @@ class ApplicationController < ActionController::Base
|
||||||
}.to_json
|
}.to_json
|
||||||
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||||
return success_blockchain
|
return success_blockchain
|
||||||
|
|
||||||
|
elsif activity_type == "issue_comment_create"
|
||||||
|
issue_comment_id = model['id']
|
||||||
|
issue_id = model['journalized_id']
|
||||||
|
parent_id = model['parent_id'].nil? ? "" : model['parent_id']
|
||||||
|
|
||||||
|
issue = Issue.find(issue_id)
|
||||||
|
issue_classify = issue['issue_classify'] # issue或pull_request
|
||||||
|
project_id = issue['project_id']
|
||||||
|
project = Project.find(project_id)
|
||||||
|
|
||||||
|
if project['use_blockchain'] == 0
|
||||||
|
# 无需执行上链操作
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
reponame = project['name']
|
||||||
|
owner_id = project['user_id']
|
||||||
|
owner = User.find(owner_id)
|
||||||
|
ownername = owner['login']
|
||||||
|
|
||||||
|
author_id = model['user_id']
|
||||||
|
author = User.find(author_id)
|
||||||
|
username = author['login']
|
||||||
|
|
||||||
|
action = 'created'
|
||||||
|
|
||||||
|
content = model['notes']
|
||||||
|
created_at = model['created_on']
|
||||||
|
|
||||||
|
if issue_classify == "issue"
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB1",
|
||||||
|
"operation": "putIssueComment",
|
||||||
|
"arg": {
|
||||||
|
"issue_comment_id": issue_comment_id,
|
||||||
|
"issue_id": issue_id,
|
||||||
|
"parent_id": parent_id,
|
||||||
|
"reponame": reponame,
|
||||||
|
"ownername": ownername,
|
||||||
|
"username": username,
|
||||||
|
"action": action,
|
||||||
|
"content": content,
|
||||||
|
"created_at": created_at,
|
||||||
|
}.to_json
|
||||||
|
}.to_json
|
||||||
|
elsif issue_classify == "pull_request"
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB0",
|
||||||
|
"operation": "putPullRequestComment",
|
||||||
|
"arg": {
|
||||||
|
"pull_request_comment_id": issue_comment_id,
|
||||||
|
"pull_request_id": issue_id,
|
||||||
|
"parent_id": parent_id,
|
||||||
|
"reponame": reponame,
|
||||||
|
"ownername": ownername,
|
||||||
|
"username": username,
|
||||||
|
"action": action,
|
||||||
|
"content": content,
|
||||||
|
"created_at": created_at,
|
||||||
|
}.to_json
|
||||||
|
}.to_json
|
||||||
|
end
|
||||||
|
|
||||||
|
# 调用区块链接口
|
||||||
|
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||||
|
return success_blockchain
|
||||||
|
elsif activity_type == "pull_request_create"
|
||||||
|
# 调用区块链接口
|
||||||
|
project_id = model['project_id']
|
||||||
|
project = Project.find(project_id)
|
||||||
|
if project['use_blockchain'] == 0
|
||||||
|
# 无需执行上链操作
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
pull_request_id = model['id']
|
||||||
|
reponame = project['name']
|
||||||
|
owner_id = project['user_id']
|
||||||
|
owner = User.find(owner_id)
|
||||||
|
ownername = owner['login']
|
||||||
|
|
||||||
|
action = 'opened'
|
||||||
|
|
||||||
|
title = model['title']
|
||||||
|
content = model['body']
|
||||||
|
|
||||||
|
source_branch = model['head']
|
||||||
|
source_repo_id = model['fork_project_id'].nil? ? project_id : model['fork_project_id']
|
||||||
|
|
||||||
|
target_branch = model['base']
|
||||||
|
target_repo_id = project_id
|
||||||
|
|
||||||
|
author_id = model['user_id']
|
||||||
|
author = User.find(author_id)
|
||||||
|
username = author['login']
|
||||||
|
|
||||||
|
created_at = model['created_at']
|
||||||
|
updated_at = model['updated_at']
|
||||||
|
|
||||||
|
# 查询pull request对应的commit信息
|
||||||
|
commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid'])
|
||||||
|
commit_shas = []
|
||||||
|
commits.each do |c|
|
||||||
|
commit_shas << c["Sha"]
|
||||||
|
end
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB0",
|
||||||
|
"operation": "putPullRequest",
|
||||||
|
"arg": {
|
||||||
|
"pull_request_id": pull_request_id,
|
||||||
|
"repo_id": project_id,
|
||||||
|
"ownername": ownername,
|
||||||
|
"reponame": reponame,
|
||||||
|
"username": username,
|
||||||
|
"action": action,
|
||||||
|
"title": title,
|
||||||
|
"content": content,
|
||||||
|
"source_branch": source_branch,
|
||||||
|
"target_branch": target_branch,
|
||||||
|
"commit_shas": commit_shas,
|
||||||
|
"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
|
||||||
|
elsif activity_type == "pull_request_merge"
|
||||||
|
|
||||||
|
# 调用区块链接口
|
||||||
|
project_id = model['project_id']
|
||||||
|
project = Project.find(project_id)
|
||||||
|
if project['use_blockchain'] == 0
|
||||||
|
# 无需执行上链操作
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
pull_request_id = model['id']
|
||||||
|
reponame = project['name']
|
||||||
|
owner_id = project['user_id']
|
||||||
|
owner = User.find(owner_id)
|
||||||
|
ownername = owner['login']
|
||||||
|
|
||||||
|
action = 'merged'
|
||||||
|
|
||||||
|
# 查询pull request对应的commit信息
|
||||||
|
commits = Gitea::PullRequest::CommitsService.call(ownername, reponame, model['gpid'])
|
||||||
|
commit_shas = []
|
||||||
|
commits.each do |c|
|
||||||
|
commit_shas << c["Sha"]
|
||||||
|
end
|
||||||
|
|
||||||
|
# 将pull request相关信息写入链上
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB0",
|
||||||
|
"operation": "putPullRequest",
|
||||||
|
"arg": {
|
||||||
|
"pull_request_id": pull_request_id,
|
||||||
|
"repo_id": project_id,
|
||||||
|
"ownername": ownername,
|
||||||
|
"reponame": reponame,
|
||||||
|
"username": username,
|
||||||
|
"action": action,
|
||||||
|
"title": title,
|
||||||
|
"content": content,
|
||||||
|
"source_branch": source_branch,
|
||||||
|
"target_branch": target_branch,
|
||||||
|
"commit_shas": commit_shas,
|
||||||
|
"created_at": created_at,
|
||||||
|
"updated_at": updated_at
|
||||||
|
}.to_json
|
||||||
|
}.to_json
|
||||||
|
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||||
|
|
||||||
|
|
||||||
|
# 将commit相关信息写入链上
|
||||||
|
commit_shas.each do |commit_sha|
|
||||||
|
commit_diff = Gitea::Commit::DiffService.call(ownername, reponame, commit_sha)
|
||||||
|
commit = Gitea::Commit::InfoService.call(ownername, reponame, commit_sha)
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB1",
|
||||||
|
"operation": "putCommit",
|
||||||
|
"arg": {
|
||||||
|
"commit_hash": commit_sha,
|
||||||
|
"repo_id": project_id,
|
||||||
|
"author": commit['author']['login'],
|
||||||
|
"author_email": commit['author']['email'],
|
||||||
|
"committer": commit['committer']['login'],
|
||||||
|
"committer_email": commit['committer']['email'],
|
||||||
|
"author_time": commit['commit']['author']['date'],
|
||||||
|
"committer_time": commit['commit']['committer']['date'],
|
||||||
|
"message": commit['commit']['message'],
|
||||||
|
"diff": commit_diff['Files']
|
||||||
|
}.to_json
|
||||||
|
}.to_json
|
||||||
|
success_blockchain_commit = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||||
|
success_blockchain = success_blockchain & success_blockchain_commit
|
||||||
|
end
|
||||||
|
return success_blockchain
|
||||||
|
|
||||||
|
elsif activity_type == "pull_request_refuse"
|
||||||
|
|
||||||
|
# 调用区块链接口
|
||||||
|
project_id = model['project_id']
|
||||||
|
project = Project.find(project_id)
|
||||||
|
if project['use_blockchain'] == 0
|
||||||
|
# 无需执行上链操作
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
pull_request_id = model['id']
|
||||||
|
reponame = project['name']
|
||||||
|
owner_id = project['user_id']
|
||||||
|
owner = User.find(owner_id)
|
||||||
|
ownername = owner['login']
|
||||||
|
|
||||||
|
action = 'refused'
|
||||||
|
|
||||||
|
# 将pull request相关信息写入链上
|
||||||
|
param = {
|
||||||
|
"action": "executeContract",
|
||||||
|
"contractID": "RepositoryDB0",
|
||||||
|
"operation": "putPullRequest",
|
||||||
|
"arg": {
|
||||||
|
"pull_request_id": pull_request_id,
|
||||||
|
"repo_id": project_id,
|
||||||
|
"ownername": ownername,
|
||||||
|
"reponame": reponame,
|
||||||
|
"username": username,
|
||||||
|
"action": action,
|
||||||
|
"title": title,
|
||||||
|
"content": content,
|
||||||
|
"source_branch": source_branch,
|
||||||
|
"target_branch": target_branch,
|
||||||
|
"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
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue