-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHelpers.fs
More file actions
61 lines (45 loc) · 1.84 KB
/
Helpers.fs
File metadata and controls
61 lines (45 loc) · 1.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
namespace KnowIT.AzFunctions.Helpers
open System
[<RequireQualifiedAccess>]
module Environment =
let getVariable name =
Environment.GetEnvironmentVariable(name)
|> Option.ofObj
let getVariables =
Environment.GetEnvironmentVariables()
|> Seq.cast<Collections.DictionaryEntry>
|> Seq.map (fun e -> (string e.Key , string e.Value))
|> readOnlyDict
let getPrefixVariables (prefix: string) =
let prefix = prefix + "_"
getVariables
|> Seq.filter (fun kv ->
kv.Key.StartsWith(prefix, StringComparison.InvariantCultureIgnoreCase))
|> Seq.map (fun kv ->
(kv.Key.Substring(prefix.Length).TrimStart().ToUpper(), kv.Value))
|> readOnlyDict
module HttpRequest =
open Microsoft.AspNetCore.Http
let tryQueryValues name (request: HttpRequest) =
match request.Query.TryGetValue(name) with
| false, _ -> None
| true, values -> Some (values.ToArray())
let queryValues name (request: HttpRequest) =
tryQueryValues name request
|> Option.defaultValue Array.empty
let tryHeaderValues name (request: HttpRequest) =
match request.Headers.GetCommaSeparatedValues(name) with
| [||] -> None
| values -> Some values
let headerValues name (request: HttpRequest) =
request.Headers.GetCommaSeparatedValues(name)
let tryQueryOrHeaderValues name (request: HttpRequest) =
tryQueryValues name request
|> Option.orElse (tryHeaderValues name request)
let queryOrHeaderValues name (request: HttpRequest) =
tryQueryOrHeaderValues name request
|> Option.defaultValue Array.empty
let combineQueryAndHeaderValues name (request: HttpRequest) =
queryValues name request
|> Array.append (headerValues name request)
|> Array.distinct