azure-functions-openapi-extension icon indicating copy to clipboard operation
azure-functions-openapi-extension copied to clipboard

Type of TimeSpan incorrectly inferred as complex object instead of string

Open basilfx opened this issue 3 years ago • 3 comments
trafficstars

Describe the issue The type that is inferred for a TimeSpan is a complex object. Instead, I would expect a string (something like 1.00:00:00).

A simple HttpTrigger that returns an OkObjectResult serializes a TimeSpan to a string, whereas the extension resolves a complex object for its schema definition. If I am correct, the OkObjectResult uses the Newtonsoft.Json serializer.

I tried to 'override' it using a JsonConverter attribute, but that does not work. Neither does adding [DataType(DataType.Duration)].

To Reproduce See this demonstration project: https://github.com/basilfx/azure-functions-openapi-function-timespan

Expected behavior TimeSpan schema type is inferred as a string.

Screenshots Note how the result is different from the example schema.

Schermafbeelding 2022-03-23 om 22 28 54 Schermafbeelding 2022-03-23 om 22 46 27

Environment (please complete the following information, if applicable):

  • OS: macOS
  • Azure Functions v4
  • .NET SDK 6.0.102
  • OpenAPI Extension 1.2.0

basilfx avatar Mar 23 '22 21:03 basilfx

@basilfx Thanks for the issue! Did you mean the TimeSpan instance should look like this?

https://dotnetfiddle.net/tyLTMW

I mean the TimeSpan instance is serialised like above (as a string value), so the OpenAPI document should also follow it?

justinyoo avatar Mar 30 '22 07:03 justinyoo

Yes, that's what I would expect, and that is how Newtonsoft.Json (used by AF for serializing an IActionResult) serializes a TimeSpan by default.

basilfx avatar Mar 30 '22 07:03 basilfx

I am also running into this issue. As I am generating a client, the deserialization will fail.

snerte avatar Jun 02 '22 08:06 snerte

@justinyoo Any update on this issue? Anything I can do to help?

basilfx avatar Oct 18 '22 18:10 basilfx

Did you by chance find a workaround/fix?

sinantutan avatar Dec 16 '22 12:12 sinantutan