private void AddRequestBodyParameters(bool useComplexTypeForBody = false) { var stringType = new CodeType { Name = "string", }; var requestConfigClass = parentClass.AddInnerClass(new CodeClass { Name = "RequestConfig", Kind = CodeClassKind.RequestConfiguration, }).First(); requestConfigClass.AddProperty(new() { Name = "h", Kind = CodePropertyKind.Headers, Type = stringType, }, new () { Name = "q", Kind = CodePropertyKind.QueryParameters, Type = stringType, }, new () { Name = "o", Kind = CodePropertyKind.Options, Type = stringType, }); method.AddParameter(new CodeParameter { Name = "b", Kind = CodeParameterKind.RequestBody, Type = useComplexTypeForBody ? new CodeType { Name = "SomeComplexTypeForRequestBody", TypeDefinition = root.AddClass(new CodeClass { Name = "SomeComplexTypeForRequestBody", Kind = CodeClassKind.Model, }).First(), } : stringType, }); method.AddParameter(new CodeParameter { Name = "config", Kind = CodeParameterKind.RequestConfiguration, Type = new CodeType { Name = "RequestConfig", TypeDefinition = requestConfigClass, ActionOf = true, }, Optional = true, }); method.AddParameter(new CodeParameter { Name = "r", Kind = CodeParameterKind.ResponseHandler, Type = stringType, }); method.AddParameter(new CodeParameter { Name = "c", Kind = CodeParameterKind.Cancellation, Type = stringType, }); }
public void ClosesNestedClasses() { var child = parentClass.AddInnerClass(new CodeClass { Name = "child" }).First(); codeElementWriter.WriteCodeElement(child.EndBlock as BlockEnd, writer); var result = tw.ToString(); Assert.Single(Regex.Matches(result, ".*end.*")); }
public void ClosesNestedClasses() { var child = parentClass.AddInnerClass(new CodeClass { Name = "child" }).First(); codeElementWriter.WriteCodeElement(child.EndBlock as BlockEnd, writer); var result = tw.ToString(); Assert.Equal(1, result.Count(x => x == '}')); }
private void AddRequestBodyParameters() { var stringType = new CodeType { Name = "string", }; var requestConfigClass = parentClass.AddInnerClass(new CodeClass { Name = "RequestConfig", Kind = CodeClassKind.RequestConfiguration, }).First(); requestConfigClass.AddProperty(new() { Name = "h", Kind = CodePropertyKind.Headers, Type = stringType, }, new () { Name = "q", Kind = CodePropertyKind.QueryParameters, Type = stringType, }, new () { Name = "o", Kind = CodePropertyKind.Options, Type = stringType, }); method.AddParameter(new CodeParameter { Name = "b", Kind = CodeParameterKind.RequestBody, Type = stringType, }); method.AddParameter(new CodeParameter { Name = "config", Kind = CodeParameterKind.RequestConfiguration, Type = new CodeType { Name = "RequestConfig", TypeDefinition = requestConfigClass, ActionOf = true, }, Optional = true, }); method.AddParameter(new CodeParameter { Name = "r", Kind = CodeParameterKind.ResponseHandler, Type = stringType, }); }
public void WriteRequestGenerator() { parentClass.Kind = CodeClassKind.RequestBuilder; parentClass.AddProperty( new CodeProperty() { Name = "urlTemplate", Access = AccessModifier.Protected, DefaultValue = "https://graph.microsoft.com/v1.0/", Description = "The URL template", Kind = CodePropertyKind.UrlTemplate, Type = new CodeType() { Name = "string" } }, new CodeProperty() { Name = "pathParameters", Access = AccessModifier.Protected, DefaultValue = "[]", Description = "The Path parameters.", Kind = CodePropertyKind.PathParameters, Type = new CodeType() { Name = "array" } }, new CodeProperty() { Name = "requestAdapter", Access = AccessModifier.Protected, Description = "The request Adapter", Kind = CodePropertyKind.RequestAdapter, Type = new CodeType() { IsNullable = false, Name = "RequestAdapter" } }); var codeMethod = new CodeMethod() { Name = "createPostRequestInformation", ReturnType = new CodeType() { Name = "RequestInformation", IsNullable = false }, Access = AccessModifier.Public, Description = "This method creates request information for POST request.", HttpMethod = HttpMethod.Post, BaseUrl = "https://graph.microsoft.com/v1.0/", Kind = CodeMethodKind.RequestGenerator, }; var stringType = new CodeType { Name = "string", IsNullable = false }; var requestConfigClass = parentClass.AddInnerClass(new CodeClass { Name = "RequestConfig", Kind = CodeClassKind.RequestConfiguration, }).First(); requestConfigClass.AddProperty(new() { Name = "h", Kind = CodePropertyKind.Headers, Type = stringType, }, new () { Name = "q", Kind = CodePropertyKind.QueryParameters, Type = stringType, }, new () { Name = "o", Kind = CodePropertyKind.Options, Type = stringType, }); codeMethod.AddParameter( new CodeParameter() { Name = "body", Kind = CodeParameterKind.RequestBody, Type = new CodeType() { Name = "Message", IsExternal = true, IsNullable = false } }, new CodeParameter { Name = "config", Kind = CodeParameterKind.RequestConfiguration, Type = new CodeType { Name = "RequestConfig", TypeDefinition = requestConfigClass, ActionOf = true, }, Optional = true, }); parentClass.AddMethod(codeMethod); _codeMethodWriter.WriteCodeElement(codeMethod, languageWriter); var result = stringWriter.ToString(); Assert.Contains( "public function createPostRequestInformation(Message $body, ?RequestConfig $requestConfiguration = null): RequestInformation", result); Assert.Contains("if ($requestConfiguration !== null", result); Assert.Contains("if ($requestConfiguration->h !== null)", result); Assert.Contains("$requestInfo->headers = array_merge($requestInfo->headers, $requestConfiguration->h);", result); Assert.Contains("$requestInfo->setQueryParameters($requestConfiguration->q);", result); Assert.Contains("$requestInfo->addRequestOptions(...$requestConfiguration->o);", result); Assert.Contains("return $requestInfo;", result); }