新注册的用户请输入邮箱并保存,随后登录邮箱激活账号。后续可直接使用邮箱登录!

Commit 7a15b987 authored by kunkkawu's avatar kunkkawu

feat: add api testAPI --story=1016621

No related merge requests found
......@@ -34,10 +34,10 @@ DevServer:
# grpc 通信服务端证书私钥
GrpcServerConf:
CertFile: ./cert/registration-service/server.pem
KeyFile: ./cert/registration-service/server.key
# CertFile:
# KeyFile:
# CertFile: ./cert/registration-service/server.pem
# KeyFile: ./cert/registration-service/server.key
CertFile:
KeyFile:
# 接收、发送消息大小设置为 20 mb,根据服务实际场景调整
MaxRecvMsgSize: 20971520
......
Name: registration.rpc
ListenOn: 0.0.0.0:8080
Etcd:
Hosts:
- 127.0.0.1:2379
Key: registration.rpc
......@@ -25,6 +25,11 @@ const (
// ErrParams 【业务层错误码:21000 - 21999】
ErrParams RespCode = iota + 20000
ErrInvalidDBConnType
ErrInvalidMethod
ErrInvalidHeader
ErrInvalidParams
ErrHTTPRequest
ErrHTTPStatusCode
ErrEmptyCreator
ErrEmptyDBConnId
ErrDBConnectFailed
......@@ -60,6 +65,9 @@ const (
ErrAssetNotOnChain
ErrCallRPC
ErrCallContractResp
ErrAPIExist
ErrDataSetExist
ErrDataSetColumnExist
// ErrDB 【数据库层错误码范围:22000 - 22999】
ErrDB RespCode = iota + 10000
......@@ -72,6 +80,11 @@ var errMsg = map[RespCode]string{
ErrParams: "params error",
ErrInvalidDBConnType: "invalid db connection type",
ErrInvalidMethod: "invalid http method",
ErrInvalidHeader: "invalid http header",
ErrInvalidParams: "invalid http params",
ErrHTTPRequest: "http request error",
ErrHTTPStatusCode: "http response status code error",
ErrEmptyCreator: "creator is empty",
ErrEmptyDBConnId: "db conn id is empty",
ErrDBConnectFailed: "db connect failed",
......@@ -107,6 +120,9 @@ var errMsg = map[RespCode]string{
ErrAssetNotOnChain: "asset is not on chain",
ErrCallRPC: "call rpc error",
ErrCallContractResp: "call contract response error",
ErrAPIExist: "asset api already exist",
ErrDataSetExist: "asset data set already exist",
ErrDataSetColumnExist: "asset data set column already exist",
ErrDB: "db error",
ErrRecordNotFound: "record not found",
......
package event
import (
"context"
"time"
"chainmaker.org/chainmaker/common/v2/json"
_const "chainmaker.org/chainmaker/ida/contract-ida/const"
"chainmaker.org/chainmaker/ida/contract-ida/types"
"chainmaker.org/chainmaker/ida/registration-service/internal/model"
"chainmaker.org/chainmaker/ida/registration-service/internal/utils"
"chainmaker.org/chainmaker/pb-go/v2/common"
"context"
"gorm.io/gorm"
"time"
)
// AssetCreateEventHandler 创建资产事件处理器
......@@ -34,7 +35,7 @@ func (h *AssetCreateEventHandler) handleEvent(e *common.ContractEventInfo) error
// 遍历处理每一个资产
for _, ida := range idas {
// 创建资产
asset, err := h.prepareAssetInfo(tx, ida)
asset, err := h.prepareAssetInfo(tx, ida, 0)
if err != nil {
tx.Rollback()
return err
......@@ -81,7 +82,20 @@ func (h *AssetCreateEventHandler) handleEvent(e *common.ContractEventInfo) error
return nil
}
func (h *AssetCreateEventHandler) prepareAssetInfo(tx *gorm.DB, ida *types.IDAInfo) (*model.Asset, error) {
// prepareAssetInfo 准备资产信息
// 1. 准备资产扩展表信息,并入库处理
// 2. 准备资产主表信息
func (h *AssetCreateEventHandler) prepareAssetInfo(tx *gorm.DB, ida *types.IDAInfo, currentAssetId int32) (*model.Asset, error) {
// 更新的时候,需要先清除原始的扩展表信息
if currentAssetId > 0 {
if err := tx.Where("asset_id = ?", currentAssetId).Delete(&model.UpdateCycle{}).Error; err != nil {
return nil, err
}
if err := tx.Where("asset_id = ?", currentAssetId).Delete(&model.DataScale{}).Error; err != nil {
return nil, err
}
}
cycle := model.UpdateCycle{
UpdateType: int32(ida.Source.UpdateCycle.UpdateCycleType),
Cycle: int32(ida.Source.UpdateCycle.Cycle),
......@@ -100,10 +114,13 @@ func (h *AssetCreateEventHandler) prepareAssetInfo(tx *gorm.DB, ida *types.IDAIn
return nil, err
}
// 处理数据源连接
dbConn := h.prepareDBConn(ida)
if err := tx.Create(dbConn).Error; err != nil {
return nil, err
// 创建新资产的时候,处理数据源连接
// 更新资产的时候,因为数据源连接不可修改,因此不需要更新
if currentAssetId == 0 {
dbConn := h.prepareDBConn(ida)
if err := tx.Create(dbConn).Error; err != nil {
return nil, err
}
}
return &model.Asset{
......
......@@ -40,7 +40,7 @@ func (h *AssetUpdateEventHandler) handleEvent(e *common.ContractEventInfo) error
// 保存更新资产
assetCreator := &AssetCreateEventHandler{}
asset, err := assetCreator.prepareAssetInfo(tx, ida)
asset, err := assetCreator.prepareAssetInfo(tx, ida, int32(currentAsset.Id))
if err != nil {
tx.Rollback()
return err
......
package event
import (
"chainmaker.org/chainmaker/ida/common/event"
"chainmaker.org/chainmaker/ida/registration-service/internal/svc"
"chainmaker.org/chainmaker/pb-go/v2/common"
"context"
"errors"
"fmt"
"chainmaker.org/chainmaker/ida/common/event"
"chainmaker.org/chainmaker/ida/registration-service/internal/svc"
"chainmaker.org/chainmaker/pb-go/v2/common"
"github.com/zeromicro/go-zero/core/logx"
)
const (
chainId = "chain1" // 链id
groupName = "registration" // 注册中心
chainId = "chainmaker_testnet_pk" // 链id
groupName = "registration" // 注册中心
)
var (
......
package logic
import (
"context"
"crypto/tls"
"net/http"
"strings"
"chainmaker.org/chainmaker/common/v2/json"
"chainmaker.org/chainmaker/ida/registration-service/internal/code"
"chainmaker.org/chainmaker/ida/registration-service/registration"
"chainmaker.org/chainmaker/ida/registration-service/internal/svc"
"chainmaker.org/chainmaker/ida/registration-service/pb/registrationpb"
"github.com/zeromicro/go-zero/core/logx"
)
type APITestLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewAPITestLogic(ctx context.Context, svcCtx *svc.ServiceContext) *APITestLogic {
return &APITestLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// HeaderItem 头信息结构
type HeaderItem struct {
Key string
Value string
}
type ParamItem struct {
Key string
Type string
Desc string
}
// APITest
// 15. API连接测试
func (l *APITestLogic) APITest(in *registrationpb.APITestReq) (*registrationpb.APITestResp, error) {
// 1. 检查参数
if in.Url == "" || in.Method == "" {
// 记录日志
l.Logger.Errorf("requestId: [%s], invalid params error", in.RequestId)
return &registration.APITestResp{
Code: int32(code.ErrParams),
Msg: code.ErrParams.String(),
}, nil
}
method := strings.ToTitle(in.Method)
if method != "GET" && method != "POST" {
// 记录日志
l.Logger.Errorf("requestId: [%s], invalid http method error", in.RequestId)
return &registration.APITestResp{
Code: int32(code.ErrInvalidMethod),
Msg: code.ErrInvalidMethod.String(),
}, nil
}
// 创建请求对象
req, err := http.NewRequest(method, in.Url, nil)
if err != nil {
l.Logger.Errorf("requestId: [%s], http new request error", in.RequestId)
return &registration.APITestResp{
Code: int32(code.ErrHTTPRequest),
Msg: code.ErrHTTPRequest.String(),
}, nil
}
// 设置请求头
req.Header.Set("Content-Type", "application/json")
// 配置http client, 并设置 TLS 连接
client := &http.Client{}
if strings.HasPrefix(in.Url, "https") {
tlsConfig := &tls.Config{
InsecureSkipVerify: true,
}
client.Transport = &http.Transport{
TLSClientConfig: tlsConfig,
}
}
// 设置请求头部信息
if in.Header != "" {
headers := make([]HeaderItem, 0)
if err = json.Unmarshal([]byte(in.Header), &headers); err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], unmarshal header error", in.RequestId)
return &registration.APITestResp{
Code: int32(code.ErrInvalidHeader),
Msg: code.ErrInvalidHeader.String(),
}, nil
}
for _, item := range headers {
req.Header.Set(item.Key, item.Value)
}
}
// 发起请求
response, err := client.Do(req)
if err != nil {
l.Logger.Errorf("requestId: [%s], http request error: %s", in.RequestId, err.Error())
return &registration.APITestResp{
Code: int32(code.ErrHTTPRequest),
Msg: code.ErrHTTPRequest.String(),
}, nil
}
defer response.Body.Close()
// 读取响应内容
if response.StatusCode != 200 {
l.Logger.Errorf("requestId: [%s], http response status code error", in.RequestId)
return &registration.APITestResp{
Code: int32(code.ErrHTTPStatusCode),
Msg: code.ErrHTTPStatusCode.String(),
}, nil
}
return &registrationpb.APITestResp{
Code: int32(code.Success),
}, nil
}
......@@ -49,7 +49,7 @@ func (l *AssetInfoLogic) AssetInfo(in *registration.AssetInfoReq) (*registration
asset := &model.Asset{}
if err := DB.Where("id = ? and platform = ?", in.AssetId, model.PlatformLocal).First(asset).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error())
return &registration.AssetInfoResp{
Code: int32(code.ErrInvalidAssetId),
Msg: code.ErrInvalidAssetId.String(),
......@@ -60,7 +60,7 @@ func (l *AssetInfoLogic) AssetInfo(in *registration.AssetInfoReq) (*registration
productInfo, err := l.prepareProductInfo(asset, DB)
if err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error())
return &registration.AssetInfoResp{
Code: int32(code.ErrDB),
Msg: code.ErrDB.String(),
......
......@@ -38,8 +38,8 @@ func (l *GetPrivateAssetInfoByEnNameLogic) GetPrivateAssetInfoByEnName(in *regis
// 记录日志
l.Logger.Errorf("requestId: [%s], invalid asset en name, error", in.RequestId)
return &registration.GetPrivateAssetInfoByEnNameResp{
Code: int32(code.ErrInvalidAssetNumber),
Msg: code.ErrInvalidAssetNumber.String(),
Code: int32(code.ErrInvalidAssetEnName),
Msg: code.ErrInvalidAssetEnName.String(),
}, nil
}
......@@ -50,10 +50,10 @@ func (l *GetPrivateAssetInfoByEnNameLogic) GetPrivateAssetInfoByEnName(in *regis
asset := &model.Asset{}
if err := DB.Where("asset_en_name = ? ", in.AssetEnName).First(asset).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], check asset exist error: %s", in.RequestId, err.Error())
return &registration.GetPrivateAssetInfoByEnNameResp{
Code: int32(code.ErrInvalidAssetNumber),
Msg: code.ErrInvalidAssetNumber.String(),
Code: int32(code.ErrInvalidAssetEnName),
Msg: code.ErrInvalidAssetEnName.String(),
}, nil
}
......@@ -62,7 +62,7 @@ func (l *GetPrivateAssetInfoByEnNameLogic) GetPrivateAssetInfoByEnName(in *regis
productInfo, err := assetLogic.prepareProductInfo(asset, DB)
if err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error())
return &registration.GetPrivateAssetInfoByEnNameResp{
Code: int32(code.ErrDB),
Msg: code.ErrDB.String(),
......
......@@ -48,7 +48,7 @@ func (l *GetPrivateAssetInfoLogic) GetPrivateAssetInfo(in *registration.GetPriva
asset := &model.Asset{}
if err := DB.Where("id = ? ", in.AssetId).First(asset).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error())
return &registration.GetPrivateAssetInfoResp{
Code: int32(code.ErrInvalidAssetId),
Msg: code.ErrInvalidAssetId.String(),
......@@ -60,7 +60,7 @@ func (l *GetPrivateAssetInfoLogic) GetPrivateAssetInfo(in *registration.GetPriva
productInfo, err := assetLogic.prepareProductInfo(asset, DB)
if err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], prepare product info error: %s", in.RequestId, err.Error())
return &registration.GetPrivateAssetInfoResp{
Code: int32(code.ErrDB),
Msg: code.ErrDB.String(),
......
package logic
import (
"context"
"time"
"chainmaker.org/chainmaker/ida/registration-service/internal/code"
"chainmaker.org/chainmaker/ida/registration-service/internal/model"
"chainmaker.org/chainmaker/ida/registration-service/registration"
"context"
"time"
"chainmaker.org/chainmaker/ida/registration-service/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
......@@ -47,13 +48,23 @@ func (l *SaveAPILogic) SaveAPI(in *registration.SaveAPIReq) (*registration.SaveA
asset := &model.Asset{}
if err := DB.Where("id = ? ", in.AssetId).First(asset).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], check params error: %s", in.RequestId, err.Error())
return &registration.SaveAPIResp{
Code: int32(code.ErrInvalidAssetId),
Msg: code.ErrInvalidAssetId.String(),
}, nil
}
// 4. 检查API是否存在
if err := DB.Where("asset_id = ? ", in.AssetId).First(&model.AssetApi{}).Error; err == nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], asset api exist error: %s", in.RequestId, err.Error())
return &registration.SaveAPIResp{
Code: int32(code.ErrDataSetExist),
Msg: code.ErrDataSetExist.String(),
}, nil
}
assetApi := &model.AssetApi{
AssetId: in.AssetId,
Url: in.Url,
......@@ -65,7 +76,7 @@ func (l *SaveAPILogic) SaveAPI(in *registration.SaveAPIReq) (*registration.SaveA
}
if err := DB.Create(assetApi).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], create asset api error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], create asset api error: %s", in.RequestId, err.Error())
return &registration.SaveAPIResp{
Code: int32(code.ErrDB),
Msg: code.ErrDB.String(),
......
package logic
import (
"context"
"time"
"chainmaker.org/chainmaker/ida/registration-service/internal/code"
"chainmaker.org/chainmaker/ida/registration-service/internal/model"
"chainmaker.org/chainmaker/ida/registration-service/internal/svc"
"chainmaker.org/chainmaker/ida/registration-service/registration"
"context"
"gorm.io/gorm"
"time"
"github.com/zeromicro/go-zero/core/logx"
)
......@@ -78,12 +77,19 @@ func (l *SaveTableColumnsLogic) SaveTableColumns(in *registration.SaveTableColum
// 6. 查询数据集是否存在
var dataSetInfo = &model.AssetDataSet{}
if err := tx.Where("asset_id = ?", in.AssetId).First(dataSetInfo).Error; err == nil || err != gorm.ErrRecordNotFound {
dataSet.Id = dataSetInfo.Id
if err := tx.Where("asset_id = ?", in.AssetId).First(dataSetInfo).Error; err == nil {
// 事务回滚
tx.Rollback()
// 记录日志
l.Logger.Errorf("requestId: [%s], data set exist error: %s", in.RequestId, err)
return &registration.SaveTableColumnsResp{
Code: int32(code.ErrDataSetExist),
Msg: code.ErrDataSetExist.String(),
}, nil
}
// 7. 保存数据集, dataSet.Id 不存在时新增,存在时则更新
if err := tx.Save(dataSet).Error; err != nil {
if err := tx.Create(dataSet).Error; err != nil {
// 事务回滚
tx.Rollback()
// 记录日志
......@@ -94,7 +100,20 @@ func (l *SaveTableColumnsLogic) SaveTableColumns(in *registration.SaveTableColum
}, nil
}
// 8. 保存数据集字段信息
// 8. 检查数据集字段信息是否存在
if err := tx.Where("asset_id = ?", in.AssetId).First(&model.Asset{}).Error; err == nil {
dataSet.Id = dataSetInfo.Id
// 事务回滚
tx.Rollback()
// 记录日志
l.Logger.Errorf("requestId: [%s], data set column exist error: %s", in.RequestId, err)
return &registration.SaveTableColumnsResp{
Code: int32(code.ErrDataSetColumnExist),
Msg: code.ErrDataSetColumnExist.String(),
}, nil
}
// 9. 保存数据集字段信息
for _, column := range in.List {
dataSetColumn := &model.AssetDataSetColumn{
DataSetId: int32(dataSet.Id),
......@@ -124,7 +143,7 @@ func (l *SaveTableColumnsLogic) SaveTableColumns(in *registration.SaveTableColum
}
}
// 9. 事务提交
// 10. 事务提交
if err := tx.Commit().Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], tx commit error: %s", in.RequestId, err)
......
......@@ -66,7 +66,7 @@ func (l *UpdateAPILogic) UpdateAPI(in *registration.UpdateAPIReq) (*registration
if err = DB.Where("asset_id = ?", in.AssetId).Save(assetAPI).Error; err != nil {
// 记录日志
l.Logger.Errorf("requestId: [%s], update asset api error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], update asset api error: %s", in.RequestId, err.Error())
return &registration.UpdateAPIResp{
Code: int32(code.ErrDB),
Msg: code.ErrDB.String(),
......@@ -74,7 +74,7 @@ func (l *UpdateAPILogic) UpdateAPI(in *registration.UpdateAPIReq) (*registration
}
} else {
// 记录日志
l.Logger.Errorf("requestId: [%s], query api info error: %s", in.RequestId, err.Error)
l.Logger.Errorf("requestId: [%s], query api info error: %s", in.RequestId, err.Error())
return &registration.UpdateAPIResp{
Code: int32(code.ErrInvalidAssetId),
Msg: code.ErrInvalidAssetId.String(),
......
......@@ -178,6 +178,12 @@ func (s *RegistrationServer) UpdateAsset(ctx context.Context, in *registrationpb
return l.UpdateAsset(in)
}
// 15. API连接测试
func (s *RegistrationServer) APITest(ctx context.Context, in *registrationpb.APITestReq) (*registrationpb.APITestResp, error) {
l := logic.NewAPITestLogic(ctx, s.svcCtx)
return l.APITest(in)
}
// 1. 获取包含隐私信息的数据源连接信息接口
func (s *RegistrationServer) GetPrivateDBConnInfo(ctx context.Context, in *registrationpb.GetPrivateDBConnInfoReq) (*registrationpb.GetPrivateDBConnInfoResp, error) {
l := logic.NewGetPrivateDBConnInfoLogic(ctx, s.svcCtx)
......
......@@ -38,6 +38,11 @@ func (g *AssetNumberGenerator) GenerateAssetNumber(platformId string) string {
indexStr := fmt.Sprintf("%05d", index)
randChar := strconv.Itoa(rand.Intn(9000) + 1000)
identifier := platformId + date + indexStr + randChar
prefix := "TEST"
if platformId != "" {
prefix = platformId
}
identifier := prefix + date + indexStr + randChar
return identifier
}
This diff is collapsed.
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.21.12
// - protoc v4.25.3
// source: proto/registration.proto
// 表示当前 proto 文件属于 protobuf 包,它不是 go 文件的 package
......@@ -48,6 +48,7 @@ const (
Registration_AssetInfo_FullMethodName = "/proto.Registration/AssetInfo"
Registration_GetEnterpriseList_FullMethodName = "/proto.Registration/GetEnterpriseList"
Registration_UpdateAsset_FullMethodName = "/proto.Registration/UpdateAsset"
Registration_APITest_FullMethodName = "/proto.Registration/APITest"
Registration_GetPrivateDBConnInfo_FullMethodName = "/proto.Registration/GetPrivateDBConnInfo"
Registration_GetPrivateAssetList_FullMethodName = "/proto.Registration/GetPrivateAssetList"
Registration_GetPrivateAssetInfo_FullMethodName = "/proto.Registration/GetPrivateAssetInfo"
......@@ -114,6 +115,8 @@ type RegistrationClient interface {
GetEnterpriseList(ctx context.Context, in *GetEnterpriseListReq, opts ...grpc.CallOption) (*GetEnterpriseListResp, error)
// 14. 数据资产编辑接口
UpdateAsset(ctx context.Context, in *UpdateAssetReq, opts ...grpc.CallOption) (*UpdateAssetResp, error)
// 15. API连接测试
APITest(ctx context.Context, in *APITestReq, opts ...grpc.CallOption) (*APITestResp, error)
// 1. 获取包含隐私信息的数据源连接信息接口
GetPrivateDBConnInfo(ctx context.Context, in *GetPrivateDBConnInfoReq, opts ...grpc.CallOption) (*GetPrivateDBConnInfoResp, error)
// 2. 获取链上资产列表
......@@ -368,6 +371,15 @@ func (c *registrationClient) UpdateAsset(ctx context.Context, in *UpdateAssetReq
return out, nil
}
func (c *registrationClient) APITest(ctx context.Context, in *APITestReq, opts ...grpc.CallOption) (*APITestResp, error) {
out := new(APITestResp)
err := c.cc.Invoke(ctx, Registration_APITest_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *registrationClient) GetPrivateDBConnInfo(ctx context.Context, in *GetPrivateDBConnInfoReq, opts ...grpc.CallOption) (*GetPrivateDBConnInfoResp, error) {
out := new(GetPrivateDBConnInfoResp)
err := c.cc.Invoke(ctx, Registration_GetPrivateDBConnInfo_FullMethodName, in, out, opts...)
......@@ -472,6 +484,8 @@ type RegistrationServer interface {
GetEnterpriseList(context.Context, *GetEnterpriseListReq) (*GetEnterpriseListResp, error)
// 14. 数据资产编辑接口
UpdateAsset(context.Context, *UpdateAssetReq) (*UpdateAssetResp, error)
// 15. API连接测试
APITest(context.Context, *APITestReq) (*APITestResp, error)
// 1. 获取包含隐私信息的数据源连接信息接口
GetPrivateDBConnInfo(context.Context, *GetPrivateDBConnInfoReq) (*GetPrivateDBConnInfoResp, error)
// 2. 获取链上资产列表
......@@ -567,6 +581,9 @@ func (UnimplementedRegistrationServer) GetEnterpriseList(context.Context, *GetEn
func (UnimplementedRegistrationServer) UpdateAsset(context.Context, *UpdateAssetReq) (*UpdateAssetResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method UpdateAsset not implemented")
}
func (UnimplementedRegistrationServer) APITest(context.Context, *APITestReq) (*APITestResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method APITest not implemented")
}
func (UnimplementedRegistrationServer) GetPrivateDBConnInfo(context.Context, *GetPrivateDBConnInfoReq) (*GetPrivateDBConnInfoResp, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetPrivateDBConnInfo not implemented")
}
......@@ -1063,6 +1080,24 @@ func _Registration_UpdateAsset_Handler(srv interface{}, ctx context.Context, dec
return interceptor(ctx, in, info, handler)
}
func _Registration_APITest_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(APITestReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(RegistrationServer).APITest(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: Registration_APITest_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(RegistrationServer).APITest(ctx, req.(*APITestReq))
}
return interceptor(ctx, in, info, handler)
}
func _Registration_GetPrivateDBConnInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetPrivateDBConnInfoReq)
if err := dec(in); err != nil {
......@@ -1264,6 +1299,10 @@ var Registration_ServiceDesc = grpc.ServiceDesc{
MethodName: "UpdateAsset",
Handler: _Registration_UpdateAsset_Handler,
},
{
MethodName: "APITest",
Handler: _Registration_APITest_Handler,
},
{
MethodName: "GetPrivateDBConnInfo",
Handler: _Registration_GetPrivateDBConnInfo_Handler,
......
......@@ -656,6 +656,19 @@ message UpdateAssetResp{
string data = 3;
}
// 15. API连接测试
message APITestReq{
string request_id = 1;
string header = 3; // header
string url = 4; // API地址
string method = 5; // 请求方式: GET、POST等
}
message APITestResp{
int32 code = 1;
string msg = 2;
string data = 3;
}
// ============== 隐私计算 ============== //
......@@ -829,6 +842,8 @@ service Registration {
// 14. 数据资产编辑接口
rpc UpdateAsset(UpdateAssetReq) returns (UpdateAssetResp);
// 15. API连接测试
rpc APITest(APITestReq) returns (APITestResp);
// ============== 隐私计算 ============== //
......
......@@ -13,6 +13,8 @@ import (
)
type (
APITestReq = registrationpb.APITestReq
APITestResp = registrationpb.APITestResp
AssetBaseInfo = registrationpb.AssetBaseInfo
AssetDataInfo = registrationpb.AssetDataInfo
AssetFileInfo = registrationpb.AssetFileInfo
......@@ -163,6 +165,8 @@ type (
GetEnterpriseList(ctx context.Context, in *GetEnterpriseListReq, opts ...grpc.CallOption) (*GetEnterpriseListResp, error)
// 14. 数据资产编辑接口
UpdateAsset(ctx context.Context, in *UpdateAssetReq, opts ...grpc.CallOption) (*UpdateAssetResp, error)
// 15. API连接测试
APITest(ctx context.Context, in *APITestReq, opts ...grpc.CallOption) (*APITestResp, error)
// 1. 获取包含隐私信息的数据源连接信息接口
GetPrivateDBConnInfo(ctx context.Context, in *GetPrivateDBConnInfoReq, opts ...grpc.CallOption) (*GetPrivateDBConnInfoResp, error)
// 2. 获取链上资产列表
......@@ -342,6 +346,12 @@ func (m *defaultRegistration) UpdateAsset(ctx context.Context, in *UpdateAssetRe
return client.UpdateAsset(ctx, in, opts...)
}
// 15. API连接测试
func (m *defaultRegistration) APITest(ctx context.Context, in *APITestReq, opts ...grpc.CallOption) (*APITestResp, error) {
client := registrationpb.NewRegistrationClient(m.cli.Conn())
return client.APITest(ctx, in, opts...)
}
// 1. 获取包含隐私信息的数据源连接信息接口
func (m *defaultRegistration) GetPrivateDBConnInfo(ctx context.Context, in *GetPrivateDBConnInfoReq, opts ...grpc.CallOption) (*GetPrivateDBConnInfoResp, error) {
client := registrationpb.NewRegistrationClient(m.cli.Conn())
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment