Пример #1
0
        public virtual IEnumerable <TSParameter> GetHandlerParameters()
        {
            IEnumerable <TSParameter> requiredParameters = GetRequiredParameters();
            TSParameter requiredOptionsParameter         = GetOptionsParameter(true);
            IEnumerable <TSParameter> requiredParametersWithOptionalOptions = requiredParameters.Concat(new[] { GetContextParameter() });

            if (requiredOptionsParameter != null)
            {
                requiredParametersWithOptionalOptions = requiredParameters.Concat(new[] { requiredOptionsParameter, GetContextParameter() });
            }
            requiredParametersWithOptionalOptions = requiredParametersWithOptionalOptions.Select(x => x.Name.Equals(primitiveHttpBodyPropertyName) ? new TSParameter(x.Name, "NodeJS.ReadableStream", x.Description, true) : x);

            return(requiredParametersWithOptionalOptions);
        }
Пример #2
0
        public virtual void Generate(TSClass tsClass)
        {
            string methodName   = Name.ToCamelCase();
            string responseName = HttpResponseReferenceName;
            IEnumerable <TSParameter> requiredParameters = GetRequiredParameters();
            TSParameter optionalOptionsParameter         = GetOptionsParameter(false);
            TSParameter requiredOptionsParameter         = GetOptionsParameter(true);
            TSParameter optionalCallbackParameter        = GetCallbackParameter(false);
            TSParameter requiredCallbackParameter        = GetCallbackParameter(true);
            string      returnType        = $"Promise<{responseName}>";
            string      deprecatedMessage = DeprecationMessage;

            IEnumerable <TSParameter> requiredParametersWithOptionalOptions = requiredParameters.Concat(new[] { optionalOptionsParameter });

            GenerateDocumentationComment(tsClass, returnType, requiredParametersWithOptionalOptions, deprecatedMessage: deprecatedMessage);
            tsClass.MethodOverload(methodName, returnType, requiredParametersWithOptionalOptions);

            IEnumerable <TSParameter> requiredParametersWithRequiredCallback = requiredParameters.Concat(new[] { requiredCallbackParameter });

            GenerateDocumentationComment(tsClass, "void", requiredParametersWithRequiredCallback, includeDescription: false, deprecatedMessage: deprecatedMessage);
            tsClass.MethodOverload(methodName, "void", requiredParametersWithRequiredCallback);

            IEnumerable <TSParameter> requiredParametersWithRequiredOptionsAndRequiredCallback = requiredParameters.Concat(new[] { requiredOptionsParameter, requiredCallbackParameter });

            GenerateDocumentationComment(tsClass, "void", requiredParametersWithRequiredOptionsAndRequiredCallback, includeDescription: false, deprecatedMessage: deprecatedMessage);
            tsClass.MethodOverload(methodName, "void", requiredParametersWithRequiredOptionsAndRequiredCallback);

            TSParameter optionalOptionsCallbackUnionParameter = TSParameter.Union(new [] { optionalOptionsParameter, optionalCallbackParameter }, name: "options");
            IEnumerable <TSParameter> requiredParametersWithOptionalOptionsAndOptionalCallback = requiredParameters.Concat(new[] { optionalOptionsCallbackUnionParameter, optionalCallbackParameter });

            tsClass.Method(methodName, returnType, requiredParametersWithOptionalOptionsAndOptionalCallback, methodBody =>
            {
                methodBody.Return(returnValue =>
                {
                    returnValue.FunctionCall($"{ClientReference}.sendOperationRequest", argumentList =>
                    {
                        argumentList.Object((TSObject tsObject) => GenerateOperationArguments(tsObject));
                        argumentList.Text(GetOperationSpecVariableName());
                        argumentList.Text("callback");
                    });

                    if (HasCustomHttpResponseType)
                    {
                        returnValue.Text($" as {returnType}");
                    }
                });
            });
        }