Skip to content

Commit 4829821

Browse files
authored
Merge pull request #760 from topcoder-platform/CORE-100
update file service
2 parents b2b8d1a + 8c7b6dd commit 4829821

File tree

11 files changed

+71
-1024
lines changed

11 files changed

+71
-1024
lines changed

config/development.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@
33
"pubsubExchangeName": "dev.projects",
44
"attachmentsS3Bucket": "topcoder-dev-media",
55
"connectProjectsUrl": "https://connect.topcoder-dev.com/projects/",
6-
"fileServiceEndpoint": "https://api.topcoder-dev.com/v3/files/",
7-
"connectProjectsUrl": "https://connect.topcoder-dev.com/projects/",
6+
"fileServiceEndpoint": "https://api.topcoder-dev.com/v5/files",
87
"memberServiceEndpoint": "https://api.topcoder-dev.com/v3/members",
98
"identityServiceEndpoint": "https://api.topcoder-dev.com/v3/",
109
"taasJobApiUrl": "https://api.topcoder-dev.com/v5/jobs",

config/m2m.local.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ if (process.env.NODE_ENV === 'test') {
55
config = require('./test.json');
66
} else {
77
config = {
8-
busApiUrl: "http://localhost:8002/v5",
9-
identityServiceEndpoint: "https://api.topcoder-dev.com/v3/",
8+
busApiUrl: 'http://localhost:8002/v5',
9+
identityServiceEndpoint: 'https://api.topcoder-dev.com/v3/',
1010
authSecret: 'secret',
1111
authDomain: 'topcoder-dev.com',
1212
logLevel: 'debug',
1313
captureLogs: 'false',
1414
logentriesToken: '',
15-
fileServiceEndpoint: 'https://api.topcoder-dev.com/v3/files/',
15+
fileServiceEndpoint: 'https://api.topcoder-dev.com/v5/files',
1616
directProjectServiceEndpoint: 'https://api.topcoder-dev.com/v3/direct',
1717
connectProjectsUrl: 'https://connect.topcoder-dev.com/projects/',
1818
memberServiceEndpoint: 'https://api.topcoder-dev.com/v3/members',
@@ -23,9 +23,9 @@ if (process.env.NODE_ENV === 'test') {
2323
idleTimeout: 1000,
2424
},
2525
elasticsearchConfig: {
26-
host: 'dockerhost:9200'
26+
host: 'dockerhost:9200',
2727
},
28-
whitelistedOriginsForUserIdAuth: "[\"\"]",
28+
whitelistedOriginsForUserIdAuth: '[""]',
2929
};
3030
}
3131
module.exports = config;

config/mock.local.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,14 @@ if (process.env.NODE_ENV === 'test') {
55
config = require('./test.json');
66
} else {
77
config = {
8-
busApiUrl: "http://localhost:8002/v5",
9-
identityServiceEndpoint: "http://dockerhost:3001/",
8+
busApiUrl: 'http://localhost:8002/v5',
9+
identityServiceEndpoint: 'http://dockerhost:3001/',
1010
authSecret: 'secret',
1111
authDomain: 'topcoder-dev.com',
1212
logLevel: 'debug',
1313
captureLogs: 'false',
1414
logentriesToken: '',
15-
fileServiceEndpoint: 'https://api.topcoder-dev.com/v3/files/',
15+
fileServiceEndpoint: 'https://api.topcoder-dev.com/v5/files',
1616
directProjectServiceEndpoint: 'https://api.topcoder-dev.com/v3/direct',
1717
connectProjectsUrl: 'https://connect.topcoder-dev.com/projects/',
1818
memberServiceEndpoint: 'http://dockerhost:3001/v3/members',
@@ -23,9 +23,9 @@ if (process.env.NODE_ENV === 'test') {
2323
idleTimeout: 1000,
2424
},
2525
elasticsearchConfig: {
26-
host: 'dockerhost:9200'
26+
host: 'dockerhost:9200',
2727
},
28-
whitelistedOriginsForUserIdAuth: "[\"\"]",
28+
whitelistedOriginsForUserIdAuth: '[""]',
2929
};
3030
}
3131
module.exports = config;

src/routes/attachments/create.js

Lines changed: 20 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import Path from 'path';
1111
import { middleware as tcMiddleware } from 'tc-core-library-js';
1212
import models from '../../models';
1313
import util from '../../util';
14+
import { getDownloadUrl } from '../../services/fileService';
1415
import { EVENT, RESOURCES, ATTACHMENT_TYPES } from '../../constants';
1516

1617
const permissions = tcMiddleware.permissions;
@@ -60,14 +61,6 @@ module.exports = [
6061
], '/');
6162
let newAttachment = null;
6263

63-
const httpClient = util.getHttpClient(req);
64-
// get presigned Url
65-
httpClient.defaults.headers.common.Authorization = req.headers.authorization;
66-
let fileServiceUrl = config.get('fileServiceEndpoint');
67-
if (fileServiceUrl.substr(-1) !== '/') {
68-
fileServiceUrl += '/';
69-
}
70-
7164
const sourceBucket = data.s3Bucket;
7265
const sourceKey = data.path;
7366
const destBucket = config.get('attachmentsS3Bucket');
@@ -137,35 +130,29 @@ module.exports = [
137130
if (process.env.NODE_ENV !== 'development' || config.get('enableFileUpload') === 'true') {
138131
// retrieve download url for the response
139132
req.log.debug('retrieving download url');
140-
return httpClient.post(`${fileServiceUrl}downloadurl`, {
141-
param: {
142-
filePath: path,
143-
},
144-
});
133+
return getDownloadUrl(destBucket, path);
145134
}
146135
return Promise.resolve();
147-
}).then((resp) => {
148-
if (process.env.NODE_ENV !== 'development' || config.get('enableFileUpload') === 'true') {
149-
req.log.debug('Retreiving Presigned Url resp: ', JSON.stringify(resp.data));
150-
return new Promise((accept, reject) => {
151-
if (resp.status !== 200 || resp.data.result.status !== 200) {
152-
reject(new Error('Unable to fetch pre-signed url'));
153-
} else {
154-
let response = _.cloneDeep(newAttachment);
155-
response = _.omit(response, ['path', 'deletedAt']);
136+
}).then((url) => {
137+
if (
138+
process.env.NODE_ENV !== 'development' ||
139+
config.get('enableFileUpload') === 'true'
140+
) {
141+
req.log.debug('Retreiving Presigned Url resp: ', url);
142+
let response = _.cloneDeep(newAttachment);
143+
response = _.omit(response, ['path', 'deletedAt']);
156144

157-
response.downloadUrl = resp.data.result.content.preSignedURL;
145+
response.downloadUrl = url;
158146

159-
// emit the event
160-
util.sendResourceToKafkaBus(
161-
req,
162-
EVENT.ROUTING_KEY.PROJECT_ATTACHMENT_ADDED,
163-
RESOURCES.ATTACHMENT,
164-
newAttachment);
165-
res.status(201).json(response);
166-
accept();
167-
}
168-
});
147+
// emit the event
148+
util.sendResourceToKafkaBus(
149+
req,
150+
EVENT.ROUTING_KEY.PROJECT_ATTACHMENT_ADDED,
151+
RESOURCES.ATTACHMENT,
152+
newAttachment,
153+
);
154+
res.status(201).json(response);
155+
return Promise.resolve();
169156
}
170157
let response = _.cloneDeep(newAttachment);
171158
response = _.omit(response, ['path', 'deletedAt']);

0 commit comments

Comments
 (0)