Exemplo n.º 1
0
 def _handleDELETE(self, currentResource):
     if hasattr(currentResource, 'parse'):
         if self.env['CONTENT_TYPE'] in currentResource.parseContentTypes():
             currentResource.delete(
                 currentResource.parse(self.request.getBody(),
                                       self.env['CONTENT_TYPE']))
         else:
             raise restlite.Status('415 Unsupported Media Type')
     else:
         restObject.RestObject._handlePUT(self,
                                          currentResource)  # default PUT
Exemplo n.º 2
0
 def contentTypeNegotiate(self, accepts, providedTypes):
     accepts = accepts.split(',')
     prefs = []
     for accept in accepts:
         accept = accept.split(';')
         if len(accept) > 1:
             accept[1] = int(float(accept[1].strip('q=')) *
                             10)  # scale q values to 0..10
         else:
             accept.append(10)  # no q value means 1.0, scaled to 1..10
         prefs.append(accept)
     prefs.sort(lambda self, (x, y): y)
     for prefType in prefs:  # try highest to lowest q values, header order if equal
         for contentType in providedTypes:  # scan provided types for a match
             if contentType == prefType[0]:
                 return contentType
     if prefType[0] == '*/*':
         return providedTypes[
             0]  # return our favorite type if we don't have a preferred type and */* is allowed
     else:
         raise restlite.Status(
             '415 Unsupported Media Type'
         )  # no applicable type and client doesn't want whatever