Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.core.files.storage import Storage
- from django.conf import settings
- import json, httplib, os
- import logging
- logger = logging.getLogger('project.parse')
- class ParseStorage(Storage):
- def __init__(self, option=None):
- print "Initializing a ParseStorage"
- logger.debug("Initializing a ParseStorage")
- def send(self, name, data):
- logger.debug("ParseStorage sending %s" % name)
- connection = httplib.HTTPSConnection('api.parse.com', 443)
- connection.connect()
- connection.request('POST', '/1/files/%s' % name, data, {
- "X-Parse-Application-Id": settings.PARSE_APPLICATION_ID,
- "X-Parse-REST-API-Key": settings.PARSE_API_KEY,
- "Content-Type": "image/jpeg"
- })
- result = json.loads(connection.getresponse().read())
- logger.debug("Send Result: %s" % result)
- return result
- def fetch(self, name):
- connection = httplib.HTTPSConnection('file.parse.com', 443)
- connection.connect()
- connection.request('GET', name, '', {})
- result = connection.getresponse().read()
- def delete(self, name):
- logger.debug("ParseStorage deleting %s" % name)
- connection = httplib.HTTPSConnection('api.parse.com', 443)
- connection.connect()
- connection.request('DELETE', '/1/files/%s' % name, '', {
- "X-Parse-Application-Id": settings.PARSE_APPLICATION_ID,
- "X-Parse-Master-Key": settings.PARSE_MASTER_KEY,
- })
- result = json.loads(connection.getresponse().read())
- def url(self, name):
- logger.debug("Getting URL for %s" % name)
- return 'http://files.parse.com/gibberish/%s' % os.path.basename(name)
- def path(self, name):
- logger.debug("Getting path for %s" % name)
- raise NotImplementedError
- def exists(self, name):
- # Parse ensures that you can always add a file named "name"
- # TODO: This has to check that the whatever exists, or everything gets uploaded *again*
- logger.debug("Checking existence of: %s" % name)
- return False
- def listdir(self):
- logger.debug("Listing contents of directory")
- raise NotImplementedError
- def size(self, name):
- logger.debug("Checking size of file: %s" % name)
- raise NotImplementedError
- def _save(self, name, path):
- logger.debug("ParseStorage saving %s at %s" % (name, path))
- parse_name = self.send(os.path.basename(name), path)['name']
- logger.debug("ParseStorage saved as %s" % parse_name)
- return parse_name
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement