11module Network.HTTP.Affjax.Response
2- ( ResponseContent ()
2+ ( ResponseType (), responseTypeToString
3+ , ResponseContent ()
34 , Respondable , responseType , fromResponse
45 ) where
56
@@ -9,10 +10,41 @@ import Data.Foreign (Foreign(), F(), readString, parseJSON, unsafeReadTagged)
910import DOM (Document ())
1011import DOM.File (Blob ())
1112import DOM.XHR (FormData ())
12- import Network.HTTP.Affjax.ResponseType
1313import Type.Proxy (Proxy ())
1414import qualified Data.ArrayBuffer.Types as A
1515
16+ -- | Valid response types for an AJAX request. This is used to determine the
17+ -- | `ResponseContent` type for a request.
18+ data ResponseType
19+ = ArrayBufferResponse
20+ | BlobResponse
21+ | DocumentResponse
22+ | JSONResponse
23+ | StringResponse
24+
25+ instance eqResponseType :: Eq ResponseType where
26+ (==) ArrayBufferResponse ArrayBufferResponse = true
27+ (==) BlobResponse BlobResponse = true
28+ (==) DocumentResponse DocumentResponse = true
29+ (==) JSONResponse JSONResponse = true
30+ (==) StringResponse StringResponse = true
31+ (==) _ _ = false
32+ (/=) x y = not (x == y)
33+
34+ instance showResponseType :: Show ResponseType where
35+ show ArrayBufferResponse = " ArrayBufferResponse"
36+ show BlobResponse = " BlobResponse"
37+ show DocumentResponse = " DocumentResponse"
38+ show JSONResponse = " JSONResponse"
39+ show StringResponse = " StringResponse"
40+
41+ responseTypeToString :: ResponseType -> String
42+ responseTypeToString ArrayBufferResponse = " arraybuffer"
43+ responseTypeToString BlobResponse = " blob"
44+ responseTypeToString DocumentResponse = " document"
45+ responseTypeToString JSONResponse = " json"
46+ responseTypeToString StringResponse = " text"
47+
1648-- | Type representing content types that be received from an XHR request
1749-- | (Blob, Document, JSON, String).
1850type ResponseContent = Foreign
0 commit comments