aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/RouteStore.ts3
-rw-r--r--src/server/apis/google/GooglePhotosUploadUtils.ts14
-rw-r--r--src/server/credentials/google_docs_token.json2
-rw-r--r--src/server/index.ts16
4 files changed, 23 insertions, 12 deletions
diff --git a/src/server/RouteStore.ts b/src/server/RouteStore.ts
index b221b71bc..f65e6134c 100644
--- a/src/server/RouteStore.ts
+++ b/src/server/RouteStore.ts
@@ -33,6 +33,7 @@ export enum RouteStore {
cognitiveServices = "/cognitiveservices",
googleDocs = "/googleDocs",
googlePhotosAccessToken = "/googlePhotosAccessToken",
- googlePhotosMediaUpload = "/googlePhotosMediaUpload"
+ googlePhotosMediaUpload = "/googlePhotosMediaUpload",
+ googlePhotosMediaDownload = "/googlePhotosMediaDownload"
} \ No newline at end of file
diff --git a/src/server/apis/google/GooglePhotosUploadUtils.ts b/src/server/apis/google/GooglePhotosUploadUtils.ts
index 13db1df03..032bc2a2d 100644
--- a/src/server/apis/google/GooglePhotosUploadUtils.ts
+++ b/src/server/apis/google/GooglePhotosUploadUtils.ts
@@ -20,6 +20,7 @@ export namespace GooglePhotosUploadUtils {
export interface DownloadInformation {
mediaPath: string;
+ fileName: string;
contentType?: string;
contentSize?: string;
}
@@ -77,15 +78,9 @@ export namespace GooglePhotosUploadUtils {
export namespace IOUtils {
- export const Download = async (url: string): Promise<Opt<DownloadInformation>> => {
- const filename = `temporary_upload_${Utils.GenerateGuid()}${path.extname(url).toLowerCase()}`;
- const temporaryDirectory = Paths.uploadDirectory + "temporary/";
- const mediaPath = temporaryDirectory + filename;
-
- if (!(await createIfNotExists(temporaryDirectory))) {
- return undefined;
- }
-
+ export const Download = async (url: string, filename?: string): Promise<Opt<DownloadInformation>> => {
+ const resolved = filename || `upload_${Utils.GenerateGuid()}${path.extname(url).toLowerCase()}`;
+ const mediaPath = Paths.uploadDirectory + resolved;
return new Promise<DownloadInformation>((resolve, reject) => {
request.head(url, (error, res) => {
if (error) {
@@ -95,6 +90,7 @@ export namespace GooglePhotosUploadUtils {
mediaPath,
contentType: res.headers['content-type'],
contentSize: res.headers['content-length'],
+ fileName: resolved
};
request(url).pipe(fs.createWriteStream(mediaPath)).on('close', () => resolve(information));
});
diff --git a/src/server/credentials/google_docs_token.json b/src/server/credentials/google_docs_token.json
index e67c4b5ba..88838e18a 100644
--- a/src/server/credentials/google_docs_token.json
+++ b/src/server/credentials/google_docs_token.json
@@ -1 +1 @@
-{"access_token":"ya29.Glx8B81Wqa67aMtB6AwlIUcLO4k0bnsICbtkXJUkqXWPIZgnSw0SnCG0jiFAmwLGPg8ca-Qk3R0SqWt4JlgwfrzuOqt90I0P8tHH2x_4RXfgisVBg4Muf8Gz59AEkA","refresh_token":"1/HTv_xFHszu2Nf3iiFrUTaeKzC_Vp2-6bpIB06xW_WHI","scope":"https://www.googleapis.com/auth/presentations.readonly https://www.googleapis.com/auth/documents.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.appendonly https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/presentations https://www.googleapis.com/auth/photoslibrary.sharing","token_type":"Bearer","expiry_date":1567878663996} \ No newline at end of file
+{"access_token":"ya29.Glx8B266dydsOIEYhedUZYQ8sIsR9utSSxCBUex0O85zYrujZCSTbjVhrXF3Y4q41mLFghLwspgW-1w6zqnGnMtkZhuDGpBGArIwLZsJDyhUugEu3xvh7gY78WfePA","refresh_token":"1/HTv_xFHszu2Nf3iiFrUTaeKzC_Vp2-6bpIB06xW_WHI","scope":"https://www.googleapis.com/auth/presentations.readonly https://www.googleapis.com/auth/documents.readonly https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/documents https://www.googleapis.com/auth/photoslibrary https://www.googleapis.com/auth/photoslibrary.appendonly https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/presentations https://www.googleapis.com/auth/photoslibrary.sharing","token_type":"Bearer","expiry_date":1567890805451} \ No newline at end of file
diff --git a/src/server/index.ts b/src/server/index.ts
index 99d8a02d4..aadadb11a 100644
--- a/src/server/index.ts
+++ b/src/server/index.ts
@@ -113,7 +113,7 @@ function addSecureRoute(method: Method,
) {
let abstracted = (req: express.Request, res: express.Response) => {
if (req.user) {
- handler(req.user as any, res, req);
+ handler(req.user, res, req);
} else {
req.session!.target = req.originalUrl;
onRejection(res, req);
@@ -848,6 +848,20 @@ app.post(RouteStore.googlePhotosMediaUpload, async (req, res) => {
);
});
+app.post(RouteStore.googlePhotosMediaDownload, async (req, res) => {
+ const contents = req.body;
+ if (!contents) {
+ return res.send(undefined);
+ }
+ await GooglePhotosUploadUtils.initialize({ uploadDirectory, credentialsPath, tokenPath });
+ let bundles: GooglePhotosUploadUtils.DownloadInformation[] = [];
+ await Promise.all(contents.mediaItems.forEach(async (item: any) => {
+ const information = await GooglePhotosUploadUtils.IOUtils.Download(item.baseUrl, item.filename);
+ information && bundles.push(information);
+ }));
+ res.send(bundles);
+});
+
const suffixMap: { [type: string]: (string | [string, string | ((json: any) => any)]) } = {
"number": "_n",
"string": "_t",