60 lines
1.5 KiB
JavaScript
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();
|