in lib/client.js [326:379]
postLogStoreLogs(projectName, logstoreName, data = {}, options) {
const path = `/logstores/${logstoreName}/shards/lb`;
if (!Array.isArray(data.logs)) {
throw new Error('data.logs must be array!')
}
// add logs
const payload = {
Logs: data.logs.map(log => {
let logPayload = {
Time: log.timestamp,
Contents: Object.entries(log.content).map(([Key, Value]) => {
const logContentPayload = { Key, Value };
const err = LogContentProto.verify(logContentPayload);
if (err) throw err;
return logContentPayload
})
}
if (log.timestampNsPart !== undefined) {
logPayload.TimeNs = log.timestampNsPart
}
const err = LogProto.verify(logPayload);
if (err) throw err;
return logPayload;
})
};
// add tags
if (Array.isArray(data.tags)) {
payload.LogTags = data.tags.reduce((tags, tag) => {
Object.entries(tag).forEach(([Key, Value]) => {
const tagPayload = { Key, Value };
const err = LogTagProto.verify(tagPayload);
if (err) throw err;
tags.push(tagPayload)
});
return tags;
}, []);
}
if (data.topic && typeof data.topic === 'string') {
payload.Topic = data.topic;
}
if (data.source && typeof data.source === 'string') {
payload.Source = data.source;
}
const err = LogGroupProto.verify(payload);
if (err) throw new Error(err);
let body = LogGroupProto.create(payload);
body = LogGroupProto.encode(body).finish();
const rawLength = body.byteLength;
const headers = {
'x-log-bodyrawsize': rawLength,
'content-type': 'application/x-protobuf'
};
return this._request('POST', projectName, path, {}, body, headers, options);
}