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
|
||||
success_blockchain = invoke_blockchain_api(Blockchain.blockchain_config[:api_url], param)
|
||||
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
|
||||
|
||||
|
|
Loading…
Reference in New Issue