logdna/ts/logdna.logdnaaccount.ts

61 lines
1.5 KiB
TypeScript
Raw Normal View History

2018-11-01 17:13:34 +00:00
import * as plugins from './logdna.plugins';
import { LogdnaMessage } from './logdna.classes.logmessage';
/**
* the main logdna account
*/
export class LogdnaAccount {
apiKey: string;
baseUrl = 'https://logs.logdna.com/logs/ingest';
/**
* Create basic authentication
*/
createBasicAuth() {
const userNamePasswordString = `${this.apiKey}:`;
return `Basic ${plugins.smartstring.base64.encode(userNamePasswordString)}`;
}
/**
*
* @param apiKeyArg
*/
constructor(apiKeyArg: string) {
this.apiKey = apiKeyArg;
}
/**
* sends a logmessage
* async, so it returns a Promise. In most cases it does not make sense to wait for it though.
*/
public async sendLogDnaMessage(logdnaMessageArg: LogdnaMessage) {
const lm = logdnaMessageArg;
const euc = encodeURIComponent;
2018-11-02 12:57:14 +00:00
// let construct the request uri
2018-11-01 17:13:34 +00:00
const requestUrlWithParams = `${this.baseUrl}?hostname=${euc(
lm.options.hostname
)}&mac=${euc(lm.options.mac)}&ip=1${euc(lm.options.ip)}&now=${Date.now()}`;
2018-11-02 12:57:14 +00:00
// lets post the message to logdna
2018-11-01 17:13:34 +00:00
await plugins.smartrequest.postJson(requestUrlWithParams, {
headers: {
'Authorization': this.createBasicAuth(),
'charset': 'UTF-8'
},
requestBody: {
"lines": [
{
2018-11-02 12:57:14 +00:00
"line": lm.options.line,
"app": lm.options.app,
"level": lm.options.level,
"env": lm.options.env,
"meta": lm.options.meta
2018-11-01 17:13:34 +00:00
}
]
}
});
}
}