Skip to content
This repository was archived by the owner on Apr 4, 2023. It is now read-only.

Commit 78d6d5a

Browse files
author
Juras Norkus
committed
feat(performance): custom http metrics
1 parent 9d01fef commit 78d6d5a

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

src/performance/performance.android.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ export function startTrace(name: string): FirebaseTrace {
44
return new FirebaseTrace(trace);
55
}
66

7+
export function startHttpMetric(url: string, method: string) {
8+
const httpMetric = com.google.firebase.perf.FirebasePerformance.getInstance().newHttpMetric(url, method);
9+
httpMetric.start();
10+
return new FirebaseHttpMetric(httpMetric);
11+
}
12+
713
export class FirebaseTrace {
814
constructor(private nativeTrace: com.google.firebase.perf.metrics.Trace) {
915
}
@@ -39,3 +45,19 @@ export class FirebaseTrace {
3945
this.nativeTrace.stop();
4046
}
4147
}
48+
49+
export class FirebaseHttpMetric {
50+
constructor(private nativeHttpMetric: com.google.firebase.perf.metrics.HttpMetric) {}
51+
52+
setRequestPayloadSize(size: number) {
53+
this.nativeHttpMetric.setRequestPayloadSize(size);
54+
}
55+
56+
setHttpResponseCode(responseCode: number) {
57+
this.nativeHttpMetric.setHttpResponseCode(responseCode);
58+
}
59+
60+
stop(): void {
61+
this.nativeHttpMetric.stop();
62+
}
63+
}

src/performance/performance.d.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,11 @@ export declare class FirebaseTrace {
88
}
99

1010
export declare function startTrace(name: string): FirebaseTrace;
11+
12+
export declare class FirebaseHttpMetric {
13+
setRequestPayloadSize(size: number): void;
14+
setHttpResponseCode(responseCode: number): void;
15+
stop(): void;
16+
}
17+
18+
export declare function startHttpMetric(url: string, method: string): FirebaseHttpMetric;

src/performance/performance.ios.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ export function startTrace(name: string): FirebaseTrace {
44
return new FirebaseTrace(FIRPerformance.startTraceWithName(name));
55
}
66

7+
export function startHttpMetric(url: string, method: string) {
8+
const httpMetric = FIRHTTPMetric.alloc().initWithURLHTTPMethod(NSURL.URLWithString(url), getHttpMethodFromString(method));
9+
httpMetric.start();
10+
return new FirebaseHttpMetric(httpMetric);
11+
}
12+
713
export class FirebaseTrace {
814
constructor(private nativeTrace: FIRTrace) {
915
}
@@ -32,3 +38,41 @@ export class FirebaseTrace {
3238
this.nativeTrace.stop();
3339
}
3440
}
41+
42+
export class FirebaseHttpMetric {
43+
constructor(private nativeHttpMetric: FIRHTTPMetric) {
44+
}
45+
46+
setRequestPayloadSize(size: number) {
47+
this.nativeHttpMetric.requestPayloadSize = size;
48+
}
49+
50+
setHttpResponseCode(responseCode: number) {
51+
this.nativeHttpMetric.responseCode = responseCode;
52+
}
53+
54+
stop(): void {
55+
this.nativeHttpMetric.stop();
56+
}
57+
}
58+
59+
function getHttpMethodFromString(method: string): FIRHTTPMethod {
60+
switch (method) {
61+
case 'GET':
62+
return FIRHTTPMethod.GET;
63+
case 'PUT':
64+
return FIRHTTPMethod.PUT;
65+
case 'POST':
66+
return FIRHTTPMethod.POST;
67+
case 'DELETE':
68+
return FIRHTTPMethod.DELETE;
69+
case 'HEAD':
70+
return FIRHTTPMethod.HEAD;
71+
case 'PATCH':
72+
return FIRHTTPMethod.PATCH;
73+
case 'OPTIONS':
74+
return FIRHTTPMethod.OPTIONS;
75+
default:
76+
return null;
77+
}
78+
}

0 commit comments

Comments
 (0)