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
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