pluto-http-client
Version:
HTTP client for NodeJS. Inspired in the Java JAX-RS spec so you can expect excellence, versatility and extensibility.
38 lines (37 loc) • 1.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EntityTag = void 0;
const header_1 = require("./header");
const http_headers_1 = require("./http-headers");
const http_header_reader_1 = require("../utils/http-header-reader");
class EntityTag extends header_1.Header {
constructor(value, isWeak = false) {
super(http_headers_1.HttpHeaders.ETAG, value);
this._isWeak = isWeak;
}
get value() {
return `${this.isWeak ? "W/" : ""}"${super.value}"`;
}
rawValue() {
return super.value;
}
get isWeak() {
return this._isWeak;
}
static fromString(header) {
const reader = new http_header_reader_1.HttpHeaderReader(header);
const e = reader.next(false);
if (e == http_header_reader_1.Event.QuotedString) {
return new EntityTag(reader.value || "");
}
if (e == http_header_reader_1.Event.Token) {
const ev = reader.value;
if (ev != null && ev.length > 0 && ev.charAt(0) == 'W') {
reader.nextSeparator('/');
return new EntityTag(reader.nextQuotedString() || "", true);
}
}
throw new Error(`Error parsing entity tag ${header}`);
}
}
exports.EntityTag = EntityTag;