Skip to content

Commit

Permalink
fix: remove file
Browse files Browse the repository at this point in the history
  • Loading branch information
annahassel committed Apr 2, 2024
1 parent 00ab81b commit bdb5b39
Show file tree
Hide file tree
Showing 5 changed files with 84 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/actions/clone.js
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ async function cloneFile(lock, ctx, params) {
// add mark to the original file
pipeline.hset(uploadKey, FILES_HAS_CLONES_FIELD, 1);

const provider = ctx.provider('remove', uploadData);
const provider = ctx.provider('remove', params, undefined, uploadData);
const prefix = md5(username);

const copyPromises = JSON.parse(mergedData.files).map(async (file) => {
Expand Down
9 changes: 9 additions & 0 deletions src/actions/cloudflare-stream.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
const { ActionTransport } = require('@microfleet/plugin-router');

async function cloudflareStreamWebhook() {

};

cloudflareStreamWebhook.transports = [ActionTransport.http];

module.exports = cloudflareStreamWebhook;
2 changes: 1 addition & 1 deletion src/actions/remove.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ function cleanupFileProvider(files, provider, log, opts = { concurrency: 20 }) {
async function removeFile({ params }) {
const { filename, username, softDelete } = params;
const { redis, log } = this;
const provider = this.provider('remove', params);
const key = `${FILES_DATA}:${filename}`;

const data = await Promise
Expand All @@ -56,6 +55,7 @@ async function removeFile({ params }) {
.then(isUnlisted)
.then(hasAccess(username))
.then(assertUpdatable({}, true));
const provider = this.provider('remove', params, undefined, data);

if (!softDelete && !isClone(data)) {
// we do not track this
Expand Down
28 changes: 18 additions & 10 deletions src/custom/cappasity-select-bucket.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,22 @@ const {
UPLOAD_TYPE_CLOUDFLARE_STREAM,
} = require('../constant');

function selectCloudflareStreamProvider(service) {
const cloudflareStream = service.providersByName[TRANSPORT_NAME_CLOUDFLARE_STREAM];

if (!cloudflareStream) {
throw new Error(`Missing provider ${TRANSPORT_NAME_CLOUDFLARE_STREAM}`);
}

return cloudflareStream;
}

// action handler
// if file is temporary, use provider index `1`
// if it's permanent - use index 0
function uploadSelector({ temp, uploadType }) {
if (uploadType === UPLOAD_TYPE_CLOUDFLARE_STREAM) {
const cloudflareStream = this.providersByName[TRANSPORT_NAME_CLOUDFLARE_STREAM];

if (!cloudflareStream) {
throw new Error(`Missing provider ${TRANSPORT_NAME_CLOUDFLARE_STREAM}`);
}

return cloudflareStream;
return selectCloudflareStreamProvider(this);
}

return this.providers[temp ? 1 : 0];
Expand All @@ -31,7 +35,11 @@ function uploadSelector({ temp, uploadType }) {
// * download
// * remove
// * access
function downloadSelector(opts, headers = {}) {
function downloadSelector(opts, headers = {}, uploadData = {}) {
if (uploadData.uploadType === UPLOAD_TYPE_CLOUDFLARE_STREAM) {
return selectCloudflareStreamProvider(this);
}

const bucket = headers['x-cappasity-source'] === 'cn-beijing'
? '3dshot'
: opts[FILES_BUCKET_FIELD];
Expand Down Expand Up @@ -67,14 +75,14 @@ const ACTION_TO_SELECTOR = Object.setPrototypeOf({
}, null);

// fn for selection
function selectTransport(action, opts, headers) {
function selectTransport(action, opts, headers, uploadData) {
const thunk = ACTION_TO_SELECTOR[action];

if (typeof thunk !== 'function') {
throw new Error(`${action} selector not defined`);
}

return thunk.call(this, opts, headers);
return thunk.call(this, opts, headers, uploadData);
}

// public API
Expand Down
63 changes: 55 additions & 8 deletions test/suites/upload.cloudflare-stream.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,14 @@ function overrideConfig() {
name: 'gce',
options: {
gce: {
projectId: process.env.GCLOUD_PROJECT_ID,
// projectId: process.env.GCLOUD_PROJECT_ID,
projectId: 'cappacity-3d',
credentials: {
client_email: process.env.GCLOUD_PROJECT_EMAIL,
private_key: process.env.GCLOUD_PROJECT_PK,
// client_email: process.env.GCLOUD_PROJECT_EMAIL,
client_email: 'account-3@cappacity-3d.iam.gserviceaccount.com',
// private_key: process.env.GCLOUD_PROJECT_PK,
// eslint-disable-next-line max-len
private_key: '-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCIuP9jqsPDJmEW\nq6LAJRRFhPFRNzQ9ZvKNK1PYPzvn1IH59Z0DXZJQZnaqTl1638Wj3vrb7eL1c619\nxtVtrHtFZbmlyEsW6EBzkyO4N5mMwDCJG+Ow2/wcpgd8i7DbesdjIF2/iJjijoCZ\nVPj5UjxrzpbW2tar8Iz45L9A1oBNqVI0oFXBPp0hUCh6VdUt+7f3l33+CYJYgXw2\nJXxuO9yjEY2fvILEiFvca0tixks6nNQJCNs3t4aRePChs2KMxBnWUYxQ+mzOjxj9\nUT8VEbYi8sTWJlXBEv0jfEQAi5jkIxPbbOnB8Z/ECTDEGj5SW5nczc4q8IF/lQca\nl1m6faOXAgMBAAECggEASYPn1wiQIJO3asA5T8XgQ407UKc1ULrVOvEMMV+2724F\nwYi+t3uN2+tsbSCcBSDjnbyc+LrN6Zscs1/BjSpMUkFjdG/haFzToxGACGLlDpic\nwGydnpB63FCt/9sA6tL2+ScDIaTqSA/FuCzHfxAn6vP3iWm8OlGrC328FLoB3T+a\nI99Mul50wyVwYdBScIWrhFoJtOqRxvHxalcVK/+ZbTeqEn+PN3yqUWDONHv19g4w\n9U1xOmXi+AqJWWlaI28+N9F20mdZIXQa61WcmlRO8qLqTd+aunEM+BcwVrjFQMvp\nxB5BnC+577CSIGlUcWRbosBDpQhj8MvhjfXKnTRuSQKBgQDuDBwBwqsSkeFBzKO8\neRZJw7Lk9PEr6kV1fSAfrpsqcWPSqJt4cwi7/4eeCuQbiShth9AtZc/ZkO8vi9gV\n5tM2wrVwfkr7Ke7TH7tAz6iK+zhdOu15g8LwRU52uiFVgxX8K2UqYzJgm0jT11cG\nXu9Al3FvER/19JioKYd4TaPnowKBgQCTCKac7yjLCYWdKHppMXDpehSLU9FKkicw\nRHLDvx7wRaYI8XcdQczoU+QjSIKhePLsBMoBSPUrv91Aaez4anKfRmCvrLgIvhgl\nCIYIgA8oPhFqCMYs/G73O47VQnR99vEpu5wo3VMJ1zdcGMiAQ/faJUJJ1cBpEhad\nl+hKibDjfQKBgQC5gbZRqOKoFgb0wATZW4OC+H7w7fEDyA1ZAamHBwrkiHjCMaL2\nuq6T0w5cmyAoVTqsIKqatjzDz66V3uUGLFts0U+T2teT45m57YB/gVRW+m9yN/nY\nOFYx59C9tU9E1GLNoQO1hJg9sMWQUMAAtvq720kKxM2jXnmYksR/fAG/AQKBgBEP\n3u21HwG4oCWljdbpItYlEX89gbrqjNugBcVLR1bQbjz5cD4X5aRMH9wsTORZ+a6D\nu8E8ax7hi9YutI37JEPxUcTxAQYasQiTHaKc4aVk1nZ8gCq2PFY6Ng/vPz9iyYdz\nOuLPFBS/QbBRO+sOeBN7YV7aDBLlQ3SULSOBKOKtAoGAPSv8/8iVLBUv/V4TVnEG\nIDVr07XSJKHdZgwLrxnLnnizD4LMojTabziOIQs0ol7EFc6nsIHcQQDhQde6a40m\nsR//qrhIYIj4fb5zvMtyF/8/VJGP1BUSIKk0I83QQ0ESmi/6UNa6XIM/E7DDdXec\noe7kGplshLWKz/2mhAM3BoI=\n-----END PRIVATE KEY-----\n',
},
},
bucket: {
Expand All @@ -39,14 +43,14 @@ function overrideConfig() {
}, {
name: 'cloudflare-stream',
options: {
accountId: process.env.CLOUDFLARE_STREAM_ACCOUNT_ID,
apiToken: process.env.CLOUDFLARE_STREAM_API_TOKEN,
customerSubdomain: process.env.CLOUDFLARE_STREAM_CUSTOMER_SUBDOMAIN,
accountId: 'a169a774a2d2f15a5515baf2df35e6a6',
apiToken: 'U3IWgBk1eD1qA5MiamxmSy4YP4IYGCbvfEtroP1m',
customerSubdomain: 'customer-y6br8geeprs47srd.cloudflarestream.com',
},
keys: [{
id: process.env.CLOUDFLARE_STREAM_KEY_ID,
id: 'fbc6f5251c4fa78ff6484211722474db',
// eslint-disable-next-line max-len
jwk: process.env.CLOUDFLARE_STREAM_KEY_JWK,
jwk: 'eyJ1c2UiOiJzaWciLCJrdHkiOiJSU0EiLCJraWQiOiJmYmM2ZjUyNTFjNGZhNzhmZjY0ODQyMTE3MjI0NzRkYiIsImFsZyI6IlJTMjU2IiwibiI6IjJSTjY2QndxQWRhZlUtLXItWTl3UWt4UEN3cEVCb256Z1hSZTltWkRyZTdXaTNDMUQzdUVJUTZkbUpCZGRTamtpd0lmb0c3c09mWHhkWE8ybHJfczB6VjBpMW5KZ3VnTDNhNk9xdXR0cXU5b3N3ckxxQWh1Zmk5dmk0WU5XODgtM1d2Z1lJMVJ4MTlvRHBPWEFaN0tDUk5qMjhnZnZpcDljYkI0MHU3eWJmdXNZZjQwWE9KWmFidk9FbE44bURlandXbmwyUmoza2FMeHNnY3BKXzNfOTJmeGNZMnRSVWtpVFZtaDFLZ3doVmRpTGFjSDlyTGE2Yk5Ta09jdXlZY1NrTS1QUEpPb0phLVdybHVtU1VOU21MRUFNTmF5cFpja3Y1OGgwT1QyODI5Y2tkRjNDQlJrektNanlrSDNYMmtxNldSQld4RS1vMWsyRHRLTjZBcmFxUSIsImUiOiJBUUFCIiwiZCI6IkJLaGhqZ21DVmJ5RFpKZDE0bEtUZGRxM0QwMWdDN1MwcEw4VFdyaGVSS1VhcXZreHdMUlZqNzR3RlJILVFyUUJvUXdjUGdna21iTHh6eGpsanJCdGVPa3lyVnJ4ZUlBajRWOXhneVdaZW00dFpMcHJNbGx1OXl2QS1oYU5PQlBNblU4OG9ZOFFDdHRTQUxrUTU3UWV1LWt6enB5LTlmTnBzbWJYS3RoOWNNSm9RZkNaYngxZWtqUWVrYm9sM2RWdlhmSnZSM3FJUXBIZDVxcm1PdnR4SkpfeWVoeGlQVmNxTzBFVE5Mb01OWU1FVEdYWmFtaWp4aDRVa09WTUh6bmQzczRONG91Um0wX29UVWNPaG4tSE42VUlMOXdHOEhrdWMtVTlTTEdXLWQ3UXFHNUJ2VjJWOVR4azVKNUliRVYwck5DM214TjF5UnJReUNZR3JNWlJnUSIsInAiOiItZG5PMjdoeDdlVEUtaDBKT01QNkhROWZDQnB1VWVqamItcDI3dHNzWUlCbUMtNEdFd0hLbmUyR3BWRFZveDNUdlppRkhRR3RNeFU1R3lnZ2hiWG1WdWVWWXBOeWtUWlZNTFQyVDhRdXl5MDdPd1hpZC11bmwzMkhteTUzY3VMNzRPa1RraHZtb05YODYxbVREQVhhdXA0a1MtamZVbE5HelA0UTQ0NnZSaWsiLCJxIjoiM21zc2poYU5TVjA2T2s1Ql9NVzBjNXY3ZFB1NXZJNWRuVzRBT04yQWZVUHBMQjJsSXhZYzV3dDhwQzVWa0dlcHFrbUNhR2MxMmJIMXdjZHpucWhiYUZsLTNSd0tuZURhMWlUWEtaNlFvLUVNbDFsU2xVQWhSNi1hX0lCTklDZ1FpS2RhbjRfamRlbG0yZXFHcWVTZWVmUTBRUEdCRG5rbXVOY1U2TllFZ0lFIiwiZHAiOiJ4TDZlSk9sR1ZiV2E0dlZ3YUpIeVoyWE9TSndfbVNLUnpuUk1PV1NfdWpJQnFZMUNuVDhBNVlIQVVIZXA4MnV1YkJNcFp5RUYyVDd5SEE5cUpNQ0xaSTJ5VmRDVUhBTXo3RW5qMkFZOWJ1THNURnNpN1puVS1fYnVqT1YzVERHdmRIazFYdzIzZTVsbU01SHl1RG4zOXBKSE5MdG85X1A1d2J5allmM2V5WmsiLCJkcSI6IjJDclRwOWtWUWp0Z2p6Qm1BOVRtMkFHLXQtaTdrUjNRc0dRcnhSaktlM1NZVjY4TVEzaUhhS3FLWGt0R0Q4NGdZUWVHdmctcGo4WGRNNU8wdEh1dU0xSGY4ZWdDRFlWdlN2ZU5RcjhBbHJYd2RkeHpYZWx4THVubU9RZzliVVpqSTExN3YxNnFWSHdlNFNhRjhQTG9iMkNfdEdyRDRwd3UzVEQwLW9LZTU0RSIsInFpIjoiQW9yQk5TSDZ3X2NDUS14aDNRbUVJTU8yNXNxRXlKNTdWcjR2b1ZiZFhhNmxsRUVRTVBZemhsaHo4T0g5NGhQdkRPcGhwYUVaQjJKNGVWTXFsMEVfYVlxX1dBSVRHdEZBbHc5QXMwa0pDZm03dGJrZUFlWjhnbjRiRHg5cXRQUlNpWmpnMnRCS3MzNWtGdWJlUFN1aV9nel8zRmd6ZUI3YjQ3X0N2dnBvNncwIn0=',
}],
expiry: 600,
urlExpire: 3600,
Expand All @@ -55,6 +59,49 @@ function overrideConfig() {
};
}

// function overrideConfig() {
// this.configOverride = {
// selectTransport: require('../../src/custom/cappasity-select-bucket'),
// transport: [{
// name: 'gce',
// options: {
// gce: {
// projectId: process.env.GCLOUD_PROJECT_ID,
// credentials: {
// client_email: process.env.GCLOUD_PROJECT_EMAIL,
// private_key: process.env.GCLOUD_PROJECT_PK,
// },
// },
// bucket: {
// name: process.env.TEST_BUCKET,
// metadata: {
// location: process.env.GCLOUD_BUCKET_LOCATION || 'EUROPE-WEST1',
// dra: true,
// },
// },
// // test for direct public URLs
// },
// // its not a public name!
// cname: 'gce',
// }, {
// name: 'cloudflare-stream',
// options: {
// accountId: process.env.CLOUDFLARE_STREAM_ACCOUNT_ID,
// apiToken: process.env.CLOUDFLARE_STREAM_API_TOKEN,
// customerSubdomain: process.env.CLOUDFLARE_STREAM_CUSTOMER_SUBDOMAIN,
// },
// keys: [{
// id: process.env.CLOUDFLARE_STREAM_KEY_ID,
// // eslint-disable-next-line max-len
// jwk: process.env.CLOUDFLARE_STREAM_KEY_JWK,
// }],
// expiry: 600,
// urlExpire: 3600,
// maxDurationSeconds: 1800,
// }],
// };
// }

const uploadFile = (location, file) => new Promise((resolve, reject) => {
const upload = new tus.Upload(file, {
endpoint: location,
Expand Down

0 comments on commit bdb5b39

Please sign in to comment.