API now returns files upon request

This commit is contained in:
2014-10-23 19:51:52 +02:00
parent 3bc16313ea
commit e1ad129dc4

View File

@@ -18,7 +18,7 @@
import os import os
from flask import Flask, jsonify, abort, request, make_response, url_for from flask import Flask, jsonify, abort, request, make_response, url_for, Response
from flask.views import MethodView from flask.views import MethodView
from flask.ext.restful import Api, Resource, reqparse, fields, marshal from flask.ext.restful import Api, Resource, reqparse, fields, marshal
from flask.ext.httpauth import HTTPBasicAuth from flask.ext.httpauth import HTTPBasicAuth
@@ -53,6 +53,7 @@ def unauthorized():
class FilesListAPI(Resource): class FilesListAPI(Resource):
"""Displays list of files.""" """Displays list of files."""
decorators = [auth.login_required] decorators = [auth.login_required]
def __init__(self): def __init__(self):
@@ -81,12 +82,10 @@ class FilesListAPI(Resource):
relative_path = os.path.join(path, f) relative_path = os.path.join(path, f)
absolute_path = os.path.join(absolute_path_root, f) absolute_path = os.path.join(absolute_path_root, f)
# we are going to pick up only blend files and folders if os.path.isdir(absolute_path):
if absolute_path.endswith('blend'):
# items[f] = relative_path
items_list.append((f, relative_path, 'blendfile'))
elif os.path.isdir(absolute_path):
items_list.append((f, relative_path, 'folder')) items_list.append((f, relative_path, 'folder'))
else:
items_list.append((f, relative_path, 'file'))
project_files = dict( project_files = dict(
parent_path=parent_path, parent_path=parent_path,
@@ -103,26 +102,16 @@ class FileAPI(Resource):
def __init__(self): def __init__(self):
parser = reqparse.RequestParser() parser = reqparse.RequestParser()
#parser.add_argument('rate', type=int, help='Rate cannot be converted') parser.add_argument('filepath', type=str, required=True,
parser.add_argument('filepath', type=str) help="Filepath cannot be blank!")
args = parser.parse_args() args = parser.parse_args()
# parser = reqparse.RequestParser()
# parser.add_argument('filepath', type=str, required=True,
# help="Filepath cannot be blank!")
# args = parser.parse_args()
super(FileAPI, self).__init__() super(FileAPI, self).__init__()
def get(self): def get(self):
filepath = os.path.join(app.config['STORAGE_PATH'], request.args['filepath']) filepath = os.path.join(app.config['STORAGE_PATH'], request.args['filepath'])
print (filepath) f = open(filepath, 'rb')
with open(filepath, 'r') as f: return Response(f, direct_passthrough=True)
body = f.read()
response = flask.make_response(body)
response.headers['content-type'] = 'application/octet-stream'
return response
return output_file(body, 200)
# return {'path': path}
api.add_resource(FilesListAPI, '/files', endpoint='files') api.add_resource(FilesListAPI, '/files', endpoint='files')