videoseg-20200320/Sources/AlibabacloudVideoseg20200320/Client.swift (156 lines of code) (raw):
import Foundation
import Tea
import TeaUtils
import AlibabaCloudOssSdk
import AlibabacloudOpenPlatform20191219
import AlibabaCloudOSSUtil
import TeaFileForm
import AlibabacloudOpenApi
import AlibabaCloudOpenApiUtil
import AlibabacloudEndpointUtil
open class Client : AlibabacloudOpenApi.Client {
public override init(_ config: AlibabacloudOpenApi.Config) throws {
try super.init(config)
self._endpointRule = "regional"
try checkConfig(config as! AlibabacloudOpenApi.Config)
self._endpoint = try getEndpoint("videoseg", self._regionId ?? "", self._endpointRule ?? "", self._network ?? "", self._suffix ?? "", self._endpointMap ?? [:], self._endpoint ?? "")
}
public func getEndpoint(_ productId: String, _ regionId: String, _ endpointRule: String, _ network: String, _ suffix: String, _ endpointMap: [String: String], _ endpoint: String) throws -> String {
if (!TeaUtils.Client.empty(endpoint)) {
return endpoint as! String
}
if (!TeaUtils.Client.isUnset(endpointMap) && !TeaUtils.Client.empty(endpointMap[regionId as! String])) {
return endpointMap[regionId as! String] ?? ""
}
return try AlibabacloudEndpointUtil.Client.getEndpointRules(productId, regionId, endpointRule, network, suffix)
}
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
public func getAsyncJobResultWithOptions(_ request: GetAsyncJobResultRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> GetAsyncJobResultResponse {
try TeaUtils.Client.validateModel(request)
var body: [String: Any] = [:]
if (!TeaUtils.Client.isUnset(request.jobId)) {
body["JobId"] = request.jobId ?? "";
}
var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([
"body": AlibabaCloudOpenApiUtil.Client.parseToMap(body)
])
var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([
"action": "GetAsyncJobResult",
"version": "2020-03-20",
"protocol": "HTTPS",
"pathname": "/",
"method": "POST",
"authType": "AK",
"style": "RPC",
"reqBodyType": "formData",
"bodyType": "json"
])
var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions)
return Tea.TeaConverter.fromMap(GetAsyncJobResultResponse(), tmp)
}
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
public func getAsyncJobResult(_ request: GetAsyncJobResultRequest) async throws -> GetAsyncJobResultResponse {
var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:])
return try await getAsyncJobResultWithOptions(request as! GetAsyncJobResultRequest, runtime as! TeaUtils.RuntimeOptions)
}
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
public func segmentVideoBodyWithOptions(_ request: SegmentVideoBodyRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> SegmentVideoBodyResponse {
try TeaUtils.Client.validateModel(request)
var body: [String: Any] = [:]
if (!TeaUtils.Client.isUnset(request.videoUrl)) {
body["VideoUrl"] = request.videoUrl ?? "";
}
var req: AlibabacloudOpenApi.OpenApiRequest = AlibabacloudOpenApi.OpenApiRequest([
"body": AlibabaCloudOpenApiUtil.Client.parseToMap(body)
])
var params: AlibabacloudOpenApi.Params = AlibabacloudOpenApi.Params([
"action": "SegmentVideoBody",
"version": "2020-03-20",
"protocol": "HTTPS",
"pathname": "/",
"method": "POST",
"authType": "AK",
"style": "RPC",
"reqBodyType": "formData",
"bodyType": "json"
])
var tmp: [String: Any] = try await callApi(params as! AlibabacloudOpenApi.Params, req as! AlibabacloudOpenApi.OpenApiRequest, runtime as! TeaUtils.RuntimeOptions)
return Tea.TeaConverter.fromMap(SegmentVideoBodyResponse(), tmp)
}
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
public func segmentVideoBody(_ request: SegmentVideoBodyRequest) async throws -> SegmentVideoBodyResponse {
var runtime: TeaUtils.RuntimeOptions = TeaUtils.RuntimeOptions([:])
return try await segmentVideoBodyWithOptions(request as! SegmentVideoBodyRequest, runtime as! TeaUtils.RuntimeOptions)
}
@available(macOS 10.15, iOS 13, tvOS 13, watchOS 6, *)
public func segmentVideoBodyAdvance(_ request: SegmentVideoBodyAdvanceRequest, _ runtime: TeaUtils.RuntimeOptions) async throws -> SegmentVideoBodyResponse {
var accessKeyId: String = try await self._credential!.getAccessKeyId()
var accessKeySecret: String = try await self._credential!.getAccessKeySecret()
var securityToken: String = try await self._credential!.getSecurityToken()
var credentialType: String = self._credential!.getType()
var openPlatformEndpoint: String = self._openPlatformEndpoint ?? ""
if (TeaUtils.Client.empty(openPlatformEndpoint)) {
openPlatformEndpoint = "openplatform.aliyuncs.com"
}
if (TeaUtils.Client.isUnset(credentialType)) {
credentialType = "access_key"
}
var authConfig: AlibabacloudOpenApi.Config = AlibabacloudOpenApi.Config([
"accessKeyId": accessKeyId as! String,
"accessKeySecret": accessKeySecret as! String,
"securityToken": securityToken as! String,
"type": credentialType as! String,
"endpoint": openPlatformEndpoint as! String,
"protocol": self._protocol ?? "",
"regionId": self._regionId ?? ""
])
var authClient: AlibabacloudOpenPlatform20191219.Client = try AlibabacloudOpenPlatform20191219.Client(authConfig)
var authRequest: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest([
"product": "videoseg",
"regionId": self._regionId ?? ""
])
var authResponse: AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse = AlibabacloudOpenPlatform20191219.AuthorizeFileUploadResponse([:])
var ossConfig: AlibabaCloudOssSdk.Config = AlibabaCloudOssSdk.Config([
"accessKeyId": accessKeyId as! String,
"accessKeySecret": accessKeySecret as! String,
"type": "access_key",
"protocol": self._protocol ?? "",
"regionId": self._regionId ?? ""
])
var ossClient: AlibabaCloudOssSdk.Client = try AlibabaCloudOssSdk.Client(ossConfig)
var fileObj: TeaFileForm.FileField = TeaFileForm.FileField([:])
var ossHeader: AlibabaCloudOssSdk.PostObjectRequest.Header = AlibabaCloudOssSdk.PostObjectRequest.Header([:])
var uploadRequest: AlibabaCloudOssSdk.PostObjectRequest = AlibabaCloudOssSdk.PostObjectRequest([:])
var ossRuntime: AlibabaCloudOSSUtil.RuntimeOptions = AlibabaCloudOSSUtil.RuntimeOptions([:])
AlibabaCloudOpenApiUtil.Client.convert(runtime, ossRuntime)
var segmentVideoBodyReq: SegmentVideoBodyRequest = SegmentVideoBodyRequest([:])
AlibabaCloudOpenApiUtil.Client.convert(request, segmentVideoBodyReq)
if (!TeaUtils.Client.isUnset(request.videoUrlObject)) {
authResponse = try await authClient.authorizeFileUploadWithOptions(authRequest as! AlibabacloudOpenPlatform20191219.AuthorizeFileUploadRequest, runtime as! TeaUtils.RuntimeOptions)
ossConfig.accessKeyId = authResponse.body!.accessKeyId
ossConfig.endpoint = AlibabaCloudOpenApiUtil.Client.getEndpoint(authResponse.body!.endpoint, authResponse.body!.useAccelerate, self._endpointType)
ossClient = try AlibabaCloudOssSdk.Client(ossConfig)
fileObj = TeaFileForm.FileField([
"filename": authResponse.body!.objectKey ?? "",
"content": request.videoUrlObject!,
"contentType": ""
])
ossHeader = AlibabaCloudOssSdk.PostObjectRequest.Header([
"accessKeyId": authResponse.body!.accessKeyId ?? "",
"policy": authResponse.body!.encodedPolicy ?? "",
"signature": authResponse.body!.signature ?? "",
"key": authResponse.body!.objectKey ?? "",
"file": fileObj as! TeaFileForm.FileField,
"successActionStatus": "201"
])
uploadRequest = AlibabaCloudOssSdk.PostObjectRequest([
"bucketName": authResponse.body!.bucket ?? "",
"header": ossHeader as! AlibabaCloudOssSdk.PostObjectRequest.Header
])
try await ossClient.postObject(uploadRequest as! AlibabaCloudOssSdk.PostObjectRequest, ossRuntime as! AlibabaCloudOSSUtil.RuntimeOptions)
segmentVideoBodyReq.videoUrl = "http://" + (authResponse.body!.bucket ?? "") + "." + (authResponse.body!.endpoint ?? "") + "/" + (authResponse.body!.objectKey ?? "")
}
var segmentVideoBodyResp: SegmentVideoBodyResponse = try await segmentVideoBodyWithOptions(segmentVideoBodyReq as! SegmentVideoBodyRequest, runtime as! TeaUtils.RuntimeOptions)
return segmentVideoBodyResp as! SegmentVideoBodyResponse
}
}