open Microsoft.Azure.WebJobs open Microsoft.Azure.WebJobs.Extensions.Http open Microsoft.AspNetCore.Http open Microsoft.AspNetCore.Mvc module RM = WebSharper.Core.Remoting [<FunctionName("rpc")>] let runRpc( [<HttpTrigger(AuthorizationLevel.Anonymous, "get" , "post", "options", Route = "rpc")>] request : HttpRequest ) = async { let wsServer = RM.Server.Create WebSharper.Web.Shared.Metadata WebSharper.Web.Shared.Json let! body = request.ReadAsStringAsync() |> Async.AwaitTask let wsReq = { RM.Request.Body = body RM.Request.Headers = ParseO.tryParseWith request.Headers.TryGetValue >> Option.bind Seq.tryHead } let! wsResp = wsServer.HandleRequest wsReq return ContentResult(Content = wsResp.Content, ContentType = wsResp.ContentType) } |> Async.StartAsTask