@@ -4,61 +4,85 @@ const express = require("express");
4
4
const router = express . Router ( ) ;
5
5
const multer = require ( "multer" ) ;
6
6
const shortid = require ( "shortid" ) ;
7
+ const upload = multer ( ) ;
8
+ const KeyPath = "/etc/secrets/service.json" ;
7
9
var aws = require ( "aws-sdk" ) ;
8
10
var multerS3 = require ( "multer-s3" ) ;
9
11
const path = require ( "path" ) ;
12
+ const stream = require ( "stream" ) ;
10
13
const accesskey = process . env . AWSACCESSKEY
11
14
const awssecret = process . env . AWSSECRETACCESSKEY
12
15
const awsbucket = process . env . AWSBUCKET
13
- var storage = multer . diskStorage ( {
14
- destination : function ( req , file , cb ) {
15
- cb ( null , "./uploads" ) ;
16
- } ,
17
- filename : function ( req , file , cb ) {
18
- cb ( null , shortid . generate ( ) + "-" + file . originalname + "-" + Date . now ( ) ) ;
19
- } ,
20
- } ) ;
21
16
22
- var upload = multer ( { storage } ) ;
17
+ //AWS S3 BUCKET METHOD:
18
+
19
+
20
+ // const AWS = new aws.S3({
21
+ // accessKeyId: accesskey,
22
+ // secretAccessKey: awssecret,
23
+ // });
24
+ // var uploadS3 = multer({
25
+ // storage: multerS3({
26
+ // s3: AWS,
27
+ // bucket: awsbucket,
28
+ // acl: "public-read",
29
+ // metadata: function (req, file, cb) {
30
+ // cb(null, { fieldName: file.fieldname });
31
+ // },
32
+ // key: function (req, file, cb) {
33
+ // cb(null, shortid.generate() + "-" + file.originalname + "-" + Date.now());
34
+ // },
35
+ // }),
36
+ // });
23
37
24
- const AWS = new aws . S3 ( {
25
- accessKeyId : accesskey ,
26
- secretAccessKey : awssecret ,
38
+ //GCP IMAGE UPLOAD METHOD
39
+
40
+ const SCOPES = [ process . env . SCOPES_0 , process . env . SCOPES_1 ] ;
41
+ const auth = new google . auth . GoogleAuth ( {
42
+ keyFile : KeyPath ,
43
+ scopes : SCOPES
27
44
} ) ;
28
- var uploadS3 = multer ( {
29
- storage : multerS3 ( {
30
- s3 : AWS ,
31
- bucket : "agriassistbucket" ,
32
- acl : "public-read" ,
33
- metadata : function ( req , file , cb ) {
34
- cb ( null , { fieldName : file . fieldname } ) ;
45
+ console . log ( auth ) ;
46
+
47
+ const uploadToGoogleDrive = async ( fileObject ) => {
48
+ const bufferStream = new stream . PassThrough ( ) ;
49
+ bufferStream . end ( fileObject . buffer ) ;
50
+ const response = await google . drive ( { version : "v3" , auth } ) . files . create ( {
51
+ media : {
52
+ mimeType : fileObject . mimeType ,
53
+ body : bufferStream ,
35
54
} ,
36
- key : function ( req , file , cb ) {
37
- cb ( null , shortid . generate ( ) + "-" + file . originalname + "-" + Date . now ( ) ) ;
55
+ requestBody : {
56
+ name : fileObject . originalname ,
57
+ parents : [ process . env . GOOGLE_FOLDER_ID ] ,
38
58
} ,
39
- } ) ,
40
- } ) ;
59
+ fields : "id,name" ,
60
+ } ) ;
61
+ return response . data ;
62
+ } ;
41
63
42
64
router . post (
43
65
"/postitem" ,
44
66
requireSignin ,
45
67
userMiddleware ,
46
- uploadS3 . array ( "itemPictures" ) ,
68
+ // uploadS3.array("itemPicture") /* AWS S3 Bucket upload method calling */
69
+ upload . any ( "itemPictures" ) ,
47
70
async ( req , res ) => {
48
71
// console.log(req)
49
72
console . log ( "Hitted the POST successfully " ) ;
50
73
try {
51
74
console . log ( "try" ) ;
52
75
const { ItemType, ItemName, Price, Quantity } = req . body ;
53
76
// console.log(req.files);
54
- var itemPictures = [ ] ;
55
- if ( req . files . length > 0 ) {
56
- itemPictures = req . files . map ( ( file ) => {
57
- console . log ( file . key ) ;
58
- return { img : file . key } ;
59
- } ) ;
77
+ console . log ( ItemType ) ;
78
+ console . log ( req . files ) ;
79
+ console . log ( req . body ) ;
80
+ const { body, files } = req ;
81
+ console . log ( body ) ;
82
+ let itemPictures = [ ] ;
83
+ for ( let f = 0 ; f < files . length ; f += 1 ) {
84
+ itemPictures . push ( await uploadToGoogleDrive ( files [ f ] ) ) ;
60
85
}
61
-
62
86
//Saving data to db
63
87
64
88
const newPost = await postitem . create ( {
@@ -72,20 +96,7 @@ router.post(
72
96
console . log ( newPost . _id ) ;
73
97
await newPost . save ( ) ;
74
98
console . log ( "save completed" ) ;
75
- res . status ( 201 ) . json ( { newPost } ) ;
76
-
77
- // newPost.save()
78
- // .then((item) => {
79
- // return res.status(201).json({ item });
80
- // })
81
- // .catch((err) => {
82
- // return res.status(400).json({ err });
83
- // })
84
- // // newPost.save((error, item) => {
85
- // if (error) return res.status(400).json({ error });
86
- // if (item) return res.status(201).json({ item });
87
- // });
88
-
99
+ res . status ( 201 ) . json ( { message : "done" } ) ;
89
100
} catch ( err ) {
90
101
console . log ( err ) ;
91
102
res . status ( 401 ) . json ( {
0 commit comments