@selfcommunity/api-services
Version:
Client api for SelfCommunity.
141 lines (133 loc) • 6.45 kB
TypeScript
import { SCLiveStreamConnectionDetailsType, SCLiveStreamMonthlyDurationType, SCLiveStreamType } from '@selfcommunity/types';
import { AxiosRequestConfig } from 'axios';
import { SCPaginatedResponse } from '../../types';
import { LiveStreamCreateParams, LiveStreamRemoveParticipantParams, LiveStreamSearchParams } from '../../types/liveStream';
export interface LiveStreamApiClientInterface {
search(params?: LiveStreamSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCLiveStreamType>>;
getSpecificInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
create(data: LiveStreamCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
update(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
patch(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
delete(id: number | string, config?: AxiosRequestConfig): Promise<any>;
close(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
changeCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
join(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamConnectionDetailsType>;
removeParticipant(id: number | string, data: LiveStreamRemoveParticipantParams | FormData, config?: AxiosRequestConfig): Promise<any>;
getMonthlyDuration(config?: AxiosRequestConfig): Promise<SCLiveStreamMonthlyDurationType>;
}
/**
* Contains all the endpoints needed to manage LiveStreams.
*/
export declare class LiveStreamApiClient {
/**
* This endpoint performs LiveStreams search
* @param params
* @param config
*/
static search(params?: LiveStreamSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCLiveStreamType>>;
/**
* This endpoint retrieves a specific LiveStream.
* @param id
* @param config
*/
static getSpecificInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
/**
* This endpoint creates an LiveStream.
* @param data
* @param config
*/
static create(data: LiveStreamCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
/**
* This endpoint updates an LiveStream.
* @param id
* @param data
* @param config
*/
static update(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
/**
* This endpoint patches an LiveStream.
* @param id
* @param data
* @param config
*/
static patch(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
/**
* This endpoint deletes an LiveStream.
* @param id
* @param config
*/
static delete(id: number | string, config?: AxiosRequestConfig): Promise<any>;
/**
* This endpoint allows to close permanently a room
* @param id
* @param config
*/
static close(id: number | string, config?: AxiosRequestConfig): Promise<any>;
/**
* This endpoint changes the LiveStream avatar
* @param id
* @param data
* @param config
*/
static changeCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
/**
* This endpoint allows to attend an LiveStream
* @param id
* @param config
*/
static join(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamConnectionDetailsType>;
/**
* This endpoint remove participant from the specified live stream.
* If ban=true in the payload the user can no longer join the meet
* @param id
* @param data
* @param config
*/
static removeParticipant(id: number | string, data: LiveStreamRemoveParticipantParams | FormData, config?: AxiosRequestConfig): Promise<any>;
/**
* This endpoint retrieves LiveStream montlhy duration.
* @param config
*/
static getMonthlyDuration(config?: AxiosRequestConfig): Promise<SCLiveStreamMonthlyDurationType>;
}
/**
*
:::tip LiveStream service can be used in the following way:
```jsx
1. Import the service from our library:
import {LiveStreamService} from "@selfcommunity/api-services";
```
```jsx
2. Create a function and put the service inside it!
The async function `search` will return the LiveStreams matching the search query.
async searchLiveStreams() {
return await LiveStreamService.search();
}
```
```jsx
In case of required `params`, just add them inside the brackets.
async getSpecificInfo(liveStreamId) {
return await LiveStreamService.getSpecificInfo(liveStreamId);
}
```
```jsx
If you need to customize the request, you can add optional config params (`AxiosRequestConfig` type).
1. Declare it(or declare them, it is possible to add multiple params)
const headers = headers: {Authorization: `Bearer ${yourToken}`}
2. Add it inside the brackets and pass it to the function, as shown in the previous example!
```
:::
*/
export default class LiveStreamService {
static search(params?: LiveStreamSearchParams, config?: AxiosRequestConfig): Promise<SCPaginatedResponse<SCLiveStreamType>>;
static getSpecificInfo(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static create(data: LiveStreamCreateParams | FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static update(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static patch(id: number | string, data: SCLiveStreamType, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static delete(id: number | string, config?: AxiosRequestConfig): Promise<any>;
static close(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static changeCover(id: number | string, data: FormData, config?: AxiosRequestConfig): Promise<SCLiveStreamType>;
static join(id: number | string, config?: AxiosRequestConfig): Promise<SCLiveStreamConnectionDetailsType>;
static removeParticipant(id: number | string, data: LiveStreamRemoveParticipantParams | FormData, config?: AxiosRequestConfig): Promise<any>;
static getMonthlyDuration(config?: AxiosRequestConfig): Promise<SCLiveStreamMonthlyDurationType>;
}