h&@<      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~    Safe-Inferred(6;> S servant-client-coreSimple data type to represent the target of HTTP requests for servant's automatically-generated clients.servant-client-coreURI scheme to useservant-client-corehost (eg "haskell.org")servant-client-core port (eg 80) servant-client-core path (eg "ab/c") servant-client-coreURI scheme to use servant-client-corehttp:// servant-client-corehttps:// servant-client-core.showBaseUrl <$> parseBaseUrl "api.example.com""http://api.example.com"servant-client-coreparseBaseUrl "api.example.com"BaseUrl {baseUrlScheme = Http, baseUrlHost = "api.example.com", baseUrlPort = 80, baseUrlPath = ""}Note: trailing slash is removedparseBaseUrl "api.example.com/"BaseUrl {baseUrlScheme = Http, baseUrlHost = "api.example.com", baseUrlPort = 80, baseUrlPath = ""}#parseBaseUrl "api.example.com/dir/"BaseUrl {baseUrlScheme = Http, baseUrlHost = "api.example.com", baseUrlPort = 80, baseUrlPath = "/dir"}servant-client-core:{'traverse_ (LBS8.putStrLn . encode) $ do3 u1 <- parseBaseUrl "api.example.com" :: [BaseUrl]/ u2 <- parseBaseUrl "example.com" :: [BaseUrl]. return $ Map.fromList [(u1, 'x'), (u2, 'y')]:}7{"http://api.example.com":"x","http://example.com":"y"}servant-client-coreparseBaseUrl "api.example.com" >>= decode . encode :: Maybe BaseUrlJust (BaseUrl {baseUrlScheme = Http, baseUrlHost = "api.example.com", baseUrlPort = 80, baseUrlPath = ""})servant-client-coretraverse_ (LBS8.putStrLn . encode) (parseBaseUrl "api.example.com" :: [BaseUrl])"http://api.example.com"      Safe-Inferred  Safe-Inferred"689:; "servant-client-core#The request body. R replica of the  http-client  RequestBody.1servant-client-core3Append extra path to the request being constructed.Warning: This function assumes that the path fragment is already URL-encoded.2servant-client-core:Append a query parameter to the request being constructed.3servant-client-coreEncode a query parameter value.4servant-client-core,Add header to the request being constructed.5 servant-client-core9Set body and media type of the request being constructed.2The body is set to the given bytestring using the # constructor.6 servant-client-core9Set body and media type of the request being constructed.2servant-client-corequery param nameservant-client-corequery param value"#$%&'()*+,-./0123456&'()*+,-./"#$%0412365 Safe-Inferred" Cservant-client-core1Authenticate a request using Basic AuthenticationCC Safe-Inferred"@Dservant-client-coreFor better type inference and to avoid usage of a data family, we newtype wrap the combination of some G8 and a function to add authentication data to a request4NOTE: THIS API IS EXPERIMENTAL AND SUBJECT TO CHANGEGservant-client-coreFor a resource protected by authentication (e.g. AuthProtect), we need to provide the client with some data used to add authentication data to a request4NOTE: THIS API IS EXPERIMENTAL AND SUBJECT TO CHANGEHservant-client-core>Handy helper to avoid wrapping datatypes in tuples everywhere.4NOTE: THIS API IS EXPERIMENTAL AND SUBJECT TO CHANGEDEFGHGDEFH Safe-Inferred689:;IJKLMNOPJIKLMNOP Safe-Inferred"689:;Xservant-client-core0A type representing possible errors in a request2Note that this type substantially changed in 0.12.Yservant-client-coreThe server returned an error response including the failing request. ) includes the  and the path of the request.Zservant-client-core2The body could not be decoded at the expected type[servant-client-core1The content-type of the response is not supported\servant-client-core"The content-type header is invalid]servant-client-core:There was a connection error, and no response was received^servant-client-coreNote: an exception in ]( might not be evaluated fully, We only  its  ed value.XYZ[\]XYZ[\] Safe-Inferred "8cservant-client-corec cannot stream. Compare to h.iservant-client-coreHow to make a request, with an optional list of status codes to not throw exceptions for (default: [200..299]).kservant-client-coreHow to make a request. cdefghijk hijkfgcde Safe-Inferred"/012:nservant-client-coreA type that specifies that an API record contains a client implementation.oservant-client-core6Singleton type representing a client for an empty API.qservant-client-coreThis class lets us define how each API combinator influences the creation of an HTTP request.)Unless you are writing a new backend for servant-client-core or new combinators that you want to support client-generation, you can ignore this class.uservant-client-coreu allows you to produce operations to query an API from a client within a h monad. type MyApi = "books" :> Get '[JSON] [Book] -- GET /books :<|> "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book -- POST /books myApi :: Proxy MyApi myApi = Proxy clientM :: Proxy ClientM clientM = Proxy getAllBooks :: ClientM [Book] postNewBook :: Book -> ClientM Book (getAllBooks :<|> postNewBook) = myApi `clientIn` clientMvservant-client-core;Helper to make code using records of clients more readable./Can be mixed with (/:) for supplying arguments.Example: type Api = NamedRoutes RootApi data RootApi mode = RootApi { subApi :: mode :- NamedRoutes SubApi , @ } deriving Generic data SubApi mode = SubApi { endpoint :: mode :- Get '[JSON] Person , @ } deriving Generic api :: Proxy API api = Proxy rootClient :: RootApi (AsClientT ClientM) rootClient = client api endpointClient :: ClientM Person endpointClient = client // subApi // endpoint wservant-client-coreConvenience function for supplying arguments to client functions when working with records of clients.(Intended to be used in conjunction with v.Example: type Api = NamedRoutes RootApi data RootApi mode = RootApi { subApi :: mode :- Capture "token" String :> NamedRoutes SubApi , hello :: mode :- Capture "name" String :> Get '[JSON] String , @ } deriving Generic data SubApi mode = SubApi { endpoint :: mode :- Get '[JSON] Person , @ } deriving Generic api :: Proxy API api = Proxy rootClient :: RootApi (AsClientT ClientM) rootClient = client api hello :: String -> ClientM String hello name = rootClient // hello /: name endpointClient :: ClientM Person endpointClient = client // subApi /: "foobar123" // endpoint |servant-client-coreIgnore  in client functions. See  0https://ietf.org/rfc/rfc2616.html#section-15.1.3 for more details.Example: type MyApi = "books" :> Fragment Text :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooks :: ClientM [Book] getBooks = client myApi -- then you can just use "getBooksBy" to query that endpoint. -- 'getBooks' for all books.servant-client-core"Make the querying function append path to the request path.servant-client-core If you use a ReqBody in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your ReqBody. That function will take care of encoding this argument as JSON and of using it as the request body.(All you need is for your type to have a ToJSON instance.Example: type MyApi = "books" :> ReqBody '[JSON] Book :> Post '[JSON] Book myApi :: Proxy MyApi myApi = Proxy addBook :: Book -> ClientM Book addBook = client myApi -- then you can just use "addBook" to query that endpointservant-client-corePick a Method and specify where the server you want to query is. You get back the full K.servant-client-core If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional  argument. If you give ,, nothing will be added to the query string.Otherwise, this function will insert a value-less query string parameter under the name associated to your .Example: type MyApi = "books" :> QueryFlag "published" :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooks :: Bool -> ClientM [Book] getBooks = client myApi -- then you can just use "getBooks" to query that endpoint. -- 'getBooksBy False' for all books -- 'getBooksBy True' to only get _already published_ booksservant-client-core If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument, a list of values of the type specified by your .If you give an empty list, nothing will be added to the query string.Otherwise, this function will take care of inserting a textual representation of your values in the query string, under the same query string parameter name.You can control how values for your type are turned into text by specifying a  instance for your type.Example: type MyApi = "books" :> QueryParams "authors" Text :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooksBy :: [Text] -> ClientM [Book] getBooksBy = client myApi -- then you can just use "getBooksBy" to query that endpoint. -- 'getBooksBy []' for all books -- 'getBooksBy ["Isaac Asimov", "Robert A. Heinlein"]' -- to get all books by Asimov and Heinleinservant-client-core If you use a  QueryParam in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your  QueryParam, enclosed in Maybe.?If you give Nothing, nothing will be added to the query string.If you give a non- value, this function will take care of inserting a textual representation of this value in the query string.You can control how values for your type are turned into text by specifying a  instance for your type.Example: type MyApi = "books" :> QueryParam "author" Text :> Get '[JSON] [Book] myApi :: Proxy MyApi myApi = Proxy getBooksBy :: Maybe Text -> ClientM [Book] getBooksBy = client myApi -- then you can just use "getBooksBy" to query that endpoint. -- 'getBooksBy Nothing' for all books -- 'getBooksBy (Just "Isaac Asimov")' to get all books by Isaac Asimovservant-client-coreIgnore  in client functions.servant-client-coreIgnore  in client functions.servant-client-coreUsing a = combinator in your API doesn't affect the client functions.servant-client-core If you use a Header in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your Header, wrapped in Maybe.That function will take care of encoding this argument as Text in the request headers.(All you need is for your type to have a  instance.Example: newtype Referer = Referer { referrer :: Text } deriving (Eq, Show, Generic, ToHttpApiData) -- GET /view-my-referer type MyApi = "view-my-referer" :> Header "Referer" Referer :> Get '[JSON] Referer myApi :: Proxy MyApi myApi = Proxy viewReferer :: Maybe Referer -> ClientM Book viewReferer = client myApi -- then you can just use "viewRefer" to query that endpoint -- specifying Nothing or e.g Just "http://haskell.org/" as argumentsservant-client-core If you use a  in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of a list of the type specified by your . That function will take care of inserting a textual representation of this value at the right place in the request path.You can control how these values are turned into text by specifying a  instance of your type.Example: type MyAPI = "src" :> CaptureAll Text -> Get '[JSON] SourceFile myApi :: Proxy myApi = Proxy getSourceFile :: [Text] -> ClientM SourceFile getSourceFile = client myApi -- then you can use "getSourceFile" to query that endpointservant-client-core If you use a Capture in one of your endpoints in your API, the corresponding querying function will automatically take an additional argument of the type specified by your Capture. That function will take care of inserting a textual representation of this value at the right place in the request path.You can control how values for this type are turned into text by specifying a  instance for your type.Example: type MyApi = "books" :> Capture "isbn" Text :> Get '[JSON] Book myApi :: Proxy MyApi myApi = Proxy getBook :: Text -> ClientM Book getBook = client myApi -- then you can just use "getBook" to query that endpointservant-client-coreA client querying function for a  b5 will actually hand you one function for querying a and another one for querying b", stitching them together with #, which really is just like a pair. type MyApi = "books" :> Get '[JSON] [Book] -- GET /books :<|> "books" :> ReqBody '[JSON] Book :> Post Book -- POST /books myApi :: Proxy MyApi myApi = Proxy getAllBooks :: ClientM [Book] postNewBook :: Book -> ClientM Book (getAllBooks :<|> postNewBook) = client myApiservant-client-coreThe client for  is simply o. type MyAPI = "books" :> Get '[JSON] [Book] -- GET /books :<|> "nothing" :> EmptyAPI myApi :: Proxy MyApi myApi = Proxy getAllBooks :: ClientM [Book] (getAllBooks :<|> EmptyClient) = client myApi nopqrstuvw uqrstopnvwv1w2  Safe-Inferred:P% IJKLMNOPXYZ[\]nopqrstvw%qrstnvwJIKLMNOPXYZ[\]op   Safe-Inferred: "#$%&'()*+,-./0123456CDEFGHIJKLMNOPXYZ[\]fghijopqrstuuqrst&'()*+,-./0"#$%HCDEFGXYZ[\]opJKLMNOPhij fgI421563  Safe-Inferred)*;x*  IJKPONLMX]\[YZcdenopqtrsrvwcde  Safe-Inferred<servant-client-core&Generate a record of client functions.servant-client-core but with t in between.servant-client-corenatural transformationnn !"#$%&'()*+,-./01234546789:;<=>?@ABCDEFGHIJKLMNOPQQRSTUVWVXYZ[\]^_`abcdefghijklmnopqrstuvwxyzz{|}~    /servant-client-core-0.20-31rZir3E6qhBpePsaoJOZpServant.Client.Core.HasClientServant.Client.Core.BaseUrlServant.Client.Core.RequestServant.Client.Core.BasicAuthServant.Client.Core.AuthServant.Client.Core.ResponseServant.Client.Core.ClientErrorServant.Client.Core.RunClientServant.Client.FreeServant.Client.GenericServant.Client.Core.InternalServant.Client.Core.ReexportServant.Client.Core#servant-0.20-GjInsRzihxVJzApzfxsmRTServant.API.UVerb.Union matchUnion foldMapUnionInvalidBaseUrlExceptionBaseUrl baseUrlScheme baseUrlHost baseUrlPort baseUrlPathSchemeHttpHttps showBaseUrl parseBaseUrl$fFromJSONKeyBaseUrl$fToJSONKeyBaseUrl$fFromJSONBaseUrl$fToJSONBaseUrl $fEqBaseUrl$fNFDataBaseUrl"$fExceptionInvalidBaseUrlException$fShowInvalidBaseUrlException $fShowBaseUrl $fOrdBaseUrl$fGenericBaseUrl$fLiftBoxedRepBaseUrl $fDataBaseUrl $fShowScheme $fEqScheme $fOrdScheme$fGenericScheme$fLiftBoxedRepScheme $fDataScheme RequestBodyRequestBodyLBS RequestBodyBSRequestBodySourceRequestRequestF requestPathrequestQueryString requestBody requestAcceptrequestHeadersrequestHttpVersion requestMethoddefaultRequest appendToPathappendToQueryStringencodeQueryParamValue addHeadersetRequestBodyLBSsetRequestBody$fNFDataRequestF$fBitraversableRequestF$fBifoldableRequestF$fBifunctorRequestF$fShowRequestF$fShowRequestBody$fGenericRequestBody$fGenericRequestF $fEqRequestF$fFunctorRequestF$fFoldableRequestF$fTraversableRequestF basicAuthReqAuthenticatedRequest unAuthReqAuthClientDatamkAuthenticatedRequestStreamingResponseResponse ResponseFresponseStatusCoderesponseHeadersresponseHttpVersion responseBody$fNFDataResponseF $fEqResponseF$fShowResponseF$fGenericResponseF$fFunctorResponseF$fFoldableResponseF$fTraversableResponseF ClientErrorFailureResponse DecodeFailureUnsupportedContentTypeInvalidContentTypeHeaderConnectionError$fNFDataClientError$fExceptionClientError$fEqClientError$fShowClientError$fGenericClientErrorClientF RunRequestThrowRunStreamingClientwithStreamingRequest RunClientrunRequestAcceptStatusthrowClientError runRequest$fRunClientFree$fFunctorClientF AsClientT EmptyClient HasClientClientclientWithRoutehoistClientMonadclientIn///:$fHasClientmapi$fHasClientm:>$fHasClientm:>0$fHasClientm:>1$fHasClientm:>2$fHasClientm:>3$fHasClientm:>4$fHasClientmWithNamedContext$fHasClientm:>5$fHasClientm:>6$fHasClientm:>7$fHasClientm:>8$fHasClientm:>9$fHasClientm:>10$fHasClientmRawM$fHasClientmRaw$fHasClientm:>11$fHasClientm:>12$fHasClientm:>13$fHasClientm:>14$fHasClientm:>15$fHasClientm:>16$fHasClientm:>17$fHasClientmStream$fHasClientmStream0$fHasClientmVerb$fHasClientmVerb0$fHasClientmNoContentVerb$fHasClientmVerb1$fHasClientmVerb2$fHasClientm:>18$fHasClientm:>19$fHasClientm:<|>$fHasClientmEmptyAPI$fHasClientmUVerb$fUnrenderResponsectsWithStatus$fUnrenderResponsectsHeaders$fUnrenderResponsectsa$fGenericModeAsClientT$fHasClientmNamedRoutes $fGClientapim$fEqClientParseError$fShowClientParseError$fEqEmptyClient$fShowEmptyClient$fBoundedEmptyClient$fEnumEmptyClientclient genericClientgenericClientHoist mediaTypeRnfdeepseq-1.4.6.1Control.DeepSeqrnfbaseGHC.ShowshowServant.API.FragmentFragmentServant.API.QueryParam QueryFlagghc-prim GHC.TypesBoolFalse QueryParams*http-api-data-0.5.1-ANC48HMLgdD96mIwSzZ08hWeb.Internal.HttpApiData ToHttpApiData GHC.MaybeNothingServant.API.Description DescriptionSummary(http-types-0.12.3-L3rcKlUfVN0BViQ440kXJlNetwork.HTTP.Types.Version HttpVersionServant.API.Capture CaptureAllServant.API.Alternative:<|>Servant.API.EmptyEmptyAPI