equal
deleted
inserted
replaced
24 |
24 |
25 HTTP_OK = hgwebcommon.HTTP_OK |
25 HTTP_OK = hgwebcommon.HTTP_OK |
26 HTTP_CREATED = hgwebcommon.HTTP_CREATED |
26 HTTP_CREATED = hgwebcommon.HTTP_CREATED |
27 HTTP_BAD_REQUEST = hgwebcommon.HTTP_BAD_REQUEST |
27 HTTP_BAD_REQUEST = hgwebcommon.HTTP_BAD_REQUEST |
28 HTTP_NOT_FOUND = hgwebcommon.HTTP_NOT_FOUND |
28 HTTP_NOT_FOUND = hgwebcommon.HTTP_NOT_FOUND |
|
29 HTTP_METHOD_NOT_ALLOWED = hgwebcommon.HTTP_METHOD_NOT_ALLOWED |
|
30 HTTP_NOT_ACCEPTABLE = hgwebcommon.HTTP_NOT_ACCEPTABLE |
|
31 HTTP_UNSUPPORTED_MEDIA_TYPE = hgwebcommon.HTTP_UNSUPPORTED_MEDIA_TYPE |
29 |
32 |
30 def handlewsgirequest(orig, rctx, req, res, checkperm): |
33 def handlewsgirequest(orig, rctx, req, res, checkperm): |
31 """Wrap wireprotoserver.handlewsgirequest() to possibly process an LFS |
34 """Wrap wireprotoserver.handlewsgirequest() to possibly process an LFS |
32 request if it is left unprocessed by the wrapped method. |
35 request if it is left unprocessed by the wrapped method. |
33 """ |
36 """ |
103 # } |
106 # } |
104 # ] |
107 # ] |
105 # "operation": "upload" |
108 # "operation": "upload" |
106 # } |
109 # } |
107 |
110 |
108 if (req.method != b'POST' |
111 if req.method != b'POST': |
109 or req.headers[b'Content-Type'] != b'application/vnd.git-lfs+json' |
112 _sethttperror(res, HTTP_METHOD_NOT_ALLOWED) |
110 or req.headers[b'Accept'] != b'application/vnd.git-lfs+json'): |
113 return True |
111 # TODO: figure out what the proper handling for a bad request to the |
114 |
112 # Batch API is. |
115 if req.headers[b'Content-Type'] != b'application/vnd.git-lfs+json': |
113 _sethttperror(res, HTTP_BAD_REQUEST, b'Invalid Batch API request') |
116 _sethttperror(res, HTTP_UNSUPPORTED_MEDIA_TYPE) |
|
117 return True |
|
118 |
|
119 if req.headers[b'Accept'] != b'application/vnd.git-lfs+json': |
|
120 _sethttperror(res, HTTP_NOT_ACCEPTABLE) |
114 return True |
121 return True |
115 |
122 |
116 # XXX: specify an encoding? |
123 # XXX: specify an encoding? |
117 lfsreq = json.loads(req.bodyfh.read()) |
124 lfsreq = json.loads(req.bodyfh.read()) |
118 |
125 |
313 res.status = hgwebcommon.statusmessage(422, b'corrupt blob') |
320 res.status = hgwebcommon.statusmessage(422, b'corrupt blob') |
314 res.setbodybytes(b'') |
321 res.setbodybytes(b'') |
315 |
322 |
316 return True |
323 return True |
317 else: |
324 else: |
318 _sethttperror(res, HTTP_BAD_REQUEST, |
325 _sethttperror(res, HTTP_METHOD_NOT_ALLOWED, |
319 message=b'Unsupported LFS transfer method: %s' % method) |
326 message=b'Unsupported LFS transfer method: %s' % method) |
320 return True |
327 return True |