Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- open System.Net.Http
- open System
- type RequestBuilder()=
- member this.Combine (a:HttpRequestMessage->HttpRequestMessage,b:HttpRequestMessage->HttpRequestMessage) = a>>b
- member this.Yield (())=fun r->r
- member this.Yield (r:HttpRequestMessage->HttpRequestMessage)=r
- member this.Delay(f)=f()
- [<CustomOperation("method")>]
- member this.Method(f:HttpRequestMessage->HttpRequestMessage,m:HttpMethod)=
- fun r->
- let request=f(r)
- request.Method<-m
- request
- [<CustomOperation("header")>]
- member this.Header(f:HttpRequestMessage->HttpRequestMessage,name:string,value:string)=
- fun r->
- let request=f(r)
- request.Headers.Add(name,value)
- request
- [<CustomOperation("url")>]
- member this.Url (f:HttpRequestMessage->HttpRequestMessage,uri)=
- fun r->
- let request=f(r)
- request.RequestUri<-new Uri(uri)
- request
- [<EntryPoint>]
- let main argv =
- let req =RequestBuilder()
- let request=req
- {
- method HttpMethod.Get
- url "http://lenta.ru"
- header "Authorization" "Basic"
- header "MyHeader" "MyValue"
- }
- let req2=req
- {
- method HttpMethod.Delete
- url "http://j.ru"
- }
- let getBuilder=req {method HttpMethod.Get}
- let headers= req{
- header "Authorization" "Basic"
- header "MyHeader" "MyValue"
- }
- let r1=req{
- yield getBuilder
- yield headers
- }
- printfn "%A" argv
- let r2=new HttpRequestMessage()|>r1
- 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement