UNPKG

1.02 kBtext/coffeescriptView Raw
1Writer = require "../io/writer"
2Reader = require "../io/reader"
3_ = require "underscore"
4
5
6class ResponseReader extends Reader
7
8 ###
9 ###
10
11 _listenTo: () -> super().concat "headers"
12
13 ###
14 ###
15
16 _listen: () ->
17 super()
18 @on "headers", (headers) => @headers = headers
19
20
21 _dumpCached: (pipedReader) ->
22
23 pipedReader.emit "headers", @headers if @headers
24
25 super pipedReader
26
27
28module.exports = class Response extends Writer
29
30 ###
31 ###
32
33 constructor: (@messenger) ->
34 super()
35 @_headers = {}
36
37
38 ###
39 ###
40
41 headers: (typeOrObj, value) ->
42 if typeof typeOrObj == "object"
43 _.extend @_headers, typeOrObj
44 else
45 @_headers[typeOfObj] = value
46
47 ###
48 ###
49
50 write: (chunk, encoding = "utf8") ->
51 @sendHeaders()
52 super chunk, encoding
53
54 ###
55 ###
56
57 end: (chunk, encoding = "utf8") ->
58 @sendHeaders()
59 super chunk, encoding
60
61
62 ###
63 ###
64
65 sendHeaders: () ->
66 return @ if @sentHeaders
67 @sentHeaders = true
68 @emit "headers", @_headers
69 @
70
71 ###
72 ###
73
74 reader: () -> new ResponseReader @
75
76
77Writer::writable = true