Procházet zdrojové kódy

companion: fix the thumbnail for Box provider (#2630)

* companion: fix box provider tests + remove unused e2e test files

* companion,box: fix thumbnails and user email for box provider
Ifedapo .A. Olarewaju před 4 roky
rodič
revize
9e07c9900c

+ 0 - 104
packages/@uppy/box/package-lock.json

@@ -1,104 +0,0 @@
-{
-  "name": "@uppy/box",
-  "version": "1.4.15",
-  "lockfileVersion": 1,
-  "requires": true,
-  "dependencies": {
-    "@uppy/companion-client": {
-      "version": "file:../companion-client",
-      "requires": {
-        "@uppy/utils": "file:../utils",
-        "namespace-emitter": "^2.0.1"
-      },
-      "dependencies": {
-        "@uppy/utils": {
-          "version": "file:../utils",
-          "requires": {
-            "abortcontroller-polyfill": "^1.4.0",
-            "lodash.throttle": "^4.1.1"
-          },
-          "dependencies": {
-            "abortcontroller-polyfill": {
-              "version": "1.5.0",
-              "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.5.0.tgz",
-              "integrity": "sha512-O6Xk757Jb4o0LMzMOMdWvxpHWrQzruYBaUruFaIOfAQRnWFxfdXYobw12jrVHGtoXk6WiiyYzc0QWN9aL62HQA=="
-            },
-            "lodash.throttle": {
-              "version": "4.1.1",
-              "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-              "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
-            }
-          }
-        },
-        "namespace-emitter": {
-          "version": "2.0.1",
-          "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz",
-          "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g=="
-        }
-      }
-    },
-    "@uppy/provider-views": {
-      "version": "file:../provider-views",
-      "requires": {
-        "@uppy/utils": "file:../utils",
-        "classnames": "^2.2.6",
-        "preact": "8.2.9"
-      },
-      "dependencies": {
-        "@uppy/utils": {
-          "version": "file:../utils",
-          "requires": {
-            "abortcontroller-polyfill": "^1.4.0",
-            "lodash.throttle": "^4.1.1"
-          },
-          "dependencies": {
-            "abortcontroller-polyfill": {
-              "version": "1.5.0",
-              "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.5.0.tgz",
-              "integrity": "sha512-O6Xk757Jb4o0LMzMOMdWvxpHWrQzruYBaUruFaIOfAQRnWFxfdXYobw12jrVHGtoXk6WiiyYzc0QWN9aL62HQA=="
-            },
-            "lodash.throttle": {
-              "version": "4.1.1",
-              "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-              "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
-            }
-          }
-        },
-        "classnames": {
-          "version": "2.2.6",
-          "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
-          "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
-        },
-        "preact": {
-          "version": "8.2.9",
-          "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.9.tgz",
-          "integrity": "sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA=="
-        }
-      }
-    },
-    "@uppy/utils": {
-      "version": "file:../utils",
-      "requires": {
-        "abortcontroller-polyfill": "^1.4.0",
-        "lodash.throttle": "^4.1.1"
-      },
-      "dependencies": {
-        "abortcontroller-polyfill": {
-          "version": "1.5.0",
-          "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.5.0.tgz",
-          "integrity": "sha512-O6Xk757Jb4o0LMzMOMdWvxpHWrQzruYBaUruFaIOfAQRnWFxfdXYobw12jrVHGtoXk6WiiyYzc0QWN9aL62HQA=="
-        },
-        "lodash.throttle": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
-          "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
-        }
-      }
-    },
-    "preact": {
-      "version": "8.2.9",
-      "resolved": "https://registry.npmjs.org/preact/-/preact-8.2.9.tgz",
-      "integrity": "sha512-ThuGXBmJS3VsT+jIP+eQufD3L8pRw/PY3FoCys6O9Pu6aF12Pn9zAJDX99TfwRAFOCEKm/P0lwiPTbqKMJp0fA=="
-    }
-  }
-}

+ 1 - 5
packages/@uppy/companion/src/server/provider/box/adapter.js

@@ -1,10 +1,6 @@
 const mime = require('mime-types')
 const querystring = require('querystring')
 
-exports.getUsername = (data) => {
-  return data.login
-}
-
 exports.isFolder = (item) => {
   return item.type === 'folder'
 }
@@ -49,6 +45,6 @@ exports.getNextPagePath = (data) => {
   if (data.total_count < data.limit || data.offset + data.limit > data.total_count) {
     return null
   }
-  const query = { offset: data.offset + data.limit }
+  const query = { cursor: data.offset + data.limit }
   return `?${querystring.stringify(query)}`
 }

+ 22 - 6
packages/@uppy/companion/src/server/provider/box/index.js

@@ -38,13 +38,13 @@ class Box extends Provider {
    * @param {object} options
    * @param {function} done
    */
-  list ({ directory, token, companion }, done) {
+  list ({ directory, token, query, companion }, done) {
     const rootFolderID = '0'
     const path = `folders/${directory || rootFolderID}/items`
 
     this.client
       .get(path)
-      .qs({ fields: BOX_FILES_FIELDS })
+      .qs({ fields: BOX_FILES_FIELDS, offset: query.cursor })
       .auth(token)
       .request((err, resp, body) => {
         if (err || resp.statusCode !== 200) {
@@ -58,7 +58,7 @@ class Box extends Provider {
               logger.error(err, 'provider.token.user.error')
               return done(err)
             }
-            done(null, this.adaptData(body, companion))
+            done(null, this.adaptData(body, infoResp.body.login, companion))
           })
         }
       })
@@ -90,7 +90,23 @@ class Box extends Provider {
       .auth(token)
       .request()
       .on('response', (resp) => {
-        if (![200, 202].includes(resp.statusCode)) {
+        // box generates a thumbnail on first request
+        // so they return a placeholder in the header while that's happening
+        if (resp.statusCode === 202 && resp.headers.location) {
+          return this.client.get(resp.headers.location)
+            .request()
+            .on('response', (placeholderResp) => {
+              if (placeholderResp.statusCode !== 200) {
+                const err = this._error(null, placeholderResp)
+                logger.error(err, 'provider.box.thumbnail.error')
+                return done(err)
+              }
+
+              done(null, placeholderResp)
+            })
+        }
+
+        if (resp.statusCode !== 200) {
           const err = this._error(null, resp)
           logger.error(err, 'provider.box.thumbnail.error')
           return done(err)
@@ -139,8 +155,8 @@ class Box extends Provider {
       })
   }
 
-  adaptData (res, companion) {
-    const data = { username: adapter.getUsername(res), items: [] }
+  adaptData (res, username, companion) {
+    const data = { username, items: [] }
     const items = adapter.getItemSubList(res)
     items.forEach((item) => {
       data.items.push({