FSharp.Data icon indicating copy to clipboard operation
FSharp.Data copied to clipboard

Provide a Http request type

Open codingedgar opened this issue 5 years ago • 1 comments

Currently FSharp.Data.Http.Request has multiple arguments:

static member Request
            (
                url,
                [<Optional>] ?query,
                [<Optional>] ?headers,
                [<Optional>] ?httpMethod,
                [<Optional>] ?body,
                [<Optional>] ?cookies,
                [<Optional>] ?cookieContainer,
                [<Optional>] ?silentHttpErrors,
                [<Optional>] ?silentCookieErrors,
                [<Optional>] ?responseEncodingOverride,
                [<Optional>] ?customizeHttpRequest,
                [<Optional>] ?timeout
            ) =
        Http.AsyncRequest(url, ?query=query, ?headers=headers, ?httpMethod=httpMethod, ?body=body, ?cookies=cookies, ?cookieContainer=cookieContainer,?silentCookieErrors=silentCookieErrors,
                          ?silentHttpErrors=silentHttpErrors, ?responseEncodingOverride=responseEncodingOverride, ?customizeHttpRequest=customizeHttpRequest, ?timeout=timeout)
        |> Async.RunSynchronously

Could this be a Type so we could use it/parse/store etc? Something like:

    type Request =
        { url: string
          query: option<list<string * string>>
          headers: option<seq<string * string>>
          httpMethod: option<string>
          body: option<FSharp.Data.HttpRequestBody>
          cookies: option<seq<string * string>>
          cookieContainer: option<System.Net.CookieContainer>
          silentHttpErrors: option<bool>
          silentCookieErrors: option<bool>
          responseEncodingOverride: option<string>
          customizeHttpRequest: option<System.Net.HttpWebRequest -> System.Net.HttpWebRequest>
          timeout: option<int> }

codingedgar avatar Jul 05 '20 17:07 codingedgar

type Request =
    { url: string
      query: option<list<string * string>>
      headers: option<seq<string * string>>
      httpMethod: option<string>
      body: option<FSharp.Data.HttpRequestBody>
      cookies: option<seq<string * string>>
      cookieContainer: option<System.Net.CookieContainer>
      silentHttpErrors: option<bool>
      silentCookieErrors: option<bool>
      responseEncodingOverride: option<string>
      customizeHttpRequest: option<System.Net.HttpWebRequest -> System.Net.HttpWebRequest>
      timeout: option<int> }

// Add the method below

static member Request(url, config) =
    Http.AsyncRequest(url, ?query = config.query, ... )
    |> Async.RunSynchronously

I think you can do this by overloading.

bongjunj avatar May 01 '23 10:05 bongjunj