imgsearch-20200320/main.tea (505 lines of code) (raw):
/**
*
*/
import Util;
import OSS;
import OpenPlatform;
import OSSUtil;
import FileForm;
import OpenApi;
import OpenApiUtil;
import EndpointUtil;
extends OpenApi;
init(config: OpenApi.Config){
super(config);
@endpointRule = 'regional';
checkConfig(config);
@endpoint = getEndpoint('imgsearch', @regionId, @endpointRule, @network, @suffix, @endpointMap, @endpoint);
}
function getEndpoint(productId: string, regionId: string, endpointRule: string, network: string, suffix: string, endpointMap: map[string]string, endpoint: string) throws: string{
if (!Util.empty(endpoint)) {
return endpoint;
}
if (!Util.isUnset(endpointMap) && !Util.empty(endpointMap[regionId])) {
return endpointMap[regionId];
}
return EndpointUtil.getEndpointRules(productId, regionId, endpointRule, network, suffix);
}
model AddImageRequest {
dbName?: string(name='DbName', example='default'),
entityId?: string(name='EntityId', example='001'),
extraData?: string(name='ExtraData'),
imageUrl?: string(name='ImageUrl', example='https://viapi-test.oss-cn-shanghai.aliyuncs.com/test/imgsearch/xxxx.png'),
}
model AddImageAdvanceRequest {
dbName?: string(name='DbName', example='default'),
entityId?: string(name='EntityId', example='001'),
extraData?: string(name='ExtraData'),
imageUrlObject?: readable(name='ImageUrl', example='https://viapi-test.oss-cn-shanghai.aliyuncs.com/test/imgsearch/xxxx.png'),
}
model AddImageResponseBody = {
data?: {
dataId?: string(name='DataId', example='1585903814940000'),
}(name='Data'),
requestId?: string(name='RequestId', example='4DC6BB62-06D1-4242-939A-4AC500662E33'),
}
model AddImageResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: AddImageResponseBody(name='body'),
}
async function addImageWithOptions(request: AddImageRequest, runtime: Util.RuntimeOptions): AddImageResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.dbName)) {
body['DbName'] = request.dbName;
}
if (!Util.isUnset(request.entityId)) {
body['EntityId'] = request.entityId;
}
if (!Util.isUnset(request.extraData)) {
body['ExtraData'] = request.extraData;
}
if (!Util.isUnset(request.imageUrl)) {
body['ImageUrl'] = request.imageUrl;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'AddImage',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function addImage(request: AddImageRequest): AddImageResponse {
var runtime = new Util.RuntimeOptions{};
return addImageWithOptions(request, runtime);
}
async function addImageAdvance(request: AddImageAdvanceRequest, runtime: Util.RuntimeOptions): AddImageResponse {
// Step 0: init client
var accessKeyId = @credential.getAccessKeyId();
var accessKeySecret = @credential.getAccessKeySecret();
var securityToken = @credential.getSecurityToken();
var credentialType = @credential.getType();
var openPlatformEndpoint = @openPlatformEndpoint;
if(Util.isUnset(openPlatformEndpoint)) {
openPlatformEndpoint ='openplatform.aliyuncs.com';
}
if(Util.isUnset(credentialType)) {
credentialType ='access_key';
}
var authConfig = new OpenApi.Config{
accessKeyId = accessKeyId,
accessKeySecret = accessKeySecret,
securityToken = securityToken,
type = credentialType,
endpoint = openPlatformEndpoint,
protocol = @protocol,
regionId = @regionId,
};
var authClient = new OpenPlatform(authConfig);
var authRequest = new OpenPlatform.AuthorizeFileUploadRequest{
product = 'imgsearch',
regionId = @regionId,
};
var authResponse = new OpenPlatform.AuthorizeFileUploadResponse{};
var ossConfig = new OSS.Config{
accessKeySecret = accessKeySecret,
type = 'access_key',
protocol = @protocol,
regionId = @regionId,
};
var ossClient : OSS = null;
var fileObj = new FileForm.FileField{};
var ossHeader = new OSS.PostObjectRequest.header{};
var uploadRequest = new OSS.PostObjectRequest{};
var ossRuntime = new OSSUtil.RuntimeOptions{};
OpenApiUtil.convert(runtime, ossRuntime);
var addImageReq = new AddImageRequest{};
OpenApiUtil.convert(request, addImageReq);
if(!Util.isUnset(request.imageUrlObject)) {
authResponse = authClient.authorizeFileUploadWithOptions(authRequest, runtime);
ossConfig.accessKeyId = authResponse.body.accessKeyId;
ossConfig.endpoint = OpenApiUtil.getEndpoint(authResponse.body.endpoint, authResponse.body.useAccelerate, @endpointType);
ossClient = new OSS(ossConfig);
fileObj = new FileForm.FileField{
filename = authResponse.body.objectKey,
content = request.imageUrlObject,
contentType = '',
};
ossHeader = new OSS.PostObjectRequest.header{
accessKeyId = authResponse.body.accessKeyId,
policy = authResponse.body.encodedPolicy,
signature = authResponse.body.signature,
key = authResponse.body.objectKey,
file = fileObj,
successActionStatus = '201',
};
uploadRequest = new OSS.PostObjectRequest{
bucketName = authResponse.body.bucket,
header = ossHeader,
};
ossClient.postObject(uploadRequest, ossRuntime);
addImageReq.imageUrl = `http://${authResponse.body.bucket}.${authResponse.body.endpoint}/${authResponse.body.objectKey}`;
}
var addImageResp = addImageWithOptions(addImageReq, runtime);
return addImageResp;
}
model CreateImageDbRequest {
name?: string(name='Name', example='default'),
}
model CreateImageDbResponseBody = {
requestId?: string(name='RequestId', example='DD106AE3-838A-41D7-8CD0-B902DC2BC109'),
}
model CreateImageDbResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: CreateImageDbResponseBody(name='body'),
}
async function createImageDbWithOptions(request: CreateImageDbRequest, runtime: Util.RuntimeOptions): CreateImageDbResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.name)) {
body['Name'] = request.name;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'CreateImageDb',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function createImageDb(request: CreateImageDbRequest): CreateImageDbResponse {
var runtime = new Util.RuntimeOptions{};
return createImageDbWithOptions(request, runtime);
}
model DeleteImageRequest {
dbName?: string(name='DbName', example='default'),
entityId?: string(name='EntityId', example='1'),
}
model DeleteImageResponseBody = {
requestId?: string(name='RequestId', example='3F3F81A5-4C37-4716-AE5C-518D2537365C'),
}
model DeleteImageResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: DeleteImageResponseBody(name='body'),
}
async function deleteImageWithOptions(request: DeleteImageRequest, runtime: Util.RuntimeOptions): DeleteImageResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.dbName)) {
body['DbName'] = request.dbName;
}
if (!Util.isUnset(request.entityId)) {
body['EntityId'] = request.entityId;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'DeleteImage',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function deleteImage(request: DeleteImageRequest): DeleteImageResponse {
var runtime = new Util.RuntimeOptions{};
return deleteImageWithOptions(request, runtime);
}
model DeleteImageDbRequest {
name?: string(name='Name', example='default'),
}
model DeleteImageDbResponseBody = {
requestId?: string(name='RequestId', example='3F3F81A5-4C37-4716-AE5C-518D2537365C'),
}
model DeleteImageDbResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: DeleteImageDbResponseBody(name='body'),
}
async function deleteImageDbWithOptions(request: DeleteImageDbRequest, runtime: Util.RuntimeOptions): DeleteImageDbResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.name)) {
body['Name'] = request.name;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'DeleteImageDb',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function deleteImageDb(request: DeleteImageDbRequest): DeleteImageDbResponse {
var runtime = new Util.RuntimeOptions{};
return deleteImageDbWithOptions(request, runtime);
}
model ListImageDbsResponseBody = {
data?: {
dbList?: [
{
name?: string(name='Name', example='default'),
}
](name='DbList'),
}(name='Data'),
requestId?: string(name='RequestId', example='4E010B89-B370-458A-A586-B9A9F3BC3058'),
}
model ListImageDbsResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: ListImageDbsResponseBody(name='body'),
}
async function listImageDbsWithOptions(runtime: Util.RuntimeOptions): ListImageDbsResponse {
var req = new OpenApi.OpenApiRequest{};
var params = new OpenApi.Params{
action = 'ListImageDbs',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function listImageDbs(): ListImageDbsResponse {
var runtime = new Util.RuntimeOptions{};
return listImageDbsWithOptions(runtime);
}
model ListImagesRequest {
dbName?: string(name='DbName', example='default'),
entityIdPrefix?: string(name='EntityIdPrefix', example='U1'),
limit?: int32(name='Limit', example='50'),
offset?: int32(name='Offset', example='1'),
order?: string(name='Order', example='asc'),
token?: string(name='Token', example='2'),
}
model ListImagesResponseBody = {
data?: {
imageList?: [
{
createdAt?: long(name='CreatedAt', example='1582838489213'),
dataId?: string(name='DataId', example='001'),
entityId?: string(name='EntityId', example='5'),
extraData?: string(name='ExtraData'),
updatedAt?: long(name='UpdatedAt', example='1582838489213'),
}
](name='ImageList'),
token?: string(name='Token', example='2'),
totalCount?: int32(name='TotalCount', example='100'),
}(name='Data'),
requestId?: string(name='RequestId', example='2B93C43A-F824-40C8-AF79-844342B0F43A'),
}
model ListImagesResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: ListImagesResponseBody(name='body'),
}
async function listImagesWithOptions(request: ListImagesRequest, runtime: Util.RuntimeOptions): ListImagesResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.dbName)) {
body['DbName'] = request.dbName;
}
if (!Util.isUnset(request.entityIdPrefix)) {
body['EntityIdPrefix'] = request.entityIdPrefix;
}
if (!Util.isUnset(request.limit)) {
body['Limit'] = request.limit;
}
if (!Util.isUnset(request.offset)) {
body['Offset'] = request.offset;
}
if (!Util.isUnset(request.order)) {
body['Order'] = request.order;
}
if (!Util.isUnset(request.token)) {
body['Token'] = request.token;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'ListImages',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function listImages(request: ListImagesRequest): ListImagesResponse {
var runtime = new Util.RuntimeOptions{};
return listImagesWithOptions(request, runtime);
}
model SearchImageRequest {
dbName?: string(name='DbName', example='default'),
imageUrl?: string(name='ImageUrl', example='http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/imgsearch/SearchImage/SearchImage-ku8.png'),
limit?: int32(name='Limit', example='5'),
}
model SearchImageAdvanceRequest {
dbName?: string(name='DbName', example='default'),
imageUrlObject?: readable(name='ImageUrl', example='http://viapi-test.oss-cn-shanghai.aliyuncs.com/viapi-3.0domepic/imgsearch/SearchImage/SearchImage-ku8.png'),
limit?: int32(name='Limit', example='5'),
}
model SearchImageResponseBody = {
data?: {
matchList?: [
{
dataId?: string(name='DataId', example='001'),
entityId?: string(name='EntityId', example='123456'),
extraData?: string(name='ExtraData', example='tangyan'),
imageUrl?: string(name='ImageUrl', example='http://vision-console.oss-cn-shanghai.aliyuncs.com/1902352443710590/kv6dvd1ie0c6-ipvnszc8584116.jpg?Expires=1635150265&OSSAccessKeyId=LTAI4Fp1Gt5RzwdEXL3o****&Signature=8rj0%2Bxg%2Bni5NxQAcEQqISX5j1w****'),
score?: float(name='Score', example='10'),
}
](name='MatchList'),
}(name='Data'),
requestId?: string(name='RequestId', example='A98DBCEB-45E2-5F5F-B5ED-F2340182FD87'),
}
model SearchImageResponse = {
headers: map[string]string(name='headers'),
statusCode: int32(name='statusCode'),
body: SearchImageResponseBody(name='body'),
}
async function searchImageWithOptions(request: SearchImageRequest, runtime: Util.RuntimeOptions): SearchImageResponse {
Util.validateModel(request);
var body : map[string]any = {};
if (!Util.isUnset(request.dbName)) {
body['DbName'] = request.dbName;
}
if (!Util.isUnset(request.imageUrl)) {
body['ImageUrl'] = request.imageUrl;
}
if (!Util.isUnset(request.limit)) {
body['Limit'] = request.limit;
}
var req = new OpenApi.OpenApiRequest{
body = OpenApiUtil.parseToMap(body),
};
var params = new OpenApi.Params{
action = 'SearchImage',
version = '2020-03-20',
protocol = 'HTTPS',
pathname = '/',
method = 'POST',
authType = 'AK',
style = 'RPC',
reqBodyType = 'formData',
bodyType = 'json',
};
return callApi(params, req, runtime);
}
async function searchImage(request: SearchImageRequest): SearchImageResponse {
var runtime = new Util.RuntimeOptions{};
return searchImageWithOptions(request, runtime);
}
async function searchImageAdvance(request: SearchImageAdvanceRequest, runtime: Util.RuntimeOptions): SearchImageResponse {
// Step 0: init client
var accessKeyId = @credential.getAccessKeyId();
var accessKeySecret = @credential.getAccessKeySecret();
var securityToken = @credential.getSecurityToken();
var credentialType = @credential.getType();
var openPlatformEndpoint = @openPlatformEndpoint;
if(Util.isUnset(openPlatformEndpoint)) {
openPlatformEndpoint ='openplatform.aliyuncs.com';
}
if(Util.isUnset(credentialType)) {
credentialType ='access_key';
}
var authConfig = new OpenApi.Config{
accessKeyId = accessKeyId,
accessKeySecret = accessKeySecret,
securityToken = securityToken,
type = credentialType,
endpoint = openPlatformEndpoint,
protocol = @protocol,
regionId = @regionId,
};
var authClient = new OpenPlatform(authConfig);
var authRequest = new OpenPlatform.AuthorizeFileUploadRequest{
product = 'imgsearch',
regionId = @regionId,
};
var authResponse = new OpenPlatform.AuthorizeFileUploadResponse{};
var ossConfig = new OSS.Config{
accessKeySecret = accessKeySecret,
type = 'access_key',
protocol = @protocol,
regionId = @regionId,
};
var ossClient : OSS = null;
var fileObj = new FileForm.FileField{};
var ossHeader = new OSS.PostObjectRequest.header{};
var uploadRequest = new OSS.PostObjectRequest{};
var ossRuntime = new OSSUtil.RuntimeOptions{};
OpenApiUtil.convert(runtime, ossRuntime);
var searchImageReq = new SearchImageRequest{};
OpenApiUtil.convert(request, searchImageReq);
if(!Util.isUnset(request.imageUrlObject)) {
authResponse = authClient.authorizeFileUploadWithOptions(authRequest, runtime);
ossConfig.accessKeyId = authResponse.body.accessKeyId;
ossConfig.endpoint = OpenApiUtil.getEndpoint(authResponse.body.endpoint, authResponse.body.useAccelerate, @endpointType);
ossClient = new OSS(ossConfig);
fileObj = new FileForm.FileField{
filename = authResponse.body.objectKey,
content = request.imageUrlObject,
contentType = '',
};
ossHeader = new OSS.PostObjectRequest.header{
accessKeyId = authResponse.body.accessKeyId,
policy = authResponse.body.encodedPolicy,
signature = authResponse.body.signature,
key = authResponse.body.objectKey,
file = fileObj,
successActionStatus = '201',
};
uploadRequest = new OSS.PostObjectRequest{
bucketName = authResponse.body.bucket,
header = ossHeader,
};
ossClient.postObject(uploadRequest, ossRuntime);
searchImageReq.imageUrl = `http://${authResponse.body.bucket}.${authResponse.body.endpoint}/${authResponse.body.objectKey}`;
}
var searchImageResp = searchImageWithOptions(searchImageReq, runtime);
return searchImageResp;
}