1
1
module Network.HTTP.Affjax.Response
2
- ( ResponseContent ()
2
+ ( ResponseType (), responseTypeToString
3
+ , ResponseContent ()
3
4
, Respondable , responseType , fromResponse
4
5
) where
5
6
@@ -9,10 +10,41 @@ import Data.Foreign (Foreign(), F(), readString, parseJSON, unsafeReadTagged)
9
10
import DOM (Document ())
10
11
import DOM.File (Blob ())
11
12
import DOM.XHR (FormData ())
12
- import Network.HTTP.Affjax.ResponseType
13
13
import Type.Proxy (Proxy ())
14
14
import qualified Data.ArrayBuffer.Types as A
15
15
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
+
16
48
-- | Type representing content types that be received from an XHR request
17
49
-- | (Blob, Document, JSON, String).
18
50
type ResponseContent = Foreign
0 commit comments