@n7e/storage-http
TypeScript icon, indicating that this package has built-in type declarations

0.1.0 • Public • Published

HTTP Storage

An HTTP storage implementation.

For further insights, read on.

Installation

To install this library use your favorite package manager. No additional steps are required to start using the library.

npm install @n7e/storage-http

This library is implemented in TypeScript but can be used with JavaScript without any additional steps.

Usage

This implementation will make HTTP requests to list, retrieve, create, update and remove entries. Locations will be appended to a configured base URL and the URL scheme is ignored, so given the base URL: http://example.com/storage the operation...

const entry = await storageClient.get(new URL("file://some/file.txt"));

...will make a GET request to the following URL: http://example.com/storage/some/file.txt.

The provided StorageClientBuilder implementation allows you to provide a specific HTTP client instance, so every aspect of the requests being made can be configured through HTTP client middleware.

To create an HTTP storage client use the provided StorageClientBuilder implementation. The implementation depends on a RequestFactory, ResponseFactory and a StreamFactory. Since the @n7e/http library provides default implementations of those factories here's an example of how to create an HTTP storage client builder:

import {
    DefaultRequestFactory,
    DefaultResponseFactory,
    DefaultStreamFactory,
    DefaultUriFactory
} from "@n7e/http";
import { HttpStorageClientBuilder } from "@n7e/storage-http";

const streamFactory = new DefaultStreamFactory();
const requestFactory = new DefaultRequestFactory(new DefaultUriFactory());
const responseFactory = new DefaultResponseFactory(streamFactory);
const storageClientBuilder = new HttpStorageClientBuilder(requestFactory, responseFactory, streamFactory);

At a minimum you need to configure the base URL and storage entry factories. The storage entry factory procedures are used to create storage entries from HTTP responses.

storageClientBuilder
    .withBaseUrl(new URL("http://example.com/storage"))
    .withStorageEntryListFactory(async response => {
        // Produce a list of storage entries from the HTTP response.
    })
    .withStorageEntryFactory(async response => {
        // Produce a storage entry from the HTTP response.
    });

When configured, build a storage client instance:

const storageClient = storageClientBuilder.build();

Readme

Keywords

Package Sidebar

Install

npm i @n7e/storage-http

Weekly Downloads

1

Version

0.1.0

License

MIT

Unpacked Size

18.7 kB

Total Files

11

Last publish

Collaborators

  • martin-n7e