lib/v20180416/client.rb



# frozen_string_literal: true

# Copyright (c) 2017-2018 THL A29 Limited, a Tencent company. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

require 'json'

module TencentCloud
  module Scf
    module V20180416
      class Client < TencentCloud::Common::AbstractClient

        def initialize(credential, region, profile = nil)
            api_version = '2018-04-16'
            api_endpoint = 'scf.tencentcloudapi.com'
            sdk_version = 'SCF_' + File.read(File.expand_path('../VERSION', __dir__)).strip
            super(credential, region, api_version, api_endpoint, sdk_version, profile)
        end


        # 复制一个函数,您可以选择将复制出的新函数放置在特定的Region和Namespace。
        # 注:本接口**不会**复制函数的以下对象或属性:
        # 1. 函数的触发器
        # 2. 除了$LATEST以外的其它版本
        # 3. 函数配置的日志投递到的CLS目标。

        # 如有需要,您可以在复制后手动配置新函数。

        # @param request: Request instance for CopyFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::CopyFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::CopyFunctionResponse`
        def CopyFunction(request)
          body = send_request('CopyFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CopyFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 为某个函数版本创建一个别名,您可以使用别名来标记特定的函数版本,如DEV/RELEASE版本,也可以随时修改别名指向的版本。
        # 一个别名必须指向一个主版本,此外还可以同时指向一个附加版本。调用函数时指定特定的别名,则请求会被发送到别名指向的版本上,您可以配置请求发送到主版本和附加版本的比例。

        # @param request: Request instance for CreateAlias.
        # @type request: :class:`Tencentcloud::scf::V20180416::CreateAliasRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::CreateAliasResponse`
        def CreateAlias(request)
          body = send_request('CreateAlias', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateAliasResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入参数创建新的函数。

        # @param request: Request instance for CreateFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::CreateFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::CreateFunctionResponse`
        def CreateFunction(request)
          body = send_request('CreateFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入的参数创建命名空间。

        # @param request: Request instance for CreateNamespace.
        # @type request: :class:`Tencentcloud::scf::V20180416::CreateNamespaceRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::CreateNamespaceResponse`
        def CreateNamespace(request)
          body = send_request('CreateNamespace', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateNamespaceResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据参数输入设置新的触发方式。

        # @param request: Request instance for CreateTrigger.
        # @type request: :class:`Tencentcloud::scf::V20180416::CreateTriggerRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::CreateTriggerResponse`
        def CreateTrigger(request)
          body = send_request('CreateTrigger', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = CreateTriggerResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 删除一个函数版本的别名

        # @param request: Request instance for DeleteAlias.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteAliasRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteAliasResponse`
        def DeleteAlias(request)
          body = send_request('DeleteAlias', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteAliasResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入参数删除函数。

        # @param request: Request instance for DeleteFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteFunctionResponse`
        def DeleteFunction(request)
          body = send_request('DeleteFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 删除指定层的指定版本,被删除的版本无法再关联到函数上,但不会影响正在引用这个层的函数。

        # @param request: Request instance for DeleteLayerVersion.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteLayerVersionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteLayerVersionResponse`
        def DeleteLayerVersion(request)
          body = send_request('DeleteLayerVersion', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteLayerVersionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入的参数删除命名空间。

        # @param request: Request instance for DeleteNamespace.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteNamespaceRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteNamespaceResponse`
        def DeleteNamespace(request)
          body = send_request('DeleteNamespace', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteNamespaceResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 删除函数版本的预置并发配置。

        # @param request: Request instance for DeleteProvisionedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteProvisionedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteProvisionedConcurrencyConfigResponse`
        def DeleteProvisionedConcurrencyConfig(request)
          body = send_request('DeleteProvisionedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteProvisionedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 删除函数的最大独占配额配置。

        # @param request: Request instance for DeleteReservedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteReservedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteReservedConcurrencyConfigResponse`
        def DeleteReservedConcurrencyConfig(request)
          body = send_request('DeleteReservedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteReservedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据参数传入删除已有的触发方式。

        # @param request: Request instance for DeleteTrigger.
        # @type request: :class:`Tencentcloud::scf::V20180416::DeleteTriggerRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::DeleteTriggerResponse`
        def DeleteTrigger(request)
          body = send_request('DeleteTrigger', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = DeleteTriggerResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取账户信息

        # @param request: Request instance for GetAccount.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetAccountRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetAccountResponse`
        def GetAccount(request)
          body = send_request('GetAccount', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetAccountResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取别名的详细信息,包括名称、描述、版本、路由信息等。

        # @param request: Request instance for GetAlias.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetAliasRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetAliasResponse`
        def GetAlias(request)
          body = send_request('GetAlias', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetAliasResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取函数异步执行事件状态,事件状态保留 3 * 24 小时(从事件完成开始计时)。

        # @param request: Request instance for GetAsyncEventStatus.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetAsyncEventStatusRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetAsyncEventStatusResponse`
        def GetAsyncEventStatus(request)
          body = send_request('GetAsyncEventStatus', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetAsyncEventStatusResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口获取某个函数的详细信息,包括名称、代码、处理方法、关联触发器和超时时间等字段。

        # @param request: Request instance for GetFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetFunctionResponse`
        def GetFunction(request)
          body = send_request('GetFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口用于获取函数代码包的下载地址。

        # @param request: Request instance for GetFunctionAddress.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetFunctionAddressRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetFunctionAddressResponse`
        def GetFunctionAddress(request)
          body = send_request('GetFunctionAddress', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetFunctionAddressResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取函数异步重试配置,包括重试次数和消息保留时间

        # @param request: Request instance for GetFunctionEventInvokeConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetFunctionEventInvokeConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetFunctionEventInvokeConfigResponse`
        def GetFunctionEventInvokeConfig(request)
          body = send_request('GetFunctionEventInvokeConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetFunctionEventInvokeConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据指定的日志查询条件返回函数运行日志。该接口已下线,查询函数请求运行的返回信息,请使用 [GetRequestStatus](https://cloud.tencent.com/document/product/583/65348)。查询函数运行日志,请参考[日志检索教程](https://cloud.tencent.com/document/product/583/52637)。

        # @param request: Request instance for GetFunctionLogs.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetFunctionLogsRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetFunctionLogsResponse`
        def GetFunctionLogs(request)
          body = send_request('GetFunctionLogs', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetFunctionLogsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取层版本详细信息,包括用于下载层中文件的链接。

        # @param request: Request instance for GetLayerVersion.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetLayerVersionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetLayerVersionResponse`
        def GetLayerVersion(request)
          body = send_request('GetLayerVersion', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetLayerVersionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取函数或函数某一版本的预置并发详情。

        # @param request: Request instance for GetProvisionedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetProvisionedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetProvisionedConcurrencyConfigResponse`
        def GetProvisionedConcurrencyConfig(request)
          body = send_request('GetProvisionedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetProvisionedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据指定的查询条件返回函数单个请求运行状态。

        # @param request: Request instance for GetRequestStatus.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetRequestStatusRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetRequestStatusResponse`
        def GetRequestStatus(request)
          body = send_request('GetRequestStatus', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetRequestStatusResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取函数的最大独占配额详情。

        # @param request: Request instance for GetReservedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::GetReservedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::GetReservedConcurrencyConfigResponse`
        def GetReservedConcurrencyConfig(request)
          body = send_request('GetReservedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = GetReservedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口用于运行函数。

        # @param request: Request instance for Invoke.
        # @type request: :class:`Tencentcloud::scf::V20180416::InvokeRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::InvokeResponse`
        def Invoke(request)
          body = send_request('Invoke', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = InvokeResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        #  SCF同步调用函数接口

        # @param request: Request instance for InvokeFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::InvokeFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::InvokeFunctionResponse`
        def InvokeFunction(request)
          body = send_request('InvokeFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = InvokeFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 返回一个函数下的全部别名,可以根据特定函数版本过滤。

        # @param request: Request instance for ListAliases.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListAliasesRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListAliasesResponse`
        def ListAliases(request)
          body = send_request('ListAliases', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListAliasesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 拉取函数异步事件列表

        # @param request: Request instance for ListAsyncEvents.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListAsyncEventsRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListAsyncEventsResponse`
        def ListAsyncEvents(request)
          body = send_request('ListAsyncEvents', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListAsyncEventsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入的查询参数返回相关函数信息。

        # @param request: Request instance for ListFunctions.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListFunctionsRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListFunctionsResponse`
        def ListFunctions(request)
          body = send_request('ListFunctions', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListFunctionsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 返回指定层的全部版本的信息

        # @param request: Request instance for ListLayerVersions.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListLayerVersionsRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListLayerVersionsResponse`
        def ListLayerVersions(request)
          body = send_request('ListLayerVersions', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListLayerVersionsResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 返回全部层的列表,其中包含了每个层最新版本的信息,可以通过适配运行时进行过滤。

        # @param request: Request instance for ListLayers.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListLayersRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListLayersResponse`
        def ListLayers(request)
          body = send_request('ListLayers', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListLayersResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 列出命名空间列表

        # @param request: Request instance for ListNamespaces.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListNamespacesRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListNamespacesResponse`
        def ListNamespaces(request)
          body = send_request('ListNamespaces', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListNamespacesResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 获取函数触发器列表

        # @param request: Request instance for ListTriggers.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListTriggersRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListTriggersResponse`
        def ListTriggers(request)
          body = send_request('ListTriggers', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListTriggersResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入的参数查询函数的版本。

        # @param request: Request instance for ListVersionByFunction.
        # @type request: :class:`Tencentcloud::scf::V20180416::ListVersionByFunctionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::ListVersionByFunctionResponse`
        def ListVersionByFunction(request)
          body = send_request('ListVersionByFunction', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = ListVersionByFunctionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 使用给定的zip文件或cos对象创建一个层的新版本,每次使用相同的层的名称调用本接口,都会生成一个新版本。

        # @param request: Request instance for PublishLayerVersion.
        # @type request: :class:`Tencentcloud::scf::V20180416::PublishLayerVersionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::PublishLayerVersionResponse`
        def PublishLayerVersion(request)
          body = send_request('PublishLayerVersion', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PublishLayerVersionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口用于用户发布新版本函数。

        # @param request: Request instance for PublishVersion.
        # @type request: :class:`Tencentcloud::scf::V20180416::PublishVersionRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::PublishVersionResponse`
        def PublishVersion(request)
          body = send_request('PublishVersion', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PublishVersionResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 设置函数某一非$LATEST版本的预置并发。

        # @param request: Request instance for PutProvisionedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::PutProvisionedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::PutProvisionedConcurrencyConfigResponse`
        def PutProvisionedConcurrencyConfig(request)
          body = send_request('PutProvisionedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PutProvisionedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 设置函数最大独占配额

        # @param request: Request instance for PutReservedConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::PutReservedConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::PutReservedConcurrencyConfigResponse`
        def PutReservedConcurrencyConfig(request)
          body = send_request('PutReservedConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PutReservedConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 修改账号并发限制配额

        # @param request: Request instance for PutTotalConcurrencyConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::PutTotalConcurrencyConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::PutTotalConcurrencyConfigResponse`
        def PutTotalConcurrencyConfig(request)
          body = send_request('PutTotalConcurrencyConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = PutTotalConcurrencyConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 终止正在运行中的函数异步事件

        # @param request: Request instance for TerminateAsyncEvent.
        # @type request: :class:`Tencentcloud::scf::V20180416::TerminateAsyncEventRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::TerminateAsyncEventResponse`
        def TerminateAsyncEvent(request)
          body = send_request('TerminateAsyncEvent', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = TerminateAsyncEventResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 更新别名的配置

        # @param request: Request instance for UpdateAlias.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateAliasRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateAliasResponse`
        def UpdateAlias(request)
          body = send_request('UpdateAlias', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateAliasResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入参数更新函数代码。

        # @param request: Request instance for UpdateFunctionCode.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateFunctionCodeRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateFunctionCodeResponse`
        def UpdateFunctionCode(request)
          body = send_request('UpdateFunctionCode', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateFunctionCodeResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 该接口根据传入参数更新函数配置。

        # @param request: Request instance for UpdateFunctionConfiguration.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateFunctionConfigurationRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateFunctionConfigurationResponse`
        def UpdateFunctionConfiguration(request)
          body = send_request('UpdateFunctionConfiguration', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateFunctionConfigurationResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 更新函数的异步重试配置,包括重试次数和消息保留时间

        # @param request: Request instance for UpdateFunctionEventInvokeConfig.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateFunctionEventInvokeConfigRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateFunctionEventInvokeConfigResponse`
        def UpdateFunctionEventInvokeConfig(request)
          body = send_request('UpdateFunctionEventInvokeConfig', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateFunctionEventInvokeConfigResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 更新命名空间

        # @param request: Request instance for UpdateNamespace.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateNamespaceRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateNamespaceResponse`
        def UpdateNamespace(request)
          body = send_request('UpdateNamespace', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateNamespaceResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end

        # 更新触发器状态的值

        # @param request: Request instance for UpdateTriggerStatus.
        # @type request: :class:`Tencentcloud::scf::V20180416::UpdateTriggerStatusRequest`
        # @rtype: :class:`Tencentcloud::scf::V20180416::UpdateTriggerStatusResponse`
        def UpdateTriggerStatus(request)
          body = send_request('UpdateTriggerStatus', request.serialize)
          response = JSON.parse(body)
          if response['Response'].key?('Error') == false
            model = UpdateTriggerStatusResponse.new
            model.deserialize(response['Response'])
            model
          else
            code = response['Response']['Error']['Code']
            message = response['Response']['Error']['Message']
            reqid = response['Response']['RequestId']
            raise TencentCloud::Common::TencentCloudSDKException.new(code, message, reqid)
          end
        rescue TencentCloud::Common::TencentCloudSDKException => e
          raise e
        rescue StandardError => e
          raise TencentCloud::Common::TencentCloudSDKException.new(nil, e.inspect)
        end


      end
    end
  end
end