(file: File, port: number, serviceName?: string, envVars?: string, tenantId?: string | null)
| 686 | * Upload MCP image and start container |
| 687 | */ |
| 688 | export const uploadMcpImage = async (file: File, port: number, serviceName?: string, envVars?: string, tenantId?: string | null) => { |
| 689 | try { |
| 690 | const formData = new FormData(); |
| 691 | formData.append('file', file); |
| 692 | formData.append('port', port.toString()); |
| 693 | if (serviceName) { |
| 694 | formData.append('service_name', serviceName); |
| 695 | } |
| 696 | if (envVars) { |
| 697 | formData.append('env_vars', envVars); |
| 698 | } |
| 699 | if (tenantId) { |
| 700 | formData.append('tenant_id', tenantId); |
| 701 | } |
| 702 | |
| 703 | const { 'Content-Type': _, ...headers } = getAuthHeaders(); |
| 704 | |
| 705 | const response = await fetch(API_ENDPOINTS.mcp.uploadImage, { |
| 706 | method: 'POST', |
| 707 | headers: headers, |
| 708 | body: formData, |
| 709 | }); |
| 710 | |
| 711 | const data = await response.json(); |
| 712 | |
| 713 | if (response.ok && data.status === 'success') { |
| 714 | return { |
| 715 | success: true, |
| 716 | data: data, |
| 717 | message: data.message || t('mcpService.message.uploadImageSuccess') |
| 718 | }; |
| 719 | } else { |
| 720 | let errorMessage = data.detail || data.message || t('mcpService.message.uploadImageFailed'); |
| 721 | |
| 722 | if (response.status === 400) { |
| 723 | errorMessage = data.detail || t('mcpService.message.invalidUploadParameters'); |
| 724 | } else if (response.status === 409) { |
| 725 | errorMessage = t('mcpService.message.serviceNameAlreadyExists'); |
| 726 | } else if (response.status === 413) { |
| 727 | errorMessage = t('mcpService.message.fileTooLarge'); |
| 728 | } else if (response.status === 503) { |
| 729 | errorMessage = t('mcpService.message.dockerServiceUnavailable'); |
| 730 | } |
| 731 | |
| 732 | return { |
| 733 | success: false, |
| 734 | data: null, |
| 735 | message: errorMessage |
| 736 | }; |
| 737 | } |
| 738 | } catch (error) { |
| 739 | log.error(t('mcpService.debug.uploadImageFailed'), error); |
| 740 | return { |
| 741 | success: false, |
| 742 | data: null, |
| 743 | message: t('mcpService.message.networkError') |
| 744 | }; |
| 745 | } |
no test coverage detected