braid-http 0.3.14 → 0.3.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/braid-http-client.js +1 -1
- package/braid-http-server.js +20 -7
- package/package.json +1 -1
- package/readme.md +1 -1
package/braid-http-client.js
CHANGED
|
@@ -455,7 +455,7 @@ function parse_headers (input) {
|
|
|
455
455
|
|
|
456
456
|
// Let's parse them! First define some variables:
|
|
457
457
|
var headers = {},
|
|
458
|
-
header_regex = /([\w-_]+):\s?(.*)\r?\n?/gy, // Parses one line a time
|
|
458
|
+
header_regex = /(:?[\w-_]+):\s?(.*)\r?\n?/gy, // Parses one line a time
|
|
459
459
|
match,
|
|
460
460
|
found_last_match = false
|
|
461
461
|
|
package/braid-http-server.js
CHANGED
|
@@ -63,17 +63,27 @@ ${patch.content}`
|
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
|
|
66
|
-
//
|
|
67
|
-
// ReadableStream and then fires a callback when they're finished.
|
|
66
|
+
// Deprecated method for legacy support
|
|
68
67
|
function parse_patches (req, cb) {
|
|
68
|
+
parse_update(req, update => {
|
|
69
|
+
if (update.body)
|
|
70
|
+
// Return body as an "everything" patch
|
|
71
|
+
cb([{unit: 'everything', range: '', content: update.body}])
|
|
72
|
+
else
|
|
73
|
+
cb(update.patches)
|
|
74
|
+
})
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// This function reads an update (either a set of patches, or a body) from a
|
|
78
|
+
// ReadableStream and then fires a callback when finished.
|
|
79
|
+
function parse_update (req, cb) {
|
|
69
80
|
var num_patches = req.headers.patches
|
|
70
81
|
|
|
71
|
-
// Parse a request body as an "everything" patch
|
|
72
82
|
if (!num_patches && !req.headers['content-range']) {
|
|
73
83
|
var body = ''
|
|
74
84
|
req.on('data', chunk => {body += chunk.toString()})
|
|
75
85
|
req.on('end', () => {
|
|
76
|
-
cb(
|
|
86
|
+
cb({ body, patches: undefined })
|
|
77
87
|
})
|
|
78
88
|
}
|
|
79
89
|
|
|
@@ -95,7 +105,7 @@ function parse_patches (req, cb) {
|
|
|
95
105
|
// Then return it
|
|
96
106
|
req.on('end', () => {
|
|
97
107
|
patches = [{unit, range, content: Buffer.concat(buffer).toString('utf8')}]
|
|
98
|
-
cb(patches)
|
|
108
|
+
cb({ patches, body: undefined })
|
|
99
109
|
})
|
|
100
110
|
}
|
|
101
111
|
|
|
@@ -108,7 +118,7 @@ function parse_patches (req, cb) {
|
|
|
108
118
|
// We check to send send patches each time we parse one. But if there
|
|
109
119
|
// are zero to parse, we will never check to send them.
|
|
110
120
|
if (num_patches === 0)
|
|
111
|
-
return cb([])
|
|
121
|
+
return cb({ patches: [], body: undefined })
|
|
112
122
|
|
|
113
123
|
req.on('data', function parse (chunk) {
|
|
114
124
|
|
|
@@ -150,7 +160,7 @@ function parse_patches (req, cb) {
|
|
|
150
160
|
|
|
151
161
|
// We got all the patches! Pause the stream and tell the callback!
|
|
152
162
|
req.pause()
|
|
153
|
-
cb(patches)
|
|
163
|
+
cb({ patches, body: undefined })
|
|
154
164
|
})
|
|
155
165
|
req.on('end', () => {
|
|
156
166
|
// If the stream ends before we get everything, then return what we
|
|
@@ -195,6 +205,9 @@ function braidify (req, res, next) {
|
|
|
195
205
|
// Add the braidly request/response helper methods
|
|
196
206
|
res.sendUpdate = (stuff) => send_update(res, stuff, req.url, peer)
|
|
197
207
|
res.sendVersion = res.sendUpdate
|
|
208
|
+
req.parseUpdate = () => new Promise(
|
|
209
|
+
(done, err) => parse_update(req, (update) => done(update))
|
|
210
|
+
)
|
|
198
211
|
req.patches = () => new Promise(
|
|
199
212
|
(done, err) => parse_patches(req, (patches) => done(patches))
|
|
200
213
|
)
|
package/package.json
CHANGED
package/readme.md
CHANGED
|
@@ -129,7 +129,7 @@ async function connect () {
|
|
|
129
129
|
Braidify adds these fields and methods to requests and responses:
|
|
130
130
|
- `req.subscribe`
|
|
131
131
|
- `req.startSubscription({onClose: cb})`
|
|
132
|
-
- `await req.
|
|
132
|
+
- `await req.parseUpdate()`
|
|
133
133
|
- `res.sendUpdate()`
|
|
134
134
|
|
|
135
135
|
Use it like this:
|