Initial commit: WebDAV-Adapter für Internxt Drive
- Browser-Token-Auth (INXT_TOKEN, INXT_MNEMONIC) - Phase 1: PROPFIND (Verzeichnis auflisten) - Drive API + Pfad-Resolver - Dokumentation: Auth, Architektur, WSL Made-with: Cursor
This commit is contained in:
41
src/internxt-client.js
Normal file
41
src/internxt-client.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/**
|
||||
* Internxt API Client – Drive API + User Refresh
|
||||
* Nutzt Browser-Token (INXT_TOKEN) für drive-web Endpoints.
|
||||
*/
|
||||
|
||||
import 'dotenv/config';
|
||||
import { Storage, Users } from '@internxt/sdk/dist/drive/index.js';
|
||||
|
||||
const DRIVE_API_URL = process.env.DRIVE_API_URL || 'https://gateway.internxt.com/drive';
|
||||
|
||||
const appDetails = { clientName: 'drive-web', clientVersion: '1.0' };
|
||||
|
||||
/**
|
||||
* Erstellt API-Clients mit aktuellem Token.
|
||||
* @param {string} token - Bearer Token (xNewToken)
|
||||
* @returns {{ users: Users, storage: Storage }}
|
||||
*/
|
||||
export function createClients(token) {
|
||||
const apiSecurity = {
|
||||
token,
|
||||
unauthorizedCallback: () => {
|
||||
throw new Error('Token abgelaufen oder ungültig');
|
||||
},
|
||||
};
|
||||
return {
|
||||
users: Users.client(DRIVE_API_URL, appDetails, apiSecurity),
|
||||
storage: Storage.client(DRIVE_API_URL, appDetails, apiSecurity),
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt User-Daten inkl. Bridge-Credentials via refreshUser.
|
||||
* @param {string} token
|
||||
* @returns {Promise<{ user: object, newToken?: string }>}
|
||||
*/
|
||||
export async function refreshUser(token) {
|
||||
const { users } = createClients(token);
|
||||
const response = await users.refreshUser();
|
||||
const user = response?.user ?? response;
|
||||
return { user, newToken: response?.newToken };
|
||||
}
|
||||
Reference in New Issue
Block a user