pubnub
Version:
Publish & Subscribe Real-time Messaging with PubNub
63 lines (53 loc) • 1.64 kB
text/typescript
/**
* Remove UUID Metadata REST API module.
*
* @internal
*/
import { TransportMethod } from '../../../types/transport-request';
import { AbstractRequest } from '../../../components/request';
import RequestOperation from '../../../constants/operations';
import * as AppContext from '../../../types/api/app-context';
import { KeySet } from '../../../types/api';
import { encodeString } from '../../../utils';
// --------------------------------------------------------
// ------------------------ Types -------------------------
// --------------------------------------------------------
// region Types
/**
* Request configuration parameters.
*/
type RequestParameters = AppContext.RemoveUUIDMetadataParameters & {
/**
* PubNub REST API access key set.
*/
keySet: KeySet;
};
// endregion
/**
* Remove UUID Metadata request.
*
* @internal
*/
export class RemoveUUIDMetadataRequest<Response extends AppContext.RemoveUUIDMetadataResponse> extends AbstractRequest<
Response,
Response
> {
constructor(private readonly parameters: RequestParameters) {
super({ method: TransportMethod.DELETE });
// Remap for backward compatibility.
if (this.parameters.userId) this.parameters.uuid = this.parameters.userId;
}
operation(): RequestOperation {
return RequestOperation.PNRemoveUUIDMetadataOperation;
}
validate(): string | undefined {
if (!this.parameters.uuid) return "'uuid' cannot be empty";
}
protected get path(): string {
const {
keySet: { subscribeKey },
uuid,
} = this.parameters;
return `/v2/objects/${subscribeKey}/uuids/${encodeString(uuid!)}`;
}
}