HTTP Storage Driver

November 21, 2024 ยท View on GitHub

Gitter chat Issue Tracker CI status Tag Maven metadata URL Sonatype Nexus (Releases) Docker Pulls

HTTP Storage Driver

1. Configuration Reference

NameTypeDefault ValueDescription
storage-net-http-headersMap{ "Connection" : "keep-alive", "Date": "#{date:formatNowRfc1123()}%{date:formatNowRfc1123()}", "User-Agent" : "mongoose-storage-driver-http/4.2.6" }Custom HTTP headers section. A user may place here a key-value pair which will be used as HTTP header. The headers will be appended to every HTTP request issued.
storage-net-http-uri-argsMap{}Custom URI query arguments according RFC 2396.The headers will be appended to every HTTP request issued.
storage-net-http-read-metadata-onlyMapfalseSpecifies whether Mongoose issues GET request or HEAD. HEAD is used when enabled.
storage-net-http-max-chunk-sizeInteger65536The limit, in bytes, at which Netty will send a chunk down the pipeline.

2. Custom HTTP Headers

Scenario example:

var customHttpHeadersConfig = {
    "storage" : {
        "net" : {
            "http" : {
                "headers" : {
                    "header-name-0" : "header_value_0",
                    "header-name-1" : "header_value_1",
                    // ...
                    "header-name-N" : "header_value_N"
                }
            }
        }
    }
};

Load
    .config(customHttpHeadersConfig)
    .run();

Note:

Don't use the command line arguments for the custom HTTP headers setting.

2.1. Expressions

Scenario example, note both the parameterized header name and value:

var varHttpHeadersConfig = {
    "storage" : {
        "net" : {
            "http" : {
                "headers" : {
                    "x-amz-meta-${math:random(30) + 1}" : "${date:format("yyyy-MM-dd'T'HH:mm:ssZ").format(date:from(rnd.nextLong(time:millisSinceEpoch())))}"
                }
            }
        }
    }
};

Load
    .config(varHttpHeadersConfig)
    .run();

3. Custom URI Arguments

Custom URI query arguments may be set in the same way as custom HTTP headers.

var uriQueryConfig = {
    "storage" : {
        "net" : {
            "http" : {
                "uri" : {
                    "args" : {
                        "foo": "bar",
                        "key1" : "val1"
                    }
                }
            }
        }
    }
};

Load
    .config(uriQueryConfig)
    .run();

will produce the HTTP requests with URIs like: /20190306.104255.627/kticoxcknpuy?key1=val1&foo=bar

Note:

Don't use the command line arguments for the custom HTTP URI query arguments setting.

3.1. Expressions

Example:

var uriQueryConfig = {
    "storage" : {
        "net" : {
            "http" : {
                "uri" : {
                    "args" : {
                        "foo${rnd.nextInt()}" : "bar${time:millisSinceEpoch()}",
                        "key1" : "${date:formatNowIso8601()}",
                        "${e}" : "${pi}"
                    }
                }
            }
        }
    }
};

Load
    .config(uriQueryConfig)
    .run();

will produce the HTTP requests with URIs like: /20190306.104255.627/kticoxcknpuy?key1=2019-03-06T10:42:56,768&2.718281828459045=3.141592653589793&foo1130828259=bar1551868976768

Note:

Don't use both synchronous and asynchronous expressions for the query args simultaneously. All configured query args are collected into the single expression input.