Skip to content

Documents (api/documents.ts)

Endpoint Overview

Manages document storage and retrieval using Azure Blob Storage. Supports uploading new documents and retrieving all documents for a user. Handles base64 encoded documents and provides document metadata.

Request Handlers

GET

  • Query Parameters:
    {
      userID: string;  // Required: User identifier
    }
    
  • Response:
    [
      {
        name: string;       // Document name
        base64: string;     // Base64 encoded document content
        createdOn: Date;    // Document creation timestamp
      }
    ]
    
  • Status: 200 OK, 400 Bad Request, 500 Internal Server Error

POST

  • Query Parameters:
    {
      userID: string;  // Required: User identifier
    }
    
  • Body:
    {
      base64String: string;  // Base64 encoded document content
      fileName: string;      // Name of the file to store
    }
    
  • Response: "Uploaded Successfully"
  • Status: 201 Created, 400 Bad Request, 500 Internal Server Error

Error Handling

if (!userID) {
  res.status(400).send("Missing userID parameter");
  return;
}

try {
  // Upload or retrieve operations
} catch (error) {
  console.error(`Error retrieving documents for userID ${userID}:`, error);
  res.status(500).send("Error retrieving documents");
}

Common errors: - 400: Missing userID parameter - 500: Azure storage operation failure - 500: Document retrieval error - 400: Invalid document format

Usage Example

// Upload document
const uploadResponse = await fetch("/api/documents?userID=123", {
  method: "POST",
  headers: { 
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    fileName: "document.pdf",
    base64String: "base64EncodedContent..."
  })
});

// Retrieve documents
const getResponse = await fetch("/api/documents?userID=123");
const documents = await getResponse.json();

Implementation Details

  • Uses Azure Blob Storage
  • Handles base64 encoded documents
  • Streams large files efficiently
  • 10MB request size limit
  • Manages container per user
  • Provides document metadata
  • Handles async operations
  • Uses secure connection string
  • Includes buffer management
  • Implements stream handling

Pages/Components Referenced By

Notes

  • Requires Azure Storage configuration
  • Uses fixed container name
  • Handles large documents
  • Returns base64 encoded content
  • Includes creation timestamps
  • Supports multiple file types
  • Lists all user documents
  • Efficient stream processing
  • Secure blob operations