I am creating a service using twisted web that allows clients to upload files
using HTTP put.
By reading through issue 288 I understand that the problems I am seeing are
have been seen before
and are outstanding issues. I have a solution that seems to work for me (I
have little concern for
POST thus my issue is mitigated) but I was hoping to get some community comment
on it.
My objective is 1) to authorize clients *before* they upload a large file to
temporary storage, and
2) decrease latency and increase throughput by eliminating the copy to temp
files.
I have achieved this by subclassing http.HTTPChannel and overloading
allHeadersReceived() in the
following way:
class MyHTTPChannel(http.HTTPChannel):
def allHeadersReceived(self):
http.HTTPChannel.allHeadersReceived(self)
... parse headers for access tokens
if not access_granted:
self.transport.write(<http error message>)
self.transport.loseConnection()
if self._command != "PUT":
return
req = self.requests[-1]
req.content = <create my own file-like object>
Then I create a site object:
class MySite(server.Site):
protocol = MyHTTPChannel
Thus far this seems to work nicely for me, but my knowledge of the twisted
internals is limited.
Does this seem at all reasonable?
Thanks,
John
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web