Skip to content

Commit

Permalink
gdrive file and folder api added
Browse files Browse the repository at this point in the history
  • Loading branch information
patheticGeek committed May 27, 2020
1 parent 92e0149 commit d617450
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 2 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
node_modules/
.next/
config.js
test.js
test.js
logs.txt
8 changes: 8 additions & 0 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ const humanTime = require("./utils/humanTime");
const keepalive = require("./utils/keepalive");
const diskinfo = require("./utils/diskinfo");
const status = require("./utils/status");
const { getFiles, sendFileStream } = require("./utils/gdrive");

const search = require("./routes/search");
const details = require("./routes/details");
Expand Down Expand Up @@ -34,6 +35,13 @@ server.get("/logs", (req, res) => res.sendFile("logs.txt", { root: __dirname }))

useWebserver && server.use("/downloads", express.static("downloads"), serveIndex("downloads", { icons: true }));

server.use("/drive/folder/:id", async (req, res) => {
const folderId = req.params.id;
res.send(await getFiles(folderId));
});

server.use("/drive/file/:id/:slug", sendFileStream);

server.use("/api/v1/torrent", torrent);
server.use("/api/v1/search", search);
server.use("/api/v1/details", details);
Expand Down
43 changes: 42 additions & 1 deletion utils/gdrive.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,4 +147,45 @@ async function uploadWithLog(path, parentId) {
}
}

module.exports = { uploadFolder, uploadFile, uploadWithLog };
function getFiles(folderId) {
let query;
const parent = folderId || GDRIVE_PARENT_FOLDER;
if (parent) query = `'${parent}' in parents and trashed = false`;
else query = "trashed = false";
return new Promise((resolve, reject) => {
drive.files.list(
{
q: query,
pageSize: 100,
supportsAllDrives: true,
includeItemsFromAllDrives: true,
fields: "nextPageToken, files(id, name, modifiedTime, iconLink, mimeType)"
},
(err, res) => (err ? reject(err) : resolve(res.data.files))
);
});
}

function sendFileStream(req, res) {
const fileId = req.params.id;
drive.files.get(
{
fileId,
alt: "media"
},
{ responseType: "stream" },
(err, resp) => {
if (!err) {
resp.data
.on("end", () => {})
.on("error", () => {})
.pipe(res);
} else {
console.log("error ", err);
res.end();
}
}
);
}

module.exports = { uploadFolder, uploadFile, uploadWithLog, getFiles, sendFileStream };

0 comments on commit d617450

Please sign in to comment.