-- | Lenses for 'Network.HTTP.Conduit' types module Jenkins.REST.Lens ( -- * 'Request' lenses method, secure , host, port , path, queryString, requestBody, requestHeaders , redirectCount, checkStatus, responseTimeout ) where import Control.Applicative ((<$>)) import Control.Exception (SomeException) import Control.Lens import Data.ByteString (ByteString) import qualified Network.HTTP.Conduit as H import qualified Network.HTTP.Types as H -- | HTTP request method, eg GET, POST. method :: Lens' (H.Request m) H.Method method f req = (\m' -> req { H.method = m' }) <$> f (H.method req) -- | Whether to use HTTPS (ie, SSL). secure :: Lens' (H.Request m) Bool secure f req = (\s' -> req { H.secure = s' }) <$> f (H.secure req) host :: Lens' (H.Request m) ByteString host f req = (\h' -> req { H.host = h' }) <$> f (H.host req) port :: Lens' (H.Request m) Int port f req = (\p' -> req { H.port = p' }) <$> f (H.port req) -- | Everything from the host to the query string. path :: Lens' (H.Request m) ByteString path f req = (\p' -> req { H.path = p' }) <$> f (H.path req) queryString :: Lens' (H.Request m) ByteString queryString f req = (\qs' -> req { H.queryString = qs' }) <$> f (H.queryString req) requestBody :: Lens' (H.Request m) (H.RequestBody m) requestBody f req = (\rb' -> req { H.requestBody = rb' }) <$> f (H.requestBody req) requestHeaders :: Lens' (H.Request m) H.RequestHeaders requestHeaders f req = (\rh' -> req { H.requestHeaders = rh' }) <$> f (H.requestHeaders req) -- | How many redirects to follow when getting a resource. 0 means follow no redirects. Default value: 10. redirectCount :: Lens' (H.Request m) Int redirectCount f req = (\rc' -> req { H.redirectCount = rc' }) <$> f (H.redirectCount req) -- | Check the status code. Note that this will run after all redirects are performed. -- Default: return a StatusCodeException on non-2XX responses. checkStatus :: Lens' (H.Request m) (H.Status -> H.ResponseHeaders -> H.CookieJar -> Maybe SomeException) checkStatus f req = (\cs' -> req { H.checkStatus = cs' }) <$> f (H.checkStatus req) -- | Number of microseconds to wait for a response. If Nothing, will wait indefinitely. Default: 5 seconds. responseTimeout :: Lens' (H.Request m) (Maybe Int) responseTimeout f req = (\rt' -> req { H.responseTimeout = rt' }) <$> f (H.responseTimeout req)