@glandjs/http
Version:
A protocol adapter for HTTP built on top of the Gland architecture solution.
41 lines (40 loc) • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Search = exports.All = exports.Head = exports.Options = exports.Patch = exports.Put = exports.Delete = exports.Get = exports.Post = exports.RequestMapping = void 0;
const common_1 = require("@glandjs/common");
const enum_1 = require("../enum");
const defaultMetadata = {
[common_1.PATH_METADATA]: "/",
[common_1.METHOD_METADATA]: enum_1.RequestMethod.GET
};
const RequestMapping = (metadata = defaultMetadata) => {
const pathMetadata = metadata[common_1.PATH_METADATA];
const path = pathMetadata && pathMetadata.length ? pathMetadata : "/";
const requestMethod = metadata[common_1.METHOD_METADATA] || enum_1.RequestMethod.GET;
return (target, key, descriptor) => {
if (descriptor === undefined) {
Reflect.defineMetadata(common_1.PATH_METADATA, path, target);
Reflect.defineMetadata(common_1.METHOD_METADATA, requestMethod, target);
return;
}
Reflect.defineMetadata(common_1.PATH_METADATA, path, descriptor.value);
Reflect.defineMetadata(common_1.METHOD_METADATA, requestMethod, descriptor.value);
return descriptor;
};
};
exports.RequestMapping = RequestMapping;
const createMappingDecorator = (method) => (path) => {
return (0, exports.RequestMapping)({
[common_1.PATH_METADATA]: path,
[common_1.METHOD_METADATA]: method
});
};
exports.Post = createMappingDecorator(enum_1.RequestMethod.POST);
exports.Get = createMappingDecorator(enum_1.RequestMethod.GET);
exports.Delete = createMappingDecorator(enum_1.RequestMethod.DELETE);
exports.Put = createMappingDecorator(enum_1.RequestMethod.PUT);
exports.Patch = createMappingDecorator(enum_1.RequestMethod.PATCH);
exports.Options = createMappingDecorator(enum_1.RequestMethod.OPTIONS);
exports.Head = createMappingDecorator(enum_1.RequestMethod.HEAD);
exports.All = createMappingDecorator(enum_1.RequestMethod.ALL);
exports.Search = createMappingDecorator(enum_1.RequestMethod.SEARCH);