1. add upload pull request info function
2. add query pull request latest info function 3. add query pull request all info function
This commit is contained in:
parent
01fb3ff337
commit
fc02643b26
|
|
@ -8,5 +8,5 @@ var (
|
|||
RepoCurBalanceDownOverFlow int64 = -1005 // 当前项目总 Token 数低于0
|
||||
UserBblanceNotEnough int64 = -1006 // 用户余额不足
|
||||
|
||||
ContractAddress string = "0xAAC410d4093Ad00dc6995f853864701b3b71845E"
|
||||
ContractAddress string = "0x904ed579402eD8BBb80ee7F0eb02e8226d78a70f"
|
||||
)
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
[{"constant":true,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"}],"name":"selectUserBalance","outputs":[{"name":"","type":"string[]"},{"name":"","type":"string[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"minusUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"commit_hash","type":"string"}],"name":"selectCommitInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"commit_hash","type":"string"},{"name":"repo_id","type":"string"},{"name":"author","type":"string"},{"name":"email","type":"string"},{"name":"time","type":"string"},{"name":"content","type":"string"},{"name":"commit_diff","type":"string"}],"name":"addCommitData","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"addUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"push_id","type":"string"}],"name":"selectPushInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"push_id","type":"string"},{"name":"push_number","type":"uint256"},{"name":"repo_id","type":"string"},{"name":"reponame","type":"string"},{"name":"ownername","type":"string"},{"name":"username","type":"string"},{"name":"branch","type":"string"},{"name":"commit_shas","type":"string"},{"name":"time","type":"string"}],"name":"addPushData","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"payer","type":"string"},{"name":"payee","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"transferUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"username","type":"string"}],"name":"selectUserAllBalance","outputs":[{"name":"","type":"string[]"},{"name":"","type":"string[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token_name","type":"string"},{"name":"owner","type":"string"},{"name":"total_supply","type":"uint256"},{"name":"cur_supply","type":"uint256"},{"name":"username","type":"string[]"},{"name":"balance","type":"uint256[]"}],"name":"createRepo","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token_name","type":"string"}],"name":"selectRepoBasicInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"int256"},{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
|
||||
[{"constant":true,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"}],"name":"selectUserBalance","outputs":[{"name":"","type":"string[]"},{"name":"","type":"string[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"minusUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"pull_request_id","type":"string"},{"name":"content","type":"string"}],"name":"addPullRequestData","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"commit_hash","type":"string"}],"name":"selectCommitInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pull_request_id","type":"string"}],"name":"selectPullRequestInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"commit_hash","type":"string"},{"name":"repo_id","type":"string"},{"name":"author","type":"string"},{"name":"email","type":"string"},{"name":"time","type":"string"},{"name":"content","type":"string"},{"name":"commit_diff","type":"string"}],"name":"addCommitData","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"username","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"addUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"push_id","type":"string"}],"name":"selectPushInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"push_id","type":"string"},{"name":"push_number","type":"uint256"},{"name":"repo_id","type":"string"},{"name":"reponame","type":"string"},{"name":"ownername","type":"string"},{"name":"username","type":"string"},{"name":"branch","type":"string"},{"name":"commit_shas","type":"string"},{"name":"time","type":"string"}],"name":"addPushData","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"payer","type":"string"},{"name":"payee","type":"string"},{"name":"token_name","type":"string"},{"name":"amount","type":"uint256"}],"name":"transferUserBalance","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"username","type":"string"}],"name":"selectUserAllBalance","outputs":[{"name":"","type":"string[]"},{"name":"","type":"string[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"token_name","type":"string"},{"name":"owner","type":"string"},{"name":"total_supply","type":"uint256"},{"name":"cur_supply","type":"uint256"},{"name":"username","type":"string[]"},{"name":"balance","type":"uint256[]"}],"name":"createRepo","outputs":[{"name":"","type":"int256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"token_name","type":"string"}],"name":"selectRepoBasicInfo","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"int256"},{"name":"","type":"int256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"pull_request_id","type":"string"}],"name":"selectPullRequestAllInfo","outputs":[{"name":"","type":"string[]"},{"name":"","type":"string[]"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"}]
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -9,6 +9,7 @@ contract OpenSource {
|
|||
string constant USER_TABLE = "user";
|
||||
string constant COMMIT_TABLE = "commit";
|
||||
string constant PUSH_TABLE = "push";
|
||||
string constant PULL_REQUEST_TABLE = "pull_request";
|
||||
|
||||
constructor() public {
|
||||
tableFactory = TableFactory(0x1001); //The fixed address is 0x1001 for TableFactory
|
||||
|
|
@ -17,6 +18,7 @@ contract OpenSource {
|
|||
tableFactory.createTable(USER_TABLE, "user", "token_name,balance");
|
||||
tableFactory.createTable(COMMIT_TABLE, "commit_hash", "repo_id,author,email,time,content,commit_diff");
|
||||
tableFactory.createTable(PUSH_TABLE, "push_id", "push_number,repo_id,reponame,ownername,username,branch,commit_shas,time");
|
||||
tableFactory.createTable(PULL_REQUEST_TABLE, "pull_request_id", "content");
|
||||
}
|
||||
|
||||
// create repo
|
||||
|
|
@ -411,4 +413,56 @@ contract OpenSource {
|
|||
return (entry.getString("push_id"), entry.getUInt("push_number"), entry.getString("repo_id"), entry.getString("reponame"), entry.getString("ownername"),
|
||||
entry.getString("username"), entry.getString("branch"), entry.getString("commit_shas"), entry.getString("time"));
|
||||
}
|
||||
|
||||
// add pull request info
|
||||
function addPullRequestData(string memory pull_request_id, string memory content)
|
||||
public
|
||||
returns (int256)
|
||||
{
|
||||
Table pull_request_table = tableFactory.openTable(PULL_REQUEST_TABLE);
|
||||
Entry pull_request_entry = pull_request_table.newEntry();
|
||||
pull_request_entry.set("pull_request_id", pull_request_id);
|
||||
pull_request_entry.set("content", content);
|
||||
|
||||
int256 count = pull_request_table.insert(pull_request_id, pull_request_entry);
|
||||
return count;
|
||||
}
|
||||
|
||||
// select pull request latest info
|
||||
function selectPullRequestInfo(string memory pull_request_id)
|
||||
public
|
||||
view
|
||||
returns (string memory, string memory)
|
||||
{
|
||||
Table pull_request_table = tableFactory.openTable(PULL_REQUEST_TABLE);
|
||||
Condition condition = pull_request_table.newCondition();
|
||||
Entries entries = pull_request_table.select(pull_request_id, condition);
|
||||
if (entries.size() == 0) {
|
||||
return ("", "");
|
||||
}
|
||||
Entry entry = entries.get(entries.size()-1);
|
||||
return (entry.getString("pull_request_id"), entry.getString("content"));
|
||||
}
|
||||
|
||||
// select pull request All info
|
||||
function selectPullRequestAllInfo(string memory pull_request_id)
|
||||
public
|
||||
view
|
||||
returns (string[] memory, string[] memory)
|
||||
{
|
||||
Table pull_request_table = tableFactory.openTable(PULL_REQUEST_TABLE);
|
||||
Condition condition = pull_request_table.newCondition();
|
||||
Entries entries = pull_request_table.select(pull_request_id, condition);
|
||||
string[] memory pull_request_id_list = new string[](uint256(entries.size()));
|
||||
string[] memory content_list = new string[](uint256(entries.size()));
|
||||
|
||||
for (int256 i = 0; i < entries.size(); ++i) {
|
||||
Entry entry = entries.get(i);
|
||||
|
||||
pull_request_id_list[uint256(i)] = entry.getString("pull_request_id");
|
||||
content_list[uint256(i)] = entry.getString("content");
|
||||
}
|
||||
|
||||
return (pull_request_id_list, content_list);
|
||||
}
|
||||
}
|
||||
|
|
@ -28,6 +28,20 @@ type FiscoBcos struct {
|
|||
CommitShas []string `json:"commit_shas"`
|
||||
// repo_id, username, time
|
||||
|
||||
// pull request 相关
|
||||
PullRequestID string `json:"pull_request_id"`
|
||||
PullRequestNumber uint64 `json:"pull_request_number"`
|
||||
Action string `json:"action"`
|
||||
Title string `json:"title"`
|
||||
SourceBranch string `json:"source_branch"`
|
||||
TargetRepoID string `json:"target_repo_id"`
|
||||
TargetBranch string `json:"target_branch"`
|
||||
Reviewers []string `json:"reviewers"`
|
||||
MergeUser string `json:"merge_user"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_ad"`
|
||||
// repo_id, reponame, ownername, username, content, commit_shas
|
||||
|
||||
// user 相关
|
||||
Username string `json:"username"` // 用户名
|
||||
Amount uint64 `json:"amount"` // 转账金额
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
package structs
|
||||
|
||||
type UploadPullReuqestOption struct {
|
||||
PullRequestID string `json:"pull_request_id"`
|
||||
PullRequestNumber uint64 `json:"pull_request_number"`
|
||||
Action string `json:"action"`
|
||||
Title string `json:"title"`
|
||||
SourceBranch string `json:"source_branch"`
|
||||
TargetRepoID string `json:"target_repo_id"`
|
||||
TargetBranch string `json:"target_branch"`
|
||||
Reviewers []string `json:"reviewers"`
|
||||
MergeUser string `json:"merge_user"`
|
||||
CreatedAt string `json:"created_at"`
|
||||
UpdatedAt string `json:"updated_ad"`
|
||||
RepoID string `json:"repo_id"`
|
||||
Reponame string `json:"reponame"`
|
||||
Ownername string `json:"ownername"`
|
||||
Username string `json:"username"`
|
||||
Content string `json:"message"`
|
||||
CommitShas []string `json:"commit_shas"`
|
||||
}
|
||||
|
||||
type ResponsePullRequest struct {
|
||||
UploadPullReuqestOption
|
||||
Response
|
||||
}
|
||||
|
||||
type ResponsePullRequestArr struct {
|
||||
UploadPullReuqestOptionArr
|
||||
Response
|
||||
}
|
||||
|
||||
type UploadPullReuqestOptionArr []UploadPullReuqestOption
|
||||
|
|
@ -16,10 +16,12 @@ var (
|
|||
ResRepoCurBalanceUpOverFlow = &Response{Status: 4, Message: "repo current balance up overflow when user adds amount!"} // username balance overflow when create repo!
|
||||
ResRepoCurBalanceDownOverFlow = &Response{Status: 6, Message: "repo current balance less than 0 when user adds amount!"}
|
||||
|
||||
ResCommitUploadSucc = &Response{Status: 0, Message: "commit upload successfully!"}
|
||||
ResCommitUploadUnsucc = &Response{Status: 7, Message: "commit upload unsuccessfully!"}
|
||||
ResPushUploadSucc = &Response{Status: 0, Message: "push upload successfully!"}
|
||||
ResPushUploadUnsucc = &Response{Status: 7, Message: "push upload unsuccessfully!"}
|
||||
ResCommitUploadSucc = &Response{Status: 0, Message: "commit upload successfully!"}
|
||||
ResCommitUploadUnsucc = &Response{Status: 7, Message: "commit upload unsuccessfully!"}
|
||||
ResPushUploadSucc = &Response{Status: 0, Message: "push upload successfully!"}
|
||||
ResPushUploadUnsucc = &Response{Status: 8, Message: "push upload unsuccessfully!"}
|
||||
ResPullRequestUploadSucc = &Response{Status: 0, Message: "pull request upload successfully!"}
|
||||
ResPullRequestUploadUnsucc = &Response{Status: 9, Message: "pull request upload unsuccessfully!"}
|
||||
|
||||
ResUserNotExisted = &Response{Status: 100, Message: "user not exist!"}
|
||||
ResUserAddAmountSucc = &Response{Status: 0, Message: "user adds amount successfully!"}
|
||||
|
|
|
|||
|
|
@ -56,6 +56,32 @@ func HandleAllRoutes(ctx *macaron.Context, opt api.FiscoBcos, logger *log.Logger
|
|||
logger)
|
||||
case "query push info":
|
||||
repo.SelectPushInfo(ctx, opt.PushID, logger)
|
||||
case "upload pull request info":
|
||||
repo.UploadPullRequestInfo(ctx,
|
||||
api.UploadPullReuqestOption{
|
||||
PullRequestID: opt.PullRequestID,
|
||||
PullRequestNumber: opt.PullRequestNumber,
|
||||
RepoID: opt.RepoID,
|
||||
Reponame: opt.Reponame,
|
||||
Ownername: opt.Ownername,
|
||||
Username: opt.Username,
|
||||
Action: opt.Action,
|
||||
Title: opt.Title,
|
||||
Content: opt.Content,
|
||||
SourceBranch: opt.SourceBranch,
|
||||
TargetRepoID: opt.TargetRepoID,
|
||||
TargetBranch: opt.TargetBranch,
|
||||
Reviewers: opt.Reviewers,
|
||||
CommitShas: opt.CommitShas,
|
||||
MergeUser: opt.MergeUser,
|
||||
CreatedAt: opt.CreatedAt,
|
||||
UpdatedAt: opt.UpdatedAt,
|
||||
},
|
||||
logger)
|
||||
case "query pull request latest info":
|
||||
repo.SelectPullRequestLatestInfo(ctx, opt.PullRequestID, logger)
|
||||
case "query pull request all info":
|
||||
repo.SelectPullRequestAllInfo(ctx, opt.PullRequestID, logger)
|
||||
case "query user balance of single repo":
|
||||
user.SelectUserBalance(ctx, opt.Username, opt.TokenName, logger)
|
||||
case "query user balance of all repos":
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package repo
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
|
|
@ -131,3 +132,114 @@ func SelectPushInfo(ctx *macaron.Context, pushID string, logger *log.Logger) {
|
|||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 查询 pull request 最新数据
|
||||
func SelectPullRequestLatestInfo(ctx *macaron.Context, pullRequestID string, logger *log.Logger) {
|
||||
if pullRequestID == "" {
|
||||
ctx.JSON(http.StatusOK, api.StringEmpty)
|
||||
return
|
||||
}
|
||||
|
||||
configs, err := conf.ParseConfigFile("config.toml")
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
config := &configs[0]
|
||||
|
||||
client, err := client.Dial(config)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
// load the contract
|
||||
contractAddress := common.HexToAddress(contract.ContractAddress)
|
||||
instance, err := opensource.NewOpenSource(contractAddress, client)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
openSourceSession := &opensource.OpenSourceSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
|
||||
|
||||
_, strJSON, err := openSourceSession.SelectPullRequestInfo(pullRequestID) // call Insert API
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("pullRequestID: %v \n", strJSON)
|
||||
|
||||
var uploadPullRequestOption api.UploadPullReuqestOption
|
||||
err = json.Unmarshal([]byte(strJSON), &uploadPullRequestOption)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, &structs.ResponsePullRequest{
|
||||
Response: structs.Response{
|
||||
Status: 0,
|
||||
Message: "query success!",
|
||||
},
|
||||
UploadPullReuqestOption: uploadPullRequestOption,
|
||||
})
|
||||
}
|
||||
|
||||
// 查询 pull request 所有数据
|
||||
func SelectPullRequestAllInfo(ctx *macaron.Context, pullRequestID string, logger *log.Logger) {
|
||||
if pullRequestID == "" {
|
||||
ctx.JSON(http.StatusOK, api.StringEmpty)
|
||||
return
|
||||
}
|
||||
|
||||
configs, err := conf.ParseConfigFile("config.toml")
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
config := &configs[0]
|
||||
|
||||
client, err := client.Dial(config)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
// load the contract
|
||||
contractAddress := common.HexToAddress(contract.ContractAddress)
|
||||
instance, err := opensource.NewOpenSource(contractAddress, client)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
openSourceSession := &opensource.OpenSourceSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
|
||||
|
||||
_, strJSONArr, err := openSourceSession.SelectPullRequestAllInfo(pullRequestID) // call Insert API
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("pullRequestID: %v \n", strJSONArr)
|
||||
|
||||
var uploadPullRequestOption api.UploadPullReuqestOption
|
||||
var uploadPullReuqestOptionArr api.UploadPullReuqestOptionArr
|
||||
for i := 0; i < len(strJSONArr); i++ {
|
||||
err = json.Unmarshal([]byte(strJSONArr[i]), &uploadPullRequestOption)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
uploadPullReuqestOptionArr = append(uploadPullReuqestOptionArr, uploadPullRequestOption)
|
||||
}
|
||||
ctx.JSON(http.StatusOK, &structs.ResponsePullRequestArr{
|
||||
Response: structs.Response{
|
||||
Status: 0,
|
||||
Message: "query success!",
|
||||
},
|
||||
UploadPullReuqestOptionArr: uploadPullReuqestOptionArr,
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package repo
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"math/big"
|
||||
"net/http"
|
||||
|
|
@ -124,3 +125,54 @@ func UploadPushInfo(ctx *macaron.Context, opt api.UploadPushOption, logger *log.
|
|||
}
|
||||
ctx.JSON(http.StatusOK, structs.ResPushUploadUnsucc)
|
||||
}
|
||||
|
||||
// 上传 pull request 数据
|
||||
func UploadPullRequestInfo(ctx *macaron.Context, opt api.UploadPullReuqestOption, logger *log.Logger) {
|
||||
pullRequestID := opt.PullRequestID
|
||||
bytesJson, err := json.Marshal(opt)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
configs, err := conf.ParseConfigFile("config.toml")
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
config := &configs[0]
|
||||
|
||||
client, err := client.Dial(config)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
// load the contract
|
||||
contractAddress := common.HexToAddress(contract.ContractAddress)
|
||||
instance, err := opensource.NewOpenSource(contractAddress, client)
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
|
||||
openSourceSession := &opensource.OpenSourceSession{Contract: instance, CallOpts: *client.GetCallOpts(), TransactOpts: *client.GetTransactOpts()}
|
||||
|
||||
tx, receipt, err := openSourceSession.AddPullRequestData(pullRequestID, string(bytesJson)) // call Insert API
|
||||
if err != nil {
|
||||
ctx.JSON(http.StatusOK, api.UnknownErr(err))
|
||||
return
|
||||
}
|
||||
logger.Printf("tx sent: %s\n", tx.Hash().Hex())
|
||||
// insertedLines, err := strconv.Atoi(receipt.Output[2:])
|
||||
code, err := parseOutput(opensource.OpenSourceABI, "addPullRequestData", receipt)
|
||||
if err != nil {
|
||||
logger.Panic("error when transfer string to int: ", err)
|
||||
}
|
||||
if code.Int64() > 0 {
|
||||
logger.Printf("inserted lines: %v\n", code)
|
||||
ctx.JSON(http.StatusOK, structs.ResPullRequestUploadSucc)
|
||||
return
|
||||
}
|
||||
ctx.JSON(http.StatusOK, structs.ResPullRequestUploadUnsucc)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue