Created
December 1, 2018 15:37
-
-
Save Szer/1cffb7ea5397979c898e28b8ca88e08f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
type optionBuilder() = | |
member __.Bind(opt, f) = Option.bind f opt | |
member __.Bind(obj, f) = Option.bind f (Option.ofObj obj) | |
member __.Bind(obj, f) = Option.bind f (Option.ofObj (box obj)) | |
member __.Bind(obj, f) = Option.bind f (Option.ofNullable obj) | |
member __.Return x = Some x | |
member __.ReturnFrom x = x | |
let option = optionBuilder() | |
type SwaggerDefaultValues () = | |
interface IOperationFilter with | |
member this.Apply(operation: Operation, context: OperationFilterContext) = | |
option { | |
let! op = operation | |
let! parameters = operation.Parameters | |
return parameters.OfType<NonBodyParameter>() | |
} | |
|> Option.defaultValue Seq.empty | |
|> Seq.map (fun parameter -> option { | |
let! paramDescription = | |
context.ApiDescription.ParameterDescriptions | |
|> Seq.tryFind (fun x -> x.Name = parameter.Name) | |
let! modelMetadata = description.ModelMetadata | |
let! description = modelMetadata.Description | |
if isNull parameter.Description then parameter.Description <- description | |
let! routeInfo = description.RouteInfo | |
if isNull parameter.Default then parameter.Default <- routeInfo.DefaultValue | |
parameter.Required <- (parameter.Required || (not routeInfo.IsOptional)) | |
}) | |
|> Seq.iter Option.iter |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment