1 line
4.2 KiB
JSON
1 line
4.2 KiB
JSON
{"path":"NexusReader.Application/Abstractions/Services/IBookStorageService.cs","purpose":"Defines an application-level abstraction for saving ebook and cover files, returning relative paths/URLs; implementations handle actual storage persistence.","classification":{"role":"service","layer":"application","confidence":0.9,"evidence":["Service naming pattern","Application/service path heuristic","File declares IBookStorageService interface describing storage operations","Methods return paths/URLs and accept file data (byte[] or Stream) indicating persistence responsibilities"]},"className":"IBookStorageService","methods":[{"name":"SaveEbookAsync","line":11,"endLine":11,"signature":"(data: byte[], fileName: string) -> Task<string>","purpose":"Contract to save ebook binary data and return a relative path/URL.","calls":[],"actions":[{"id":"contract_11","kind":"mapping","label":"async save ebook","line":11,"detail":"Asynchronous save that returns a string path/URL","visibility":"detail-only","confidence":0.7}]},{"name":"SaveEbookAsync","line":16,"endLine":16,"signature":"(data: Stream, fileName: string) -> Task<string>","purpose":"Contract to save ebook data from a Stream and return a relative path/URL.","calls":[],"actions":[{"id":"contract_16","kind":"mapping","label":"async save ebook (stream)","line":16,"detail":"Asynchronous save from Stream that returns a string path/URL","visibility":"detail-only","confidence":0.7}]},{"name":"SaveCoverAsync","line":22,"endLine":22,"signature":"(data: byte[], fileName: string) -> Task<string?>","purpose":"Contract to save cover image binary data and return a relative path/URL, or null if no cover provided.","calls":[],"actions":[{"id":"contract_22","kind":"mapping","label":"async save cover","line":22,"detail":"May return null when no cover data is provided","visibility":"detail-only","confidence":0.7}]},{"name":"SaveCoverAsync","line":28,"endLine":28,"signature":"(data: Stream, fileName: string) -> Task<string?>","purpose":"Contract to save cover image from a Stream and return a relative path/URL, or null if no cover provided.","calls":[],"actions":[{"id":"contract_28","kind":"mapping","label":"async save cover (stream)","line":28,"detail":"May return null when no cover data is provided","visibility":"detail-only","confidence":0.7}]}],"types":[{"name":"IBookStorageService","kind":"interface","line":6,"purpose":"Interface describing methods to persist ebooks and cover images and return their relative paths/URLs.","fields":[{"name":"SaveEbookAsync(byte[] data, string fileName)","type":"Task<string>","required":true,"line":11,"description":"Save ebook from byte array and return relative path/URL."},{"name":"SaveEbookAsync(Stream data, string fileName)","type":"Task<string>","required":true,"line":16,"description":"Save ebook from Stream and return relative path/URL."},{"name":"SaveCoverAsync(byte[] data, string fileName)","type":"Task<string?>","required":true,"line":22,"description":"Save cover from byte array; may return null if no data."},{"name":"SaveCoverAsync(Stream data, string fileName)","type":"Task<string?>","required":true,"line":28,"description":"Save cover from Stream; may return null if no data."}]}],"serviceRegistrations":[],"startupActions":[],"dependencies":[],"patterns":["Service Interface","Storage Abstraction"],"domainConcepts":["Ebook","Cover","Storage","File path/URL"],"keyDetails":"Interface provides async contracts for saving ebooks and covers (byte[] or Stream) and returning relative paths/URLs; cover methods explicitly allow null return when no data is provided.","orchestrationMethods":[],"typedContracts":[{"name":"IBookStorageService","kind":"interface","line":6,"fieldCount":4,"evidencePaths":["NexusReader.Application/Abstractions/Services/IBookStorageService.cs"]}],"persistenceInteractions":[],"externalInteractions":[],"evidenceAnchors":[{"kind":"typed-contract","label":"IBookStorageService","line":6,"summary":"interface with 4 fields.","confidence":0.8,"evidencePaths":["NexusReader.Application/Abstractions/Services/IBookStorageService.cs"]}],"cacheMetadata":{"schemaVersion":2,"analysisVersion":"2026-05-23.cache-v1","contentChecksum":"37d7b154e4f16604e1c147e5417ef6e8fc11e86a27b95381e3cd1a7930da2b41","sourceByteSize":1002,"analyzedAt":"2026-05-23T16:16:20.572Z","technology":"dotnet"}} |