@devvai/devv-code-backend
Version:
Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities
57 lines (56 loc) • 1.85 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.DevvWebReader = void 0;
const device_1 = require("./device");
const session_1 = require("./session");
const constants_1 = require("./constants");
/**
* DevvWebReader - Web content extraction using Jina Reader API
*
* Extracts clean, LLM-friendly content from any web page
*
* Usage:
* ```typescript
* const webReader = new DevvWebReader();
* const result = await webReader.read({
* url: "https://example.com/article"
* });
* ```
*/
class DevvWebReader {
async read(options) {
if (!options.url) {
throw new Error('URL is required for web reader');
}
// URL encode
const encodedUrl = encodeURIComponent(options.url);
// Get authentication info
const deviceId = (0, device_1.getEncryptedDeviceId)();
const sid = (0, session_1.getSid)();
// Build request headers
const headers = {
'Accept': 'application/json',
'Device-Id': deviceId
};
if (sid) {
headers['sid'] = sid;
}
// Send request
const response = await fetch(`${constants_1.BASE_URL}api/v1/jina-reader/${encodedUrl}`, {
method: 'POST',
headers
});
if (!response.ok) {
const error = await response.json().catch(() => ({ error: 'Web reader failed' }));
throw new Error(error.error || `Failed to read URL (Status: ${response.status})`);
}
// Parse response
const result = await response.json();
// Check business status codes
if (result.code !== 200 || result.status !== 20000) {
throw new Error(`Read failed with code ${result.code}`);
}
return result;
}
}
exports.DevvWebReader = DevvWebReader;
;