Files
internxt-webdav/src/internxt-client.js
elpatron 7c1866e6fc 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
2026-02-28 10:54:29 +01:00

42 lines
1.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
* 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 };
}