[perf] Break out Trace/HttpMetric classes
This commit is contained in:
parent
90bbb972ea
commit
8f6299f07f
96
lib/modules/perf/HttpMetric.js
Normal file
96
lib/modules/perf/HttpMetric.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
/**
|
||||||
|
* @flow
|
||||||
|
* Trace representation wrapper
|
||||||
|
*/
|
||||||
|
import { getNativeModule } from '../../utils/native';
|
||||||
|
import type PerformanceMonitoring from './';
|
||||||
|
|
||||||
|
export default class HttpMetric {
|
||||||
|
url: string;
|
||||||
|
httpMethod: string;
|
||||||
|
_perf: PerformanceMonitoring;
|
||||||
|
|
||||||
|
constructor(perf: PerformanceMonitoring, url: string, httpMethod: string) {
|
||||||
|
this._perf = perf;
|
||||||
|
this.url = url;
|
||||||
|
this.httpMethod = httpMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
getAttribute(attribute: string): Promise<string> {
|
||||||
|
return getNativeModule(this._perf).getHttpMetricAttribute(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
attribute
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
getAttributes(): Promise<Object> {
|
||||||
|
return getNativeModule(this._perf).getHttpMetricAttributes(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
putAttribute(attribute: string, value: string): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).putHttpMetricAttribute(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
attribute,
|
||||||
|
value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeAttribute(attribute: string): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).removeHttpMetricAttribute(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
attribute
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setHttpResponseCode(code: number): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).setHttpMetricResponseCode(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
code
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setRequestPayloadSize(bytes: number): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).setHttpMetricRequestPayloadSize(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
bytes
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setResponseContentType(type: string): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).setHttpMetricResponseContentType(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
type
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
setResponsePayloadSize(bytes: number): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).setHttpMetricResponsePayloadSize(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod,
|
||||||
|
bytes
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
start(): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).startHttpMetric(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).stopHttpMetric(
|
||||||
|
this.url,
|
||||||
|
this.httpMethod
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -14,15 +14,60 @@ export default class Trace {
|
|||||||
this.identifier = identifier;
|
this.identifier = identifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
start(): void {
|
getAttribute(attribute: string): Promise<string> {
|
||||||
getNativeModule(this._perf).start(this.identifier);
|
return getNativeModule(this._perf).getTraceAttribute(
|
||||||
|
this.identifier,
|
||||||
|
attribute
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
stop(): void {
|
getAttributes(): Promise<Object> {
|
||||||
getNativeModule(this._perf).stop(this.identifier);
|
return getNativeModule(this._perf).getTraceAttributes(this.identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
incrementCounter(event: string): void {
|
getMetric(metricName: string): Promise<number> {
|
||||||
getNativeModule(this._perf).incrementCounter(this.identifier, event);
|
return getNativeModule(this._perf).getTraceLongMetric(
|
||||||
|
this.identifier,
|
||||||
|
metricName
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
incrementMetric(metricName: string, incrementBy: number): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).incrementTraceMetric(
|
||||||
|
this.identifier,
|
||||||
|
metricName,
|
||||||
|
incrementBy
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
putAttribute(attribute: string, value: string): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).putTraceAttribute(
|
||||||
|
this.identifier,
|
||||||
|
attribute,
|
||||||
|
value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
putMetric(metricName: string, value: number): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).putTraceMetric(
|
||||||
|
this.identifier,
|
||||||
|
metricName,
|
||||||
|
value
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
removeAttribute(attribute: string): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).removeTraceAttribute(
|
||||||
|
this.identifier,
|
||||||
|
attribute
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
start(): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).startTrace(this.identifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
stop(): Promise<null> {
|
||||||
|
return getNativeModule(this._perf).stopTrace(this.identifier);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@
|
|||||||
* Performance monitoring representation wrapper
|
* Performance monitoring representation wrapper
|
||||||
*/
|
*/
|
||||||
import Trace from './Trace';
|
import Trace from './Trace';
|
||||||
|
import HttpMetric from './HttpMetric';
|
||||||
import ModuleBase from '../../utils/ModuleBase';
|
import ModuleBase from '../../utils/ModuleBase';
|
||||||
import { getNativeModule } from '../../utils/native';
|
import { getNativeModule } from '../../utils/native';
|
||||||
|
|
||||||
@ -27,7 +28,13 @@ export default class PerformanceMonitoring extends ModuleBase {
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
setPerformanceCollectionEnabled(enabled: boolean): void {
|
setPerformanceCollectionEnabled(enabled: boolean): void {
|
||||||
getNativeModule(this).setPerformanceCollectionEnabled(enabled);
|
if (typeof enabled !== 'boolean') {
|
||||||
|
throw new Error(
|
||||||
|
'firebase.perf().setPerformanceCollectionEnabled() requires a boolean value'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return getNativeModule(this).setPerformanceCollectionEnabled(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -35,8 +42,22 @@ export default class PerformanceMonitoring extends ModuleBase {
|
|||||||
* @param trace
|
* @param trace
|
||||||
*/
|
*/
|
||||||
newTrace(trace: string): Trace {
|
newTrace(trace: string): Trace {
|
||||||
|
if (typeof trace !== 'string') {
|
||||||
|
throw new Error('firebase.perf().newTrace() requires a string value');
|
||||||
|
}
|
||||||
|
|
||||||
return new Trace(this, trace);
|
return new Trace(this, trace);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
newHttpMetric(url: string, httpMethod: string) {
|
||||||
|
if (typeof url !== 'string' || typeof httpMethod !== 'string') {
|
||||||
|
throw new Error(
|
||||||
|
'firebase.perf().newHttpMetric() requires url and httpMethod string values'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
return new HttpMetric(this, url, httpMethod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const statics = {};
|
export const statics = {};
|
||||||
|
@ -196,6 +196,7 @@ export function noop(): void {}
|
|||||||
* @returns {*}
|
* @returns {*}
|
||||||
*/
|
*/
|
||||||
export function stripTrailingSlash(str: string): string {
|
export function stripTrailingSlash(str: string): string {
|
||||||
|
if (!str || !isString(str)) return str;
|
||||||
return str.endsWith('/') ? str.slice(0, -1) : str;
|
return str.endsWith('/') ? str.slice(0, -1) : str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user