def stop_dev(request_json, app_slug=None): user = db.get_user_from_creds(request_json.get('_clutch_username'), request_json.get('_clutch_password')) if not user: return utils.jsonrpc_error(request_json, 10) app = db.get_app_from_user_and_slug(user['id'], app_slug) if not app: return utils.jsonrpc_error({}, 9, {'app_slug': app_slug}) db.delete_dev_modes_for_user_and_app(user['id'], app['id']) return utils.jsonrpc_response(request_json, { 'development': 'inactive', })
def stop_dev(request_json, app_slug=None): user = db.get_user_from_creds( request_json.get('_clutch_username'), request_json.get('_clutch_password') ) if not user: return utils.jsonrpc_error(request_json, 10) app = db.get_app_from_user_and_slug(user['id'], app_slug) if not app: return utils.jsonrpc_error({}, 9, {'app_slug': app_slug}) db.delete_dev_modes_for_user_and_app(user['id'], app['id']) return utils.jsonrpc_response(request_json, { 'development': 'inactive', })
def start_dev(request_json, app_slug=None, url=None, toolbar=None): user = db.get_user_from_creds(request_json.get('_clutch_username'), request_json.get('_clutch_password')) if not user: return utils.jsonrpc_error(request_json, 10) app = db.get_app_from_user_and_slug(user['id'], app_slug) if not app: return utils.jsonrpc_error({}, 9, {'app_slug': app_slug}) if toolbar is None: toolbar = True db.create_or_update_dev_mode(app['id'], user['id'], url, toolbar) return utils.jsonrpc_response(request_json, { 'development': 'active', })
def start_dev(request_json, app_slug=None, url=None, toolbar=None): user = db.get_user_from_creds( request_json.get('_clutch_username'), request_json.get('_clutch_password') ) if not user: return utils.jsonrpc_error(request_json, 10) app = db.get_app_from_user_and_slug(user['id'], app_slug) if not app: return utils.jsonrpc_error({}, 9, {'app_slug': app_slug}) if toolbar is None: toolbar = True db.create_or_update_dev_mode(app['id'], user['id'], url, toolbar) return utils.jsonrpc_response(request_json, { 'development': 'active', })
def authenticate(request_json, username=None, password=None, app_slug=None): user = db.get_user_from_creds(username, password) user_dct = { 'user_id': user['id'], 'username': user['username'], 'email': user['email'], } if user else None # Start building up the request resp = {'user': user_dct} # Validate with an app slug if it's provided if app_slug is not None: app = db.get_app_from_user_and_slug(user['id'] if user else None, app_slug) if app: resp[app_slug] = True else: resp[app_slug] = False return utils.jsonrpc_response(request_json, resp)
def authenticate(request_json, username=None, password=None, app_slug=None): user = db.get_user_from_creds(username, password) user_dct = { 'user_id': user['id'], 'username': user['username'], 'email': user['email'], } if user else None # Start building up the request resp = {'user': user_dct} # Validate with an app slug if it's provided if app_slug is not None: app = db.get_app_from_user_and_slug( user['id'] if user else None, app_slug) if app: resp[app_slug] = True else: resp[app_slug] = False return utils.jsonrpc_response(request_json, resp)
def handle_upload(env, start_response): form = cgi.FieldStorage(fp=env['wsgi.input'], environ=env) if 'archive' not in form: return utils.jsonrpc_error({}, 4) app_slug = env.get('HTTP_X_APP_SLUG') if not app_slug: return utils.jsonrpc_error({}, 7) user = db.get_user_from_creds( env.get('HTTP_X_CLUTCH_USERNAME'), env.get('HTTP_X_CLUTCH_PASSWORD'), ) if not user: return utils.jsonrpc_error({}, 10) app = db.get_app_from_user_and_slug(user['id'], app_slug) if not app: return utils.jsonrpc_error({}, 9, {'app_slug': app_slug}) app_version = db.get_latest_app_version(app['id']) if app_version is None: app_version = 1 else: app_version += 1 tmp = StringIO(form['archive'].file.read()) extracted = tempfile.mkdtemp() zip_context = contextlib.closing( zipfile.ZipFile(tmp, 'r', zipfile.ZIP_DEFLATED)) with zip_context as z: namelist = z.namelist() for name in namelist: if name.startswith('..'): return utils.jsonrpc_error({}, 6, {'name': name}) if name.startswith('/'): return utils.jsonrpc_error({}, 6, {'name': name}) z.extractall(extracted) # Get rid of the StringIO for memory savings del tmp # Now we upload that to S3 conn = S3Connection(settings.AWS_ACCESS_KEY, settings.AWS_ACCESS_SECRET) bucket = conn.get_bucket(settings.AWS_BUCKET_NAME) for name in namelist: upload_fn = '%s/%s/files/%s' % (app_slug, app_version, name) key = bucket.new_key(upload_fn) key.set_contents_from_filename(os.path.join(extracted, name)) # Generate an md5 hash of each file in the upload hashes = {} for name in namelist: with open(os.path.join(extracted, name), 'r') as f: hashes[name] = hashlib.md5(f.read()).hexdigest() # JSON-encode the md5 hashes and upload them to s3 manifest = simplejson.dumps(hashes) manifest_key = '%s/%s/meta/manifest.json' % (app_slug, app_version) key = bucket.new_key(manifest_key) key.set_contents_from_string(manifest) # Delete the temporary directory shutil.rmtree(extracted) db.create_app_version(app['id'], app_version) return utils.jsonrpc_response({}, {'version': app_version})