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); }
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}"); } }); }); }