Add CREATE_PROCESS endpoint
This commit is contained in:
parent
c8cf1b2efd
commit
8b11e0c80c
@ -3,7 +3,7 @@ import { MessageType } from './models';
|
|||||||
import { config } from './config';
|
import { config } from './config';
|
||||||
import { Service } from './service';
|
import { Service } from './service';
|
||||||
import { ApiReturn, Process } from '../pkg/sdk_client';
|
import { ApiReturn, Process } from '../pkg/sdk_client';
|
||||||
import { EMPTY32BYTES } from './utils';
|
import { EMPTY32BYTES, splitPrivateData } from './utils';
|
||||||
|
|
||||||
interface ServerMessageEvent {
|
interface ServerMessageEvent {
|
||||||
data: {
|
data: {
|
||||||
@ -42,6 +42,52 @@ class SimpleProcessHandlers {
|
|||||||
return apiKey === this.apiKey;
|
return apiKey === this.apiKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async handleCreateProcess(event: ServerMessageEvent): Promise<ServerResponse> {
|
||||||
|
if (event.data.type !== MessageType.CREATE_PROCESS) {
|
||||||
|
throw new Error('Invalid message type');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.service.isPaired()) {
|
||||||
|
throw new Error('Device not paired');
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { processData, privateFields, roles, exclusionRules, apiKey } = event.data;
|
||||||
|
|
||||||
|
if (!apiKey || !this.validateApiKey(apiKey)) {
|
||||||
|
throw new Error('Invalid API key');
|
||||||
|
}
|
||||||
|
|
||||||
|
const { privateData, publicData } = splitPrivateData(processData, privateFields);
|
||||||
|
|
||||||
|
const createProcessReturn = await this.service.createProcess(privateData, publicData, roles);
|
||||||
|
if (!createProcessReturn.updated_process) {
|
||||||
|
throw new Error('Empty updated_process in createProcessReturn');
|
||||||
|
}
|
||||||
|
console.log('🚀 ~ handleCreateProcess ~ createProcessReturn:', createProcessReturn);
|
||||||
|
const processId = createProcessReturn.updated_process.process_id;
|
||||||
|
const process = createProcessReturn.updated_process.current_process;
|
||||||
|
await this.service.handleApiReturn(createProcessReturn);
|
||||||
|
|
||||||
|
const processCreated = {
|
||||||
|
processId,
|
||||||
|
process,
|
||||||
|
processData,
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
type: MessageType.PROCESS_CREATED,
|
||||||
|
processCreated,
|
||||||
|
messageId: event.data.messageId
|
||||||
|
};
|
||||||
|
} catch (e) {
|
||||||
|
const errorMessage = e instanceof Error ? e.message : String(e || 'Unknown error');
|
||||||
|
// Remove redundant "Error:" prefix and simplify the message
|
||||||
|
const cleanMessage = errorMessage.replace(/^Error:\s*/, '');
|
||||||
|
throw new Error(cleanMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async handleNotifyUpdate(event: ServerMessageEvent): Promise<ServerResponse> {
|
async handleNotifyUpdate(event: ServerMessageEvent): Promise<ServerResponse> {
|
||||||
if (event.data.type !== MessageType.NOTIFY_UPDATE) {
|
if (event.data.type !== MessageType.NOTIFY_UPDATE) {
|
||||||
throw new Error('Invalid message type');
|
throw new Error('Invalid message type');
|
||||||
@ -281,6 +327,8 @@ class SimpleProcessHandlers {
|
|||||||
async handleMessage(event: ServerMessageEvent): Promise<ServerResponse> {
|
async handleMessage(event: ServerMessageEvent): Promise<ServerResponse> {
|
||||||
try {
|
try {
|
||||||
switch (event.data.type) {
|
switch (event.data.type) {
|
||||||
|
case MessageType.CREATE_PROCESS:
|
||||||
|
return await this.handleCreateProcess(event);
|
||||||
case MessageType.NOTIFY_UPDATE:
|
case MessageType.NOTIFY_UPDATE:
|
||||||
return await this.handleNotifyUpdate(event);
|
return await this.handleNotifyUpdate(event);
|
||||||
case MessageType.VALIDATE_STATE:
|
case MessageType.VALIDATE_STATE:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user