Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module ResponseMapping
- open Newtonsoft.Json.Linq
- open Aggregation
- /// Add each response to a json object
- /// Use the Rel for Fetch requests or the Href for Follow requests as the property name
- let defaultMapper responses =
- let response = JObject()
- responses
- |> List.iter
- (function
- | CompletedFollow { Content = data; Href = uri } -> response.[uri] <- data
- | CompletedFetch { Content = data; Rel = rel } -> response.[rel] <- data)
- response
- /// Follow responses are added to an array of key value pairs
- /// the key in each pair is the href, the array is identified by the follow rel
- let codableMapper responses =
- let response = JObject()
- responses
- |> List.choose (function | CompletedFetch x -> Some x | _ -> None)
- |> List.iter (fun { Content = data; Rel = rel } -> response.[rel] <- data)
- responses
- |> List.choose (function | CompletedFollow x -> Some x | _ -> None)
- |> List.groupBy (fun x -> x.Rel)
- |> List.iter
- (fun (key, rs) ->
- let responseArray = JArray()
- rs
- |> List.iter
- (fun r ->
- let entry = JObject()
- entry.["uri"] <- JValue(r.Href)
- entry.["body"] <- r.Content
- responseArray.Add entry)
- response.[key] <- responseArray)
- response
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement