Beispiel #1
0
    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);
        }