[
  {
    "id": "class:gamvik:bookstorageservice",
    "kind": "class",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "canonicalName": "BookStorageService",
    "shortLabel": "BookStorageService",
    "longLabel": "BookStorageService",
    "purpose": "Provides an infrastructure service that persists ebook and cover files to the local web root filesystem and returns web-relative paths for stored assets."
  },
  {
    "id": "method:axmshz:bookstorageservice",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 14,
    "canonicalName": "BookStorageService",
    "shortLabel": "BookStorageService()",
    "longLabel": "BookStorageService(environment: IWebHostEnvironment) -> BookStorageService",
    "signature": "(environment: IWebHostEnvironment) -> BookStorageService",
    "purpose": "Ctor; captures IWebHostEnvironment for resolving web root paths."
  },
  {
    "id": "method:1iw78py:saveebookasync",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 19,
    "canonicalName": "SaveEbookAsync",
    "shortLabel": "SaveEbookAsync()",
    "longLabel": "SaveEbookAsync(data: byte[], fileName: string) -> Task<string>",
    "signature": "(data: byte[], fileName: string) -> Task<string>",
    "purpose": "Wraps a byte-array payload into a MemoryStream and delegates to the Stream overload to persist an ebook."
  },
  {
    "id": "method:mpmpcx:saveebookasync",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 25,
    "canonicalName": "SaveEbookAsync",
    "shortLabel": "SaveEbookAsync()",
    "longLabel": "SaveEbookAsync(data: Stream, fileName: string) -> Task<string>",
    "signature": "(data: Stream, fileName: string) -> Task<string>",
    "purpose": "Writes the provided stream to the uploads folder under web root with a GUID-prefixed unique filename and returns a web-relative path (forward-slash)."
  },
  {
    "id": "method:1ouv7tw:savecoverasync",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 43,
    "canonicalName": "SaveCoverAsync",
    "shortLabel": "SaveCoverAsync()",
    "longLabel": "SaveCoverAsync(data: byte[], fileName: string) -> Task<string?>",
    "signature": "(data: byte[], fileName: string) -> Task<string?>",
    "purpose": "Validates byte-array cover data and delegates to the Stream overload; returns null for empty input."
  },
  {
    "id": "method:1o0t990:savecoverasync",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 50,
    "canonicalName": "SaveCoverAsync",
    "shortLabel": "SaveCoverAsync()",
    "longLabel": "SaveCoverAsync(data: Stream, fileName: string) -> Task<string?>",
    "signature": "(data: Stream, fileName: string) -> Task<string?>",
    "purpose": "Writes the provided cover stream to the covers folder under web root with a GUID-prefixed unique filename and returns a web-relative path (nullable)."
  },
  {
    "id": "method:je6l0s:ensuredirectoryexists",
    "kind": "method",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 66,
    "canonicalName": "EnsureDirectoryExists",
    "shortLabel": "EnsureDirectoryExists()",
    "longLabel": "EnsureDirectoryExists(path: string) -> void",
    "signature": "(path: string) -> void",
    "purpose": "Checks for the existence of a directory and creates it if missing."
  },
  {
    "id": "type:9todq3:bookstorageservice",
    "kind": "type",
    "fileId": "file:14qnurl:bookstorageservice-cs",
    "path": "NexusReader.Infrastructure/Services/BookStorageService.cs",
    "line": 10,
    "canonicalName": "BookStorageService",
    "shortLabel": "BookStorageService",
    "longLabel": "BookStorageService (model)",
    "purpose": "Infrastructure implementation for persisting book assets to local filesystem exposed via IBookStorageService."
  }
]