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 } }