postLogStoreLogs()

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);
  }