59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
// Stream Service for WiFi-DensePose UI
|
|
|
|
import { API_CONFIG } from '../config/api.config.js';
|
|
import { apiService } from './api.service.js';
|
|
|
|
export class StreamService {
|
|
// Get streaming status
|
|
async getStatus() {
|
|
return apiService.get(API_CONFIG.ENDPOINTS.STREAM.STATUS);
|
|
}
|
|
|
|
// Start streaming (requires auth)
|
|
async start() {
|
|
return apiService.post(API_CONFIG.ENDPOINTS.STREAM.START);
|
|
}
|
|
|
|
// Stop streaming (requires auth)
|
|
async stop() {
|
|
return apiService.post(API_CONFIG.ENDPOINTS.STREAM.STOP);
|
|
}
|
|
|
|
// Get connected clients (requires auth)
|
|
async getClients() {
|
|
return apiService.get(API_CONFIG.ENDPOINTS.STREAM.CLIENTS);
|
|
}
|
|
|
|
// Disconnect a client (requires auth)
|
|
async disconnectClient(clientId) {
|
|
const endpoint = API_CONFIG.ENDPOINTS.STREAM.DISCONNECT_CLIENT.replace('{client_id}', clientId);
|
|
return apiService.delete(endpoint);
|
|
}
|
|
|
|
// Broadcast message (requires auth)
|
|
async broadcast(message, options = {}) {
|
|
const params = {
|
|
stream_type: options.streamType,
|
|
zone_ids: options.zoneIds?.join(',')
|
|
};
|
|
|
|
// Remove undefined values
|
|
Object.keys(params).forEach(key =>
|
|
params[key] === undefined && delete params[key]
|
|
);
|
|
|
|
return apiService.post(
|
|
API_CONFIG.ENDPOINTS.STREAM.BROADCAST,
|
|
message,
|
|
{ params }
|
|
);
|
|
}
|
|
|
|
// Get streaming metrics
|
|
async getMetrics() {
|
|
return apiService.get(API_CONFIG.ENDPOINTS.STREAM.METRICS);
|
|
}
|
|
}
|
|
|
|
// Create singleton instance
|
|
export const streamService = new StreamService(); |