UNPKG

pubnub

Version:

Publish & Subscribe Real-time Messaging with PubNub

44 lines (36 loc) 1.22 kB
/** * Handshake subscribe REST API module. * * @internal */ import RequestOperation from '../../constants/operations'; import { BaseSubscribeRequest } from '../subscribe'; import { encodeNames } from '../../utils'; import { Query } from '../../types/api'; /** * Handshake subscribe request. * * Separate subscribe request required by Event Engine. * * @internal */ export class HandshakeSubscribeRequest extends BaseSubscribeRequest { operation(): RequestOperation { return RequestOperation.PNHandshakeOperation; } protected get path(): string { const { keySet: { subscribeKey }, channels = [], } = this.parameters; return `/v2/subscribe/${subscribeKey}/${encodeNames(channels.sort(), ',')}/0`; } protected get queryParameters(): Query { const { channelGroups, filterExpression, state } = this.parameters; const query: Query = { ee: '' }; if (channelGroups && channelGroups.length > 0) query['channel-group'] = channelGroups.sort().join(','); if (filterExpression && filterExpression.length > 0) query['filter-expr'] = filterExpression; if (state && Object.keys(state).length > 0) query['state'] = JSON.stringify(state); return query; } }