Implemented API from code generated by OpenAPI

This commit is contained in:
Koper
2023-08-10 18:33:50 +07:00
parent e1b33b6857
commit e8c054b4ca
24 changed files with 3331 additions and 36 deletions

View File

@@ -10,6 +10,7 @@ Reflector is a React application that uses WebRTC to stream audio from the brows
- [Installation](#installation)
- [Run the Application](#run-the-application)
- [WebRTC Integration](#webrtc-integration)
- [OpenAPI Code Generation](#openapi-code-generation)
- [Contribution Guidelines](#contribution-guidelines)
## Project Architecture
@@ -73,6 +74,16 @@ The received data is expected to be a JSON object containing the live transcript
This data is then returned from the `useWebRTC` hook and can be used in your components.
## OpenAPI Code Generation
To generate the TypeScript files from the openapi.json file, make sure the python server is running, then run:
```
openapi-generator-cli generate -i http://localhost:1250/openapi.json -g typescript-fetch -o app/api
```
You may need to run `yarn global add @openapitools/openapi-generator-cli` first. You also need a Java runtime installed on your machine.
## Contribution Guidelines
All new contributions should be made in a separate branch. Before any code is merged into `master`, it requires a code review.

View File

@@ -0,0 +1,23 @@
# OpenAPI Generator Ignore
# Generated by openapi-generator https://github.com/openapitools/openapi-generator
# Use this file to prevent files from being overwritten by the generator.
# The patterns follow closely to .gitignore or .dockerignore.
# As an example, the C# client generator defines ApiClient.cs.
# You can make changes and tell OpenAPI Generator to ignore just this file by uncommenting the following line:
#ApiClient.cs
# You can match any string of characters against a directory, file or extension with a single asterisk (*):
#foo/*/qux
# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux
# You can recursively match patterns against a directory, file or extension with a double asterisk (**):
#foo/**/qux
# This matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux
# You can also negate patterns with an exclamation (!).
# For example, you can ignore all files in a docs folder with the file extension .md:
#docs/*.md
# Then explicitly reverse the ignore rule for a single file:
#!docs/README.md

View File

@@ -0,0 +1,15 @@
.openapi-generator-ignore
apis/DefaultApi.ts
apis/index.ts
index.ts
models/CreateTranscript.ts
models/DeletionStatus.ts
models/GetTranscript.ts
models/HTTPValidationError.ts
models/PageGetTranscript.ts
models/RtcOffer.ts
models/TranscriptTopic.ts
models/UpdateTranscript.ts
models/ValidationError.ts
models/index.ts
runtime.ts

View File

@@ -0,0 +1 @@
6.6.0

View File

@@ -0,0 +1,655 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import * as runtime from "../runtime";
import type {
CreateTranscript,
DeletionStatus,
GetTranscript,
HTTPValidationError,
PageGetTranscript,
RtcOffer,
UpdateTranscript,
} from "../models";
import {
CreateTranscriptFromJSON,
CreateTranscriptToJSON,
DeletionStatusFromJSON,
DeletionStatusToJSON,
GetTranscriptFromJSON,
GetTranscriptToJSON,
HTTPValidationErrorFromJSON,
HTTPValidationErrorToJSON,
PageGetTranscriptFromJSON,
PageGetTranscriptToJSON,
RtcOfferFromJSON,
RtcOfferToJSON,
UpdateTranscriptFromJSON,
UpdateTranscriptToJSON,
} from "../models";
export interface RtcOfferOfferPostRequest {
rtcOffer: RtcOffer;
}
export interface TranscriptDeleteV1TranscriptsTranscriptIdDeleteRequest {
transcriptId: any;
}
export interface TranscriptGetAudioV1TranscriptsTranscriptIdAudioGetRequest {
transcriptId: any;
}
export interface TranscriptGetTopicsV1TranscriptsTranscriptIdTopicsGetRequest {
transcriptId: any;
}
export interface TranscriptGetV1TranscriptsTranscriptIdGetRequest {
transcriptId: any;
}
export interface TranscriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGetRequest {
transcriptId: any;
}
export interface TranscriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPostRequest {
transcriptId: any;
rtcOffer: RtcOffer;
}
export interface TranscriptUpdateV1TranscriptsTranscriptIdPatchRequest {
transcriptId: any;
updateTranscript: UpdateTranscript;
}
export interface TranscriptsCreateV1TranscriptsPostRequest {
createTranscript: CreateTranscript;
}
export interface TranscriptsListV1TranscriptsGetRequest {
page?: any;
size?: any;
}
/**
*
*/
export class DefaultApi extends runtime.BaseAPI {
/**
* Rtc Offer
*/
async rtcOfferOfferPostRaw(
requestParameters: RtcOfferOfferPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<any>> {
if (
requestParameters.rtcOffer === null ||
requestParameters.rtcOffer === undefined
) {
throw new runtime.RequiredError(
"rtcOffer",
"Required parameter requestParameters.rtcOffer was null or undefined when calling rtcOfferOfferPost.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
headerParameters["Content-Type"] = "application/json";
const response = await this.request(
{
path: `/offer`,
method: "POST",
headers: headerParameters,
query: queryParameters,
body: RtcOfferToJSON(requestParameters.rtcOffer),
},
initOverrides,
);
if (this.isJsonMime(response.headers.get("content-type"))) {
return new runtime.JSONApiResponse<any>(response);
} else {
return new runtime.TextApiResponse(response) as any;
}
}
/**
* Rtc Offer
*/
async rtcOfferOfferPost(
requestParameters: RtcOfferOfferPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<any> {
const response = await this.rtcOfferOfferPostRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Delete
*/
async transcriptDeleteV1TranscriptsTranscriptIdDeleteRaw(
requestParameters: TranscriptDeleteV1TranscriptsTranscriptIdDeleteRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<DeletionStatus>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptDeleteV1TranscriptsTranscriptIdDelete.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "DELETE",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
return new runtime.JSONApiResponse(response, (jsonValue) =>
DeletionStatusFromJSON(jsonValue),
);
}
/**
* Transcript Delete
*/
async transcriptDeleteV1TranscriptsTranscriptIdDelete(
requestParameters: TranscriptDeleteV1TranscriptsTranscriptIdDeleteRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<DeletionStatus> {
const response =
await this.transcriptDeleteV1TranscriptsTranscriptIdDeleteRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Get Audio
*/
async transcriptGetAudioV1TranscriptsTranscriptIdAudioGetRaw(
requestParameters: TranscriptGetAudioV1TranscriptsTranscriptIdAudioGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<any>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptGetAudioV1TranscriptsTranscriptIdAudioGet.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}/audio`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "GET",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
if (this.isJsonMime(response.headers.get("content-type"))) {
return new runtime.JSONApiResponse<any>(response);
} else {
return new runtime.TextApiResponse(response) as any;
}
}
/**
* Transcript Get Audio
*/
async transcriptGetAudioV1TranscriptsTranscriptIdAudioGet(
requestParameters: TranscriptGetAudioV1TranscriptsTranscriptIdAudioGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<any> {
const response =
await this.transcriptGetAudioV1TranscriptsTranscriptIdAudioGetRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Get Topics
*/
async transcriptGetTopicsV1TranscriptsTranscriptIdTopicsGetRaw(
requestParameters: TranscriptGetTopicsV1TranscriptsTranscriptIdTopicsGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<any>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptGetTopicsV1TranscriptsTranscriptIdTopicsGet.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}/topics`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "GET",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
if (this.isJsonMime(response.headers.get("content-type"))) {
return new runtime.JSONApiResponse<any>(response);
} else {
return new runtime.TextApiResponse(response) as any;
}
}
/**
* Transcript Get Topics
*/
async transcriptGetTopicsV1TranscriptsTranscriptIdTopicsGet(
requestParameters: TranscriptGetTopicsV1TranscriptsTranscriptIdTopicsGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<any> {
const response =
await this.transcriptGetTopicsV1TranscriptsTranscriptIdTopicsGetRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Get
*/
async transcriptGetV1TranscriptsTranscriptIdGetRaw(
requestParameters: TranscriptGetV1TranscriptsTranscriptIdGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<GetTranscript>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptGetV1TranscriptsTranscriptIdGet.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "GET",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
return new runtime.JSONApiResponse(response, (jsonValue) =>
GetTranscriptFromJSON(jsonValue),
);
}
/**
* Transcript Get
*/
async transcriptGetV1TranscriptsTranscriptIdGet(
requestParameters: TranscriptGetV1TranscriptsTranscriptIdGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<GetTranscript> {
const response = await this.transcriptGetV1TranscriptsTranscriptIdGetRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Get Websocket Events
*/
async transcriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGetRaw(
requestParameters: TranscriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<any>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGet.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}/events`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "GET",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
if (this.isJsonMime(response.headers.get("content-type"))) {
return new runtime.JSONApiResponse<any>(response);
} else {
return new runtime.TextApiResponse(response) as any;
}
}
/**
* Transcript Get Websocket Events
*/
async transcriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGet(
requestParameters: TranscriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<any> {
const response =
await this.transcriptGetWebsocketEventsV1TranscriptsTranscriptIdEventsGetRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Record Webrtc
*/
async transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPostRaw(
requestParameters: TranscriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<any>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPost.",
);
}
if (
requestParameters.rtcOffer === null ||
requestParameters.rtcOffer === undefined
) {
throw new runtime.RequiredError(
"rtcOffer",
"Required parameter requestParameters.rtcOffer was null or undefined when calling transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPost.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
headerParameters["Content-Type"] = "application/json";
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}/record/webrtc`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "POST",
headers: headerParameters,
query: queryParameters,
body: RtcOfferToJSON(requestParameters.rtcOffer),
},
initOverrides,
);
if (this.isJsonMime(response.headers.get("content-type"))) {
return new runtime.JSONApiResponse<any>(response);
} else {
return new runtime.TextApiResponse(response) as any;
}
}
/**
* Transcript Record Webrtc
*/
async transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPost(
requestParameters: TranscriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<any> {
const response =
await this.transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPostRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcript Update
*/
async transcriptUpdateV1TranscriptsTranscriptIdPatchRaw(
requestParameters: TranscriptUpdateV1TranscriptsTranscriptIdPatchRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<GetTranscript>> {
if (
requestParameters.transcriptId === null ||
requestParameters.transcriptId === undefined
) {
throw new runtime.RequiredError(
"transcriptId",
"Required parameter requestParameters.transcriptId was null or undefined when calling transcriptUpdateV1TranscriptsTranscriptIdPatch.",
);
}
if (
requestParameters.updateTranscript === null ||
requestParameters.updateTranscript === undefined
) {
throw new runtime.RequiredError(
"updateTranscript",
"Required parameter requestParameters.updateTranscript was null or undefined when calling transcriptUpdateV1TranscriptsTranscriptIdPatch.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
headerParameters["Content-Type"] = "application/json";
const response = await this.request(
{
path: `/v1/transcripts/{transcript_id}`.replace(
`{${"transcript_id"}}`,
encodeURIComponent(String(requestParameters.transcriptId)),
),
method: "PATCH",
headers: headerParameters,
query: queryParameters,
body: UpdateTranscriptToJSON(requestParameters.updateTranscript),
},
initOverrides,
);
return new runtime.JSONApiResponse(response, (jsonValue) =>
GetTranscriptFromJSON(jsonValue),
);
}
/**
* Transcript Update
*/
async transcriptUpdateV1TranscriptsTranscriptIdPatch(
requestParameters: TranscriptUpdateV1TranscriptsTranscriptIdPatchRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<GetTranscript> {
const response =
await this.transcriptUpdateV1TranscriptsTranscriptIdPatchRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcripts Create
*/
async transcriptsCreateV1TranscriptsPostRaw(
requestParameters: TranscriptsCreateV1TranscriptsPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<GetTranscript>> {
if (
requestParameters.createTranscript === null ||
requestParameters.createTranscript === undefined
) {
throw new runtime.RequiredError(
"createTranscript",
"Required parameter requestParameters.createTranscript was null or undefined when calling transcriptsCreateV1TranscriptsPost.",
);
}
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
headerParameters["Content-Type"] = "application/json";
const response = await this.request(
{
path: `/v1/transcripts`,
method: "POST",
headers: headerParameters,
query: queryParameters,
body: CreateTranscriptToJSON(requestParameters.createTranscript),
},
initOverrides,
);
return new runtime.JSONApiResponse(response, (jsonValue) =>
GetTranscriptFromJSON(jsonValue),
);
}
/**
* Transcripts Create
*/
async transcriptsCreateV1TranscriptsPost(
requestParameters: TranscriptsCreateV1TranscriptsPostRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<GetTranscript> {
const response = await this.transcriptsCreateV1TranscriptsPostRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
/**
* Transcripts List
*/
async transcriptsListV1TranscriptsGetRaw(
requestParameters: TranscriptsListV1TranscriptsGetRequest,
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<runtime.ApiResponse<PageGetTranscript>> {
const queryParameters: any = {};
if (requestParameters.page !== undefined) {
queryParameters["page"] = requestParameters.page;
}
if (requestParameters.size !== undefined) {
queryParameters["size"] = requestParameters.size;
}
const headerParameters: runtime.HTTPHeaders = {};
const response = await this.request(
{
path: `/v1/transcripts`,
method: "GET",
headers: headerParameters,
query: queryParameters,
},
initOverrides,
);
return new runtime.JSONApiResponse(response, (jsonValue) =>
PageGetTranscriptFromJSON(jsonValue),
);
}
/**
* Transcripts List
*/
async transcriptsListV1TranscriptsGet(
requestParameters: TranscriptsListV1TranscriptsGetRequest = {},
initOverrides?: RequestInit | runtime.InitOverrideFunction,
): Promise<PageGetTranscript> {
const response = await this.transcriptsListV1TranscriptsGetRaw(
requestParameters,
initOverrides,
);
return await response.value();
}
}

View File

@@ -0,0 +1,3 @@
/* tslint:disable */
/* eslint-disable */
export * from "./DefaultApi";

5
www/app/api/index.ts Normal file
View File

@@ -0,0 +1,5 @@
/* tslint:disable */
/* eslint-disable */
export * from "./runtime";
export * from "./apis";
export * from "./models";

View File

@@ -0,0 +1,66 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface CreateTranscript
*/
export interface CreateTranscript {
/**
*
* @type {any}
* @memberof CreateTranscript
*/
name: any | null;
}
/**
* Check if a given object implements the CreateTranscript interface.
*/
export function instanceOfCreateTranscript(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "name" in value;
return isInstance;
}
export function CreateTranscriptFromJSON(json: any): CreateTranscript {
return CreateTranscriptFromJSONTyped(json, false);
}
export function CreateTranscriptFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): CreateTranscript {
if (json === undefined || json === null) {
return json;
}
return {
name: json["name"],
};
}
export function CreateTranscriptToJSON(value?: CreateTranscript | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
name: value.name,
};
}

View File

@@ -0,0 +1,66 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface DeletionStatus
*/
export interface DeletionStatus {
/**
*
* @type {any}
* @memberof DeletionStatus
*/
status: any | null;
}
/**
* Check if a given object implements the DeletionStatus interface.
*/
export function instanceOfDeletionStatus(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "status" in value;
return isInstance;
}
export function DeletionStatusFromJSON(json: any): DeletionStatus {
return DeletionStatusFromJSONTyped(json, false);
}
export function DeletionStatusFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): DeletionStatus {
if (json === undefined || json === null) {
return json;
}
return {
status: json["status"],
};
}
export function DeletionStatusToJSON(value?: DeletionStatus | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
status: value.status,
};
}

View File

@@ -0,0 +1,111 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface GetTranscript
*/
export interface GetTranscript {
/**
*
* @type {any}
* @memberof GetTranscript
*/
id: any | null;
/**
*
* @type {any}
* @memberof GetTranscript
*/
name: any | null;
/**
*
* @type {any}
* @memberof GetTranscript
*/
status: any | null;
/**
*
* @type {any}
* @memberof GetTranscript
*/
locked: any | null;
/**
*
* @type {any}
* @memberof GetTranscript
*/
duration: any | null;
/**
*
* @type {any}
* @memberof GetTranscript
*/
createdAt: any | null;
}
/**
* Check if a given object implements the GetTranscript interface.
*/
export function instanceOfGetTranscript(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "id" in value;
isInstance = isInstance && "name" in value;
isInstance = isInstance && "status" in value;
isInstance = isInstance && "locked" in value;
isInstance = isInstance && "duration" in value;
isInstance = isInstance && "createdAt" in value;
return isInstance;
}
export function GetTranscriptFromJSON(json: any): GetTranscript {
return GetTranscriptFromJSONTyped(json, false);
}
export function GetTranscriptFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): GetTranscript {
if (json === undefined || json === null) {
return json;
}
return {
id: json["id"],
name: json["name"],
status: json["status"],
locked: json["locked"],
duration: json["duration"],
createdAt: json["created_at"],
};
}
export function GetTranscriptToJSON(value?: GetTranscript | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
id: value.id,
name: value.name,
status: value.status,
locked: value.locked,
duration: value.duration,
created_at: value.createdAt,
};
}

View File

@@ -0,0 +1,67 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface HTTPValidationError
*/
export interface HTTPValidationError {
/**
*
* @type {any}
* @memberof HTTPValidationError
*/
detail?: any | null;
}
/**
* Check if a given object implements the HTTPValidationError interface.
*/
export function instanceOfHTTPValidationError(value: object): boolean {
let isInstance = true;
return isInstance;
}
export function HTTPValidationErrorFromJSON(json: any): HTTPValidationError {
return HTTPValidationErrorFromJSONTyped(json, false);
}
export function HTTPValidationErrorFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): HTTPValidationError {
if (json === undefined || json === null) {
return json;
}
return {
detail: !exists(json, "detail") ? undefined : json["detail"],
};
}
export function HTTPValidationErrorToJSON(
value?: HTTPValidationError | null,
): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
detail: value.detail,
};
}

View File

@@ -0,0 +1,101 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface PageGetTranscript
*/
export interface PageGetTranscript {
/**
*
* @type {any}
* @memberof PageGetTranscript
*/
items: any | null;
/**
*
* @type {any}
* @memberof PageGetTranscript
*/
total: any | null;
/**
*
* @type {any}
* @memberof PageGetTranscript
*/
page: any | null;
/**
*
* @type {any}
* @memberof PageGetTranscript
*/
size: any | null;
/**
*
* @type {any}
* @memberof PageGetTranscript
*/
pages?: any | null;
}
/**
* Check if a given object implements the PageGetTranscript interface.
*/
export function instanceOfPageGetTranscript(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "items" in value;
isInstance = isInstance && "total" in value;
isInstance = isInstance && "page" in value;
isInstance = isInstance && "size" in value;
return isInstance;
}
export function PageGetTranscriptFromJSON(json: any): PageGetTranscript {
return PageGetTranscriptFromJSONTyped(json, false);
}
export function PageGetTranscriptFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): PageGetTranscript {
if (json === undefined || json === null) {
return json;
}
return {
items: json["items"],
total: json["total"],
page: json["page"],
size: json["size"],
pages: !exists(json, "pages") ? undefined : json["pages"],
};
}
export function PageGetTranscriptToJSON(value?: PageGetTranscript | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
items: value.items,
total: value.total,
page: value.page,
size: value.size,
pages: value.pages,
};
}

View File

@@ -0,0 +1,75 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface RtcOffer
*/
export interface RtcOffer {
/**
*
* @type {any}
* @memberof RtcOffer
*/
sdp: any | null;
/**
*
* @type {any}
* @memberof RtcOffer
*/
type: any | null;
}
/**
* Check if a given object implements the RtcOffer interface.
*/
export function instanceOfRtcOffer(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "sdp" in value;
isInstance = isInstance && "type" in value;
return isInstance;
}
export function RtcOfferFromJSON(json: any): RtcOffer {
return RtcOfferFromJSONTyped(json, false);
}
export function RtcOfferFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): RtcOffer {
if (json === undefined || json === null) {
return json;
}
return {
sdp: json["sdp"],
type: json["type"],
};
}
export function RtcOfferToJSON(value?: RtcOffer | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
sdp: value.sdp,
type: value.type,
};
}

View File

@@ -0,0 +1,101 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface TranscriptTopic
*/
export interface TranscriptTopic {
/**
*
* @type {any}
* @memberof TranscriptTopic
*/
id?: any | null;
/**
*
* @type {any}
* @memberof TranscriptTopic
*/
title: any | null;
/**
*
* @type {any}
* @memberof TranscriptTopic
*/
summary: any | null;
/**
*
* @type {any}
* @memberof TranscriptTopic
*/
transcript: any | null;
/**
*
* @type {any}
* @memberof TranscriptTopic
*/
timestamp: any | null;
}
/**
* Check if a given object implements the TranscriptTopic interface.
*/
export function instanceOfTranscriptTopic(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "title" in value;
isInstance = isInstance && "summary" in value;
isInstance = isInstance && "transcript" in value;
isInstance = isInstance && "timestamp" in value;
return isInstance;
}
export function TranscriptTopicFromJSON(json: any): TranscriptTopic {
return TranscriptTopicFromJSONTyped(json, false);
}
export function TranscriptTopicFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): TranscriptTopic {
if (json === undefined || json === null) {
return json;
}
return {
id: !exists(json, "id") ? undefined : json["id"],
title: json["title"],
summary: json["summary"],
transcript: json["transcript"],
timestamp: json["timestamp"],
};
}
export function TranscriptTopicToJSON(value?: TranscriptTopic | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
id: value.id,
title: value.title,
summary: value.summary,
transcript: value.transcript,
timestamp: value.timestamp,
};
}

View File

@@ -0,0 +1,73 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface UpdateTranscript
*/
export interface UpdateTranscript {
/**
*
* @type {any}
* @memberof UpdateTranscript
*/
name?: any | null;
/**
*
* @type {any}
* @memberof UpdateTranscript
*/
locked?: any | null;
}
/**
* Check if a given object implements the UpdateTranscript interface.
*/
export function instanceOfUpdateTranscript(value: object): boolean {
let isInstance = true;
return isInstance;
}
export function UpdateTranscriptFromJSON(json: any): UpdateTranscript {
return UpdateTranscriptFromJSONTyped(json, false);
}
export function UpdateTranscriptFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): UpdateTranscript {
if (json === undefined || json === null) {
return json;
}
return {
name: !exists(json, "name") ? undefined : json["name"],
locked: !exists(json, "locked") ? undefined : json["locked"],
};
}
export function UpdateTranscriptToJSON(value?: UpdateTranscript | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
name: value.name,
locked: value.locked,
};
}

View File

@@ -0,0 +1,84 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
import { exists, mapValues } from "../runtime";
/**
*
* @export
* @interface ValidationError
*/
export interface ValidationError {
/**
*
* @type {any}
* @memberof ValidationError
*/
loc: any | null;
/**
*
* @type {any}
* @memberof ValidationError
*/
msg: any | null;
/**
*
* @type {any}
* @memberof ValidationError
*/
type: any | null;
}
/**
* Check if a given object implements the ValidationError interface.
*/
export function instanceOfValidationError(value: object): boolean {
let isInstance = true;
isInstance = isInstance && "loc" in value;
isInstance = isInstance && "msg" in value;
isInstance = isInstance && "type" in value;
return isInstance;
}
export function ValidationErrorFromJSON(json: any): ValidationError {
return ValidationErrorFromJSONTyped(json, false);
}
export function ValidationErrorFromJSONTyped(
json: any,
ignoreDiscriminator: boolean,
): ValidationError {
if (json === undefined || json === null) {
return json;
}
return {
loc: json["loc"],
msg: json["msg"],
type: json["type"],
};
}
export function ValidationErrorToJSON(value?: ValidationError | null): any {
if (value === undefined) {
return undefined;
}
if (value === null) {
return null;
}
return {
loc: value.loc,
msg: value.msg,
type: value.type,
};
}

View File

@@ -0,0 +1,11 @@
/* tslint:disable */
/* eslint-disable */
export * from "./CreateTranscript";
export * from "./DeletionStatus";
export * from "./GetTranscript";
export * from "./HTTPValidationError";
export * from "./PageGetTranscript";
export * from "./RtcOffer";
export * from "./TranscriptTopic";
export * from "./UpdateTranscript";
export * from "./ValidationError";

520
www/app/api/runtime.ts Normal file
View File

@@ -0,0 +1,520 @@
/* tslint:disable */
/* eslint-disable */
/**
* FastAPI
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 0.1.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
export const BASE_PATH = "http://localhost".replace(/\/+$/, "");
export interface ConfigurationParameters {
basePath?: string; // override base path
fetchApi?: FetchAPI; // override for fetch implementation
middleware?: Middleware[]; // middleware to apply before/after fetch requests
queryParamsStringify?: (params: HTTPQuery) => string; // stringify function for query strings
username?: string; // parameter for basic security
password?: string; // parameter for basic security
apiKey?: string | ((name: string) => string); // parameter for apiKey security
accessToken?:
| string
| Promise<string>
| ((name?: string, scopes?: string[]) => string | Promise<string>); // parameter for oauth2 security
headers?: HTTPHeaders; //header params we want to use on every request
credentials?: RequestCredentials; //value for the credentials param we want to use on each request
}
export class Configuration {
constructor(private configuration: ConfigurationParameters = {}) {}
set config(configuration: Configuration) {
this.configuration = configuration;
}
get basePath(): string {
return this.configuration.basePath != null
? this.configuration.basePath
: BASE_PATH;
}
get fetchApi(): FetchAPI | undefined {
return this.configuration.fetchApi;
}
get middleware(): Middleware[] {
return this.configuration.middleware || [];
}
get queryParamsStringify(): (params: HTTPQuery) => string {
return this.configuration.queryParamsStringify || querystring;
}
get username(): string | undefined {
return this.configuration.username;
}
get password(): string | undefined {
return this.configuration.password;
}
get apiKey(): ((name: string) => string) | undefined {
const apiKey = this.configuration.apiKey;
if (apiKey) {
return typeof apiKey === "function" ? apiKey : () => apiKey;
}
return undefined;
}
get accessToken():
| ((name?: string, scopes?: string[]) => string | Promise<string>)
| undefined {
const accessToken = this.configuration.accessToken;
if (accessToken) {
return typeof accessToken === "function"
? accessToken
: async () => accessToken;
}
return undefined;
}
get headers(): HTTPHeaders | undefined {
return this.configuration.headers;
}
get credentials(): RequestCredentials | undefined {
return this.configuration.credentials;
}
}
export const DefaultConfig = new Configuration();
/**
* This is the base class for all generated API classes.
*/
export class BaseAPI {
private static readonly jsonRegex = new RegExp(
"^(:?application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(:?;.*)?$",
"i",
);
private middleware: Middleware[];
constructor(protected configuration = DefaultConfig) {
this.middleware = configuration.middleware;
}
withMiddleware<T extends BaseAPI>(this: T, ...middlewares: Middleware[]) {
const next = this.clone<T>();
next.middleware = next.middleware.concat(...middlewares);
return next;
}
withPreMiddleware<T extends BaseAPI>(
this: T,
...preMiddlewares: Array<Middleware["pre"]>
) {
const middlewares = preMiddlewares.map((pre) => ({ pre }));
return this.withMiddleware<T>(...middlewares);
}
withPostMiddleware<T extends BaseAPI>(
this: T,
...postMiddlewares: Array<Middleware["post"]>
) {
const middlewares = postMiddlewares.map((post) => ({ post }));
return this.withMiddleware<T>(...middlewares);
}
/**
* Check if the given MIME is a JSON MIME.
* JSON MIME examples:
* application/json
* application/json; charset=UTF8
* APPLICATION/JSON
* application/vnd.company+json
* @param mime - MIME (Multipurpose Internet Mail Extensions)
* @return True if the given MIME is JSON, false otherwise.
*/
protected isJsonMime(mime: string | null | undefined): boolean {
if (!mime) {
return false;
}
return BaseAPI.jsonRegex.test(mime);
}
protected async request(
context: RequestOpts,
initOverrides?: RequestInit | InitOverrideFunction,
): Promise<Response> {
const { url, init } = await this.createFetchParams(context, initOverrides);
const response = await this.fetchApi(url, init);
if (response && response.status >= 200 && response.status < 300) {
return response;
}
throw new ResponseError(response, "Response returned an error code");
}
private async createFetchParams(
context: RequestOpts,
initOverrides?: RequestInit | InitOverrideFunction,
) {
let url = this.configuration.basePath + context.path;
if (
context.query !== undefined &&
Object.keys(context.query).length !== 0
) {
// only add the querystring to the URL if there are query parameters.
// this is done to avoid urls ending with a "?" character which buggy webservers
// do not handle correctly sometimes.
url += "?" + this.configuration.queryParamsStringify(context.query);
}
const headers = Object.assign(
{},
this.configuration.headers,
context.headers,
);
Object.keys(headers).forEach((key) =>
headers[key] === undefined ? delete headers[key] : {},
);
const initOverrideFn =
typeof initOverrides === "function"
? initOverrides
: async () => initOverrides;
const initParams = {
method: context.method,
headers,
body: context.body,
credentials: this.configuration.credentials,
};
const overriddenInit: RequestInit = {
...initParams,
...(await initOverrideFn({
init: initParams,
context,
})),
};
const init: RequestInit = {
...overriddenInit,
body:
isFormData(overriddenInit.body) ||
overriddenInit.body instanceof URLSearchParams ||
isBlob(overriddenInit.body)
? overriddenInit.body
: JSON.stringify(overriddenInit.body),
};
return { url, init };
}
private fetchApi = async (url: string, init: RequestInit) => {
let fetchParams = { url, init };
for (const middleware of this.middleware) {
if (middleware.pre) {
fetchParams =
(await middleware.pre({
fetch: this.fetchApi,
...fetchParams,
})) || fetchParams;
}
}
let response: Response | undefined = undefined;
try {
response = await (this.configuration.fetchApi || fetch)(
fetchParams.url,
fetchParams.init,
);
} catch (e) {
for (const middleware of this.middleware) {
if (middleware.onError) {
response =
(await middleware.onError({
fetch: this.fetchApi,
url: fetchParams.url,
init: fetchParams.init,
error: e,
response: response ? response.clone() : undefined,
})) || response;
}
}
if (response === undefined) {
if (e instanceof Error) {
throw new FetchError(
e,
"The request failed and the interceptors did not return an alternative response",
);
} else {
throw e;
}
}
}
for (const middleware of this.middleware) {
if (middleware.post) {
response =
(await middleware.post({
fetch: this.fetchApi,
url: fetchParams.url,
init: fetchParams.init,
response: response.clone(),
})) || response;
}
}
return response;
};
/**
* Create a shallow clone of `this` by constructing a new instance
* and then shallow cloning data members.
*/
private clone<T extends BaseAPI>(this: T): T {
const constructor = this.constructor as any;
const next = new constructor(this.configuration);
next.middleware = this.middleware.slice();
return next;
}
}
function isBlob(value: any): value is Blob {
return typeof Blob !== "undefined" && value instanceof Blob;
}
function isFormData(value: any): value is FormData {
return typeof FormData !== "undefined" && value instanceof FormData;
}
export class ResponseError extends Error {
override name: "ResponseError" = "ResponseError";
constructor(
public response: Response,
msg?: string,
) {
super(msg);
}
}
export class FetchError extends Error {
override name: "FetchError" = "FetchError";
constructor(
public cause: Error,
msg?: string,
) {
super(msg);
}
}
export class RequiredError extends Error {
override name: "RequiredError" = "RequiredError";
constructor(
public field: string,
msg?: string,
) {
super(msg);
}
}
export const COLLECTION_FORMATS = {
csv: ",",
ssv: " ",
tsv: "\t",
pipes: "|",
};
export type FetchAPI = WindowOrWorkerGlobalScope["fetch"];
export type Json = any;
export type HTTPMethod =
| "GET"
| "POST"
| "PUT"
| "PATCH"
| "DELETE"
| "OPTIONS"
| "HEAD";
export type HTTPHeaders = { [key: string]: string };
export type HTTPQuery = {
[key: string]:
| string
| number
| null
| boolean
| Array<string | number | null | boolean>
| Set<string | number | null | boolean>
| HTTPQuery;
};
export type HTTPBody = Json | FormData | URLSearchParams;
export type HTTPRequestInit = {
headers?: HTTPHeaders;
method: HTTPMethod;
credentials?: RequestCredentials;
body?: HTTPBody;
};
export type ModelPropertyNaming =
| "camelCase"
| "snake_case"
| "PascalCase"
| "original";
export type InitOverrideFunction = (requestContext: {
init: HTTPRequestInit;
context: RequestOpts;
}) => Promise<RequestInit>;
export interface FetchParams {
url: string;
init: RequestInit;
}
export interface RequestOpts {
path: string;
method: HTTPMethod;
headers: HTTPHeaders;
query?: HTTPQuery;
body?: HTTPBody;
}
export function exists(json: any, key: string) {
const value = json[key];
return value !== null && value !== undefined;
}
export function querystring(params: HTTPQuery, prefix: string = ""): string {
return Object.keys(params)
.map((key) => querystringSingleKey(key, params[key], prefix))
.filter((part) => part.length > 0)
.join("&");
}
function querystringSingleKey(
key: string,
value:
| string
| number
| null
| undefined
| boolean
| Array<string | number | null | boolean>
| Set<string | number | null | boolean>
| HTTPQuery,
keyPrefix: string = "",
): string {
const fullKey = keyPrefix + (keyPrefix.length ? `[${key}]` : key);
if (value instanceof Array) {
const multiValue = value
.map((singleValue) => encodeURIComponent(String(singleValue)))
.join(`&${encodeURIComponent(fullKey)}=`);
return `${encodeURIComponent(fullKey)}=${multiValue}`;
}
if (value instanceof Set) {
const valueAsArray = Array.from(value);
return querystringSingleKey(key, valueAsArray, keyPrefix);
}
if (value instanceof Date) {
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(
value.toISOString(),
)}`;
}
if (value instanceof Object) {
return querystring(value as HTTPQuery, fullKey);
}
return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;
}
export function mapValues(data: any, fn: (item: any) => any) {
return Object.keys(data).reduce(
(acc, key) => ({ ...acc, [key]: fn(data[key]) }),
{},
);
}
export function canConsumeForm(consumes: Consume[]): boolean {
for (const consume of consumes) {
if ("multipart/form-data" === consume.contentType) {
return true;
}
}
return false;
}
export interface Consume {
contentType: string;
}
export interface RequestContext {
fetch: FetchAPI;
url: string;
init: RequestInit;
}
export interface ResponseContext {
fetch: FetchAPI;
url: string;
init: RequestInit;
response: Response;
}
export interface ErrorContext {
fetch: FetchAPI;
url: string;
init: RequestInit;
error: unknown;
response?: Response;
}
export interface Middleware {
pre?(context: RequestContext): Promise<FetchParams | void>;
post?(context: ResponseContext): Promise<Response | void>;
onError?(context: ErrorContext): Promise<Response | void>;
}
export interface ApiResponse<T> {
raw: Response;
value(): Promise<T>;
}
export interface ResponseTransformer<T> {
(json: any): T;
}
export class JSONApiResponse<T> {
constructor(
public raw: Response,
private transformer: ResponseTransformer<T> = (jsonValue: any) => jsonValue,
) {}
async value(): Promise<T> {
return this.transformer(await this.raw.json());
}
}
export class VoidApiResponse {
constructor(public raw: Response) {}
async value(): Promise<void> {
return undefined;
}
}
export class BlobApiResponse {
constructor(public raw: Response) {}
async value(): Promise<Blob> {
return await this.raw.blob();
}
}
export class TextApiResponse {
constructor(public raw: Response) {}
async value(): Promise<string> {
return await this.raw.text();
}
}

View File

@@ -1,34 +1,39 @@
import { useEffect, useState } from "react";
import axios from "axios";
const API_URL = process.env.NEXT_PUBLIC_API_URL;
import { DefaultApi } from "../api/apis/DefaultApi";
import { Configuration } from "../api/runtime";
const useTranscript = () => {
const [response, setResponse] = useState(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState(null);
const apiConfiguration = new Configuration({
basePath: process.env.NEXT_PUBLIC_API_URL,
});
const api = new DefaultApi(apiConfiguration);
const createTranscript = () => {
setLoading(true);
const url = API_URL + "/v1/transcripts/";
const data = {
name: "Weekly All-Hands", // Hardcoded for now
const requestParameters = {
createTranscript: {
name: "Weekly All-Hands", // Hardcoded for now
},
};
console.debug(
"POST - /v1/transcripts/ - Requesting new transcription creation",
data,
requestParameters,
);
axios
.post(url, data)
api
.transcriptsCreateV1TranscriptsPost(requestParameters)
.then((result) => {
setResponse(result.data);
setResponse(result);
setLoading(false);
console.debug("New transcript created:", result.data);
console.debug("New transcript created:", result);
})
.catch((err) => {
const errorString = err.response || err || "Unknown error";
const errorString = err.response || err.message || "Unknown error";
setError(errorString);
setLoading(false);
console.error("Error creating transcript:", errorString);

View File

@@ -1,8 +1,7 @@
import { useEffect, useState } from "react";
import Peer from "simple-peer";
import axios from "axios";
const API_URL = process.env.NEXT_PUBLIC_API_URL;
import { DefaultApi } from "../api/apis/DefaultApi";
import { Configuration } from "../api/runtime";
const useWebRTC = (stream, transcriptId) => {
const [data, setData] = useState({
@@ -13,29 +12,33 @@ const useWebRTC = (stream, transcriptId) => {
if (!stream || !transcriptId) {
return;
}
const url = `${API_URL}/v1/transcripts/${transcriptId}/record/webrtc`;
const apiConfiguration = new Configuration({
basePath: process.env.NEXT_PUBLIC_API_URL,
});
const api = new DefaultApi(apiConfiguration);
let peer = new Peer({ initiator: true, stream: stream });
peer.on("signal", (data) => {
if ("sdp" in data) {
const rtcOffer = {
sdp: data.sdp,
type: data.type,
const requestParameters = {
transcriptId: transcriptId,
rtcOffer: {
sdp: data.sdp,
type: data.type,
},
};
axios
.post(url, rtcOffer, {
headers: {
"Content-Type": "application/json",
},
})
.then((response) => {
const answer = response.data;
api
.transcriptRecordWebrtcV1TranscriptsTranscriptIdRecordWebrtcPost(
requestParameters,
)
.then((answer) => {
peer.signal(answer);
})
.catch((e) => {
console.error("WebRTC signaling error:", e);
.catch((err) => {
console.error("WebRTC signaling error:", err);
});
}
});

7
www/openapitools.json Normal file
View File

@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
"spaces": 2,
"generator-cli": {
"version": "6.6.0"
}
}

View File

@@ -19,14 +19,17 @@
"fontawesome": "^5.6.3",
"jest-worker": "^29.6.2",
"next": "^13.4.9",
"openapi-generator": "^0.1.39",
"postcss": "8.4.25",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-dropdown": "^1.11.0",
"sass": "^1.63.6",
"simple-peer": "^9.11.1",
"superagent": "^8.0.9",
"supports-color": "^9.4.0",
"tailwindcss": "^3.3.2",
"typescript": "^5.1.6",
"wavesurfer.js": "^7.0.3"
},
"main": "index.js",
@@ -34,6 +37,7 @@
"author": "Andreas <andreas@monadical.com>",
"license": "All Rights Reserved",
"devDependencies": {
"@types/react": "18.2.20",
"prettier": "^3.0.0"
}
}

25
www/tsconfig.json Normal file
View File

@@ -0,0 +1,25 @@
{
"compilerOptions": {
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
"strict": false,
"forceConsistentCasingInFileNames": true,
"noEmit": true,
"incremental": true,
"esModuleInterop": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"jsx": "preserve",
"plugins": [
{
"name": "next"
}
],
"strictNullChecks": true
},
"include": ["next-env.d.ts", ".next/types/**/*.ts", "**/*.ts", "**/*.tsx"],
"exclude": ["node_modules"]
}

File diff suppressed because it is too large Load Diff