Advertisement
eduardoperezl

__init__.py

May 27th, 2016
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.65 KB | None | 0 0
  1. from .myxblock import MyXBlock
  2.  
  3. import json
  4.  
  5. import flask
  6.  
  7. import httplib2
  8.  
  9. from apiclient import discovery
  10. from oauth2client import client
  11. from oauth2client.client import OAuth2WebServerFlow
  12.  
  13.  
  14. app = flask.Flask(__name__)
  15.  
  16. @app.route('/')
  17. def index():
  18.   file_type="document"
  19.   if 'credentials' not in flask.session:
  20.     return flask.redirect(flask.url_for('oauth2callback'))
  21.   credentials = client.OAuth2Credentials.from_json(flask.session['credentials'])
  22.   if credentials.access_token_expired:
  23.     return flask.redirect(flask.url_for('oauth2callback'))
  24.   else:
  25.     http_auth = credentials.authorize(httplib2.Http())
  26.     drive_service = discovery.build('drive', 'v3', http_auth)
  27.     files = drive_service.files().list(q="'root' in parents",fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
  28.     items = files.get('files', [])
  29.     return flask.render_template('index.html', files = items, file_url=flask.request.args.get('file_url'), file_type=file_type)
  30.  
  31. @app.route('/oauth2callback')
  32. def oauth2callback():
  33.     # flow = OAuth2WebServerFlow(client_id='423613277287-c78e5ua452hk5d02ftfb0f0ebckfaco3.apps.googleusercontent.com', client_secret='50Iv1Nnr_syC4jFBOK4BrBwf', scope='https://www.googleapis.com/auth/drive', redirect_uri=flask.url_for('oauth2callback', _external=True))
  34.     flow = client.flow_from_clientsecrets('/var/www/pydrive/pythonapp/client_secrets.json', scope='https://www.googleapis.com/auth/drive', redirect_uri=flask.url_for('oauth2callback', _external=True))
  35.     if 'code' not in flask.request.args:
  36.         auth_uri = flow.step1_get_authorize_url()
  37.         return flask.redirect(auth_uri)
  38.     elif 'code' in flask.request.args:
  39.         auth_code = flask.request.args.get('code')
  40.         credentials = flow.step2_exchange(auth_code)
  41.         flask.session['credentials'] = credentials.to_json()
  42.         return flask.redirect(flask.url_for('index'))
  43.     else:
  44.         auth_code = flask.request.args.get('code')
  45.         credentials = flow.step2_exchange(auth_code)
  46.         flask.session['credentials'] = credentials.to_json()
  47.         return "404"
  48.  
  49. @app.route('/folder/', methods=['GET', 'POST'])
  50. def folder():
  51.   folder_id = flask.request.args.get('id')
  52.   folder_name = flask.request.args.get('name')
  53.   credentials = client.OAuth2Credentials.from_json(flask.session['credentials'])  
  54.   http_auth = credentials.authorize(httplib2.Http())
  55.   drive_service = discovery.build('drive', 'v3', http_auth)
  56.   files = drive_service.files().list(q="'{0}' in parents".format(folder_id), fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
  57.   items = files.get('files', [])
  58.   return flask.render_template('folder.html', files=items, folder_name=folder_name, folder_id=folder_id, file_url=flask.request.args.get('file_url'))
  59.  
  60. @app.route('/new')
  61. def new():
  62.   credentials = client.OAuth2Credentials.from_json(flask.session['credentials'])
  63.   http_auth = credentials.authorize(httplib2.Http())
  64.   drive_service = discovery.build('drive', 'v3', http_auth)
  65.   if flask.request.args.get('folder_id'):
  66.     folder_id = flask.request.args.get('folder_id')
  67.   else:
  68.     folder_id = 'root'
  69.  
  70.   file_metadata = {
  71.     'mimeType' : 'application/vnd.google-apps.'+flask.request.args.get('type'),
  72.     'parents': [ folder_id ]
  73.   }
  74.   file = drive_service.files().create(body=file_metadata, fields='id, webViewLink').execute()
  75.   file_url = file.get("webViewLink")
  76.   if flask.request.args.get('folder_id'):
  77.     return flask.redirect(flask.url_for('folder', file_url=file_url, id=folder_id, name=flask.request.args.get('folder_name')))
  78.   return flask.redirect(flask.url_for('index', file_url=file_url))
  79.  
  80. if __name__ == '__main__':
  81.   app.debug = True
  82.   app.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement