emscripten Humble Cloud interface
Aaron Mandle
2014-08-21 24eff0832c7bdc929616fd6940ffdf77ab3de785

add CloudFile provider, and some code style fixes

2 files modified
1 files added
1 files deleted
142 ■■■■■ changed files
client/CMakeLists.txt 2 ●●● patch | view | raw | blame | history
client/test/shell.html 2 ●●● patch | view | raw | blame | history
humble_cloud/cloud_file.js 96 ●●●●● patch | view | raw | blame | history
humble_cloud/humble_cloud.js 42 ●●●●● patch | view | raw | blame | history
client/CMakeLists.txt
@@ -15,7 +15,7 @@
INCLUDES
    library
COPY_FILES
    ../humble_cloud/humble_cloud.js
    ../humble_cloud/cloud_File.js
    ../humble_cloud/urkle_cloud.js
ASM_FLAG
    NO_EXIT_RUNTIME=1
client/test/shell.html
@@ -1218,7 +1218,7 @@
    </div>
    <textarea id="output" rows="8"></textarea>
    <script type='text/javascript' src="humble_cloud.js"></script>
    <script type='text/javascript' src="cloud_file.js"></script>
    <script type='text/javascript' src="urkle_cloud.js"></script>
    <script type='text/javascript'>
      var statusElement = document.getElementById('status');
humble_cloud/cloud_file.js
New file
@@ -0,0 +1,96 @@
(function () {
  'use strict';
  window.CloudFile = function () {
    var that = this;
    var API_ROOT = '/api/v1/cloudfile/';
    function apiRoute(resource) {
      return window.location.origin + API_ROOT + resource;
    }
    this.uploadEndPoints = [];
    var requestUploadUrls = function (completedCallback) {
      $.ajax({
        url: apiRoute('generate_upload_urls'),
        type: "GET",
        success: function (response) {
          that.uploadEndPoints = that.uploadEndPoints.concat(response);
          completedCallback();
        }
      });
    };
    this.write = function (filepath, value, onSuccess, onError) {
      var formdata = new FormData();
      formdata.append('data', new Blob([value]), filepath);
      var endPoint = that.uploadEndPoints.pop();
      if (endPoint === undefined) {
        requestUploadUrls(function () {
          that.write(filepath, value)
        });
      } else {
        $.ajax({
          url: endPoint,
          type: "POST",
          data: formdata,
          processData: false,
          contentType: false,
          success: onSuccess,
          error: onError
        });
      }
    };
    this.read = function (filepath, onSuccess, onError) {
      $.ajax({
        url: apiRoute(filepath),
        type: "GET",
        success: onSuccess,
        error: onError
      });
    };
    this.rm = function (filepath, onSuccess, onError) {
      $.ajax({
        url: apiRoute(filepath),
        type: "DELETE",
        success: onSuccess,
        error: onError
      });
    }
  }
})();
var CLOUD_PROVIDERS;
if (!CLOUD_PROVIDERS) CLOUD_PROVIDERS = (typeof CLOUD_PROVIDERS !== 'undefined' ? CLOUD_PROVIDERS : null) || {};
(function () {
  'use-strict';
  var cloudFile = new CloudFile();
  var namespacedPath = function (appToken, resource) {
    return appToken + resource;
  };
  CLOUD_PROVIDERS['CloudFile'] = {
    vendor: 'Humble Bundle Inc',
    listFiles: function (options, onSuccess, onError) {
      cloudFile.read(namespacedPath(options.applicationToken, '/'), onSuccess, function (err) {
        if (err.status == 404) { // not a real directory
          onSuccess([]);
        }
      });
    },
    downloadFile: function (options, url, onSuccess, onError) {
      cloudFile.read(namespacedPath(options.applicationToken, url), onSuccess, onError)
    },
    uploadFile: function (options, fileinfo, data, onSuccess, onError) {
      cloudFile.write(namespacedPath(options.applicationToken, fileinfo.path), data, onSuccess, onError)
    },
    removeFile: function (options, fileinfo, onSuccess, onError) {
      cloudFile.rm(namespacedPath(options.applicationToken, fileinfo.path), onSuccess, onError);
    }
  };
})();
humble_cloud/humble_cloud.js
File was deleted