You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.0 KiB
42 lines
1.0 KiB
4 weeks ago
|
const { checkEnv } = require('../utils/checkEnv');
|
||
|
|
||
|
const proto = exports;
|
||
|
/**
|
||
|
* head
|
||
|
* @param {String} name - object name
|
||
|
* @param {Object} options
|
||
|
* @param {{res}}
|
||
|
*/
|
||
|
|
||
|
proto.head = async function head(name, options = {}) {
|
||
|
checkEnv(
|
||
|
'Because HeadObject has gzip enabled, head cannot get the file size correctly. If you need to get the file size, please use getObjectMeta'
|
||
|
);
|
||
|
options.subres = Object.assign({}, options.subres);
|
||
|
if (options.versionId) {
|
||
|
options.subres.versionId = options.versionId;
|
||
|
}
|
||
|
const params = this._objectRequestParams('HEAD', name, options);
|
||
|
params.successStatuses = [200, 304];
|
||
|
|
||
|
const result = await this.request(params);
|
||
|
|
||
|
const data = {
|
||
|
meta: null,
|
||
|
res: result.res,
|
||
|
status: result.status
|
||
|
};
|
||
|
|
||
|
if (result.status === 200) {
|
||
|
Object.keys(result.headers).forEach(k => {
|
||
|
if (k.indexOf('x-oss-meta-') === 0) {
|
||
|
if (!data.meta) {
|
||
|
data.meta = {};
|
||
|
}
|
||
|
data.meta[k.substring(11)] = result.headers[k];
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
return data;
|
||
|
};
|