onedrive_sync/renderer/graphApi.js

60 lines
1.5 KiB
JavaScript

const { session } = require('electron');
class GraphApiClient {
constructor() {
this.baseUrl = 'https://graph.microsoft.com/v1.0';
}
async getAccessToken() {
// Get cookies from all relevant domains
// return a fake token for now
return 'fake-token';
return accessToken;
}
cleanPath(path) {
return path
.replace(/^\/+|\/+$/g, '') // Remove leading/trailing slashes
.split('/')
.map(segment => encodeURIComponent(segment))
.join('/');
}
async listFolderContents(folderPath) {
try {
const accessToken = await this.getAccessToken();
const cleanPath = this.cleanPath(folderPath);
const url = `${this.baseUrl}/me/drive/root:/${cleanPath}:/children`;
console.log('Querying OneDrive items from:', url);
const response = await fetch(url, {
headers: {
'Authorization': `Bearer ${accessToken}`,
'Accept': 'application/json',
'Origin': 'https://onedrive.live.com',
'Referer': 'https://onedrive.live.com/'
}
});
if (!response.ok) {
const errorData = await response.json();
console.error('Graph API error details:', errorData);
throw new Error(`Graph API error: ${response.status} ${response.statusText}`);
}
const data = await response.json();
return data.value;
} catch (error) {
console.error('Graph API error:', error);
throw error;
}
}
}
module.exports = new GraphApiClient();