@@ -103,25 +103,27 @@ module HttpHandlers =
103103 ms
104104 match getMultipartRequestBoundary ctx.Request with
105105 | Some boundary ->
106- use ms = copyBodyToMemory( ctx.Request)
107- let reader = MultipartReader( boundary, ms)
108- let request = reader |> MultipartRequest.read |> Async.AwaitTask |> Async.RunSynchronously
109- let results =
110- request.Operations
111- |> List.map ( fun op ->
112- let result =
113- match op.Variables with
114- | Some variables ->
115- let variables = parseVariables Schema.schema ( parseVariableDefinitions op.Query) variables
116- Schema.executor.AsyncExecute( op.Query, variables = variables, data = root)
117- | None -> Schema.executor.AsyncExecute( op.Query, data = root)
118- result |> Async.RunSynchronously |> addRequestType " Multipart" )
119- match results with
120- | [ result ] ->
121- return ! okWithStr ( json result) next ctx
122- | results ->
123- let result = JArray.FromObject( List.map json results) .ToString()
124- return ! okWithStr result next ctx
106+ return ! task {
107+ use ms = copyBodyToMemory( ctx.Request)
108+ let reader = MultipartReader( boundary, ms)
109+ let! request = reader |> MultipartRequest.read ctx.RequestAborted
110+ let results =
111+ request.Operations
112+ |> List.map ( fun op ->
113+ let result =
114+ match op.Variables with
115+ | Some variables ->
116+ let variables = parseVariables Schema.schema ( parseVariableDefinitions op.Query) variables
117+ Schema.executor.AsyncExecute( op.Query, variables = variables, data = root)
118+ | None -> Schema.executor.AsyncExecute( op.Query, data = root)
119+ result |> Async.RunSynchronously |> addRequestType " Multipart" )
120+ match results with
121+ | [ result ] ->
122+ return ! okWithStr ( json result) next ctx
123+ | results ->
124+ let result = JArray.FromObject( List.map json results). ToString()
125+ return ! okWithStr result next ctx
126+ }
125127 | None ->
126128 return ! badRequest ( text " Invalid multipart request header: missing boundary value." ) next ctx
127129 else
@@ -138,24 +140,23 @@ module HttpHandlers =
138140 | :? string as query -> Some ( query, getVariables ( parseVariableDefinitions query) data)
139141 | _ -> failwith " Failure deserializing repsonse. Could not read query - it is not stringified in request."
140142 else None)
141- match request with
142- | Some ( query, Some variables) ->
143- printfn " Received query: %s " query
144- printfn " Received variables: %A " variables
145- let query = removeWhitespacesAndLineBreaks query
146- let result = Schema.executor.AsyncExecute( query, root, variables) |> Async.RunSynchronously |> addRequestType " Classic"
147- printfn " Result metadata: %A " result.Metadata
148- return ! okWithStr ( json result) next ctx
149- | Some ( query, None) ->
150- printfn " Received query: %s " query
151- let query = removeWhitespacesAndLineBreaks query
152- let result = Schema.executor.AsyncExecute( query) |> Async.RunSynchronously |> addRequestType " Classic"
153- printfn " Result metadata: %A " result.Metadata
154- return ! okWithStr ( json result) next ctx
155- | None ->
156- let result = Schema.executor.AsyncExecute( Introspection.IntrospectionQuery) |> Async.RunSynchronously |> addRequestType " Classic"
157- printfn " Result metadata: %A " result.Metadata
158- return ! okWithStr ( json result) next ctx
143+ let! result = task {
144+ match request with
145+ | Some ( query, Some variables) ->
146+ printfn " Received query: %s " query
147+ printfn " Received variables: %A " variables
148+ let query = removeWhitespacesAndLineBreaks query
149+ return ! Schema.executor.AsyncExecute( query, root, variables)
150+ | Some ( query, None) ->
151+ printfn " Received query: %s " query
152+ let query = removeWhitespacesAndLineBreaks query
153+ return ! Schema.executor.AsyncExecute( query)
154+ | None ->
155+ return ! Schema.executor.AsyncExecute( Introspection.IntrospectionQuery)
156+ }
157+ let result = result |> addRequestType " Classic"
158+ printfn " Result metadata: %A " result.Metadata
159+ return ! okWithStr ( json result) next ctx
159160 }
160161
161162 let webApp : HttpHandler =
0 commit comments