11import * as http from "http" ;
22import { sanitizeDsn } from "../node/helpers" ;
3- import { EventResponse , TraceoEvent } from "../transport/events" ;
3+ import { EventResponse , Incident } from "../transport/events" ;
44import { TraceoIncomingMessage , RequestOptions } from "../transport/http" ;
55import { getGlobalClientData } from "./global" ;
66import { isClientConnected } from "./is" ;
@@ -11,51 +11,71 @@ enum RequestStatus {
1111 ERROR = "error" ,
1212}
1313
14- const createHttpOptions = ( {
15- event,
16- } : {
17- event ?: TraceoEvent ;
18- } ) : http . RequestOptions => {
14+ const createHttpOptions = ( path : string ) : http . RequestOptions => {
1915 const client = getGlobalClientData ( ) ;
2016
2117 const { dsn } = client ;
22- const { host, secretKey, appId } = sanitizeDsn ( dsn ) ;
18+ const { host, secretKey } = sanitizeDsn ( dsn ) ;
2319
2420 const baseOptions : RequestOptions = {
2521 hostname : host ,
2622 method : "POST" ,
2723 headers : {
2824 "Content-Type" : "application/json" ,
29- "Content-Length" : `${ Buffer . byteLength ( JSON . stringify ( event ) ) } ` ,
3025 "Traceo-Secret-Key" : secretKey ,
3126 } ,
3227 } ;
3328
3429 return {
35- path : `/ ${ appId } ` ,
30+ path,
3631 ...baseOptions ,
3732 } ;
3833} ;
3934
4035const statusFromCode = ( code : number ) =>
4136 code >= 200 && code <= 299 ? RequestStatus . SUCCESS : RequestStatus . ERROR ;
4237
43- export const sendEvent = async (
44- event : TraceoEvent
45- ) : Promise < EventResponse | void > => {
46- const { environment, dsn } = getGlobalClientData ( ) ;
38+ export const sendRuntimeMetrics = async ( data : { } ) => {
39+ const { appId, environment } = getGlobalClientData ( ) ;
4740
48- if ( ! environment || ! dsn ) {
41+ if ( ! appId ) {
42+ return ;
43+ }
44+
45+ const httpOptions = createHttpOptions (
46+ `/${ appId } /${ environment } /metrics/runtime`
47+ ) ;
48+ await sendEvent ( data , httpOptions ) ;
49+ } ;
50+
51+ export const sendIncidentEvent = async ( incident : Incident ) => {
52+ const { environment, appId } = getGlobalClientData ( ) ;
53+
54+ if ( ! environment || ! appId ) {
4955 return ;
5056 }
5157
5258 const version = TRACEO_SDK_VERSION ;
5359 const baseData = { version, env : environment } ;
5460
55- const payload = Object . assign ( event , baseData ) ;
61+ const payload = Object . assign ( incident , baseData ) ;
62+
63+ const httpOptions = createHttpOptions ( `/${ appId } ` ) ;
64+ await sendEvent ( payload , httpOptions ) ;
65+ } ;
66+
67+ export const sendEvent = async (
68+ payload : any ,
69+ httpOptions : http . RequestOptions
70+ ) : Promise < EventResponse | void > => {
71+ const { environment, dsn } = getGlobalClientData ( ) ;
72+
73+ if ( ! environment || ! dsn ) {
74+ return ;
75+ }
5676
5777 return new Promise < EventResponse > ( ( resolve , reject ) => {
58- const httpOptions = createHttpOptions ( { event } ) ;
78+ // const httpOptions = createHttpOptions({ payload });
5979 if ( ! httpOptions ) {
6080 reject ( {
6181 statusCode : 400 ,
0 commit comments