文件转换与汇率API服务

一个提供文件、媒体转换以及货币、加密货币汇率API的Spring Boot后端服务。

  • by 0kilo
  • Java
  • 本地部署
  • 更新于
在 GitHub 查看 0kilo/toolsworx-backend

使用说明

Toolsworx

镜像的公共Spring Boot后端 统一服务 节点堆栈:文档/媒体/音频/图像转换、货币/加密货币汇率馈送、与Firestore绑定的利率限制,以及与www.toolsworx.com使用的Spring AI MCP工具相同的工具。每个人都可以阅读该仓库;这里没有秘密。


许可证

该项目发布于 MIT许可证.

里面是什么

  • 文档+媒体转换 通过 FileConversionService 和 UnifiedApiController. /file/convert, /image/convert, /video/convert, /audio/filter, /filter,加 /download//status 合作伙伴重播基于旧队列的工作流。
  • 上传速率受限 –控制器向前 x-api-key,公钥来自 application.properties 触发默认的3/24小时限制,以及Firestore的 apiKeys 集合解锁经过身份验证的客户端/代理。可选Cloudflare旋转栅门令牌(turnstileToken 或 cf-turnstile-response)根据请求进行验证。
  • API费率 – GET /rates/currency 返回ExchangeRate API快照(base_code, time_last_update_unix, conversion_rates, rates[])虽然 GET /rates/crypto 暴露CoinGecko价格(gecko_prices, prices[]).定时提取器(可通过以下方式配置 toolsworx.currency.refresh-ms 和 toolsworx.crypto.refresh-ms)刷新每个提要并通过WebSocket广播更新 /ws/rates (/topic/rates/currency 和 /topic/rates/crypto).前端助手 docs/api-client.ts, docs/currency_client.tsx,以及 docs/crypto_client.tsx 消费这种形状。
  • MCP工具 –Spring AI通过以下方式注册文档/音频/视频/图像工具 McpToolsConfiguration 并通过可流式传输的HTTP MCP端点为其提供服务(/mcp)因此代理可以转换文件,而不会达到REST上传限制。
  • 可观测性 –Firestore日志记录,H2持久性 ConversionJob,并且计划的清理使作业可追溯和可重试。

配置

  1. 更新 src/main/resources/application.properties 在部署之前。这里唯一暴露的钥匙是 NEXT_PUBLIC_CONVERTER_API_KEY (由文档客户端使用)和可选 toolsworx.api-keys/toolsworx.public-api-key 覆盖。
  2. toolsworx.currency.url 和 toolsworx.crypto.gecko.url 指向ExchangeRate和CoinGecko API;只要这些值的JSON形状匹配,就可以将其替换为其他免费API CurrencyRateSnapshot 和 CryptoRateSnapshot.
  3. Cloudflare旋转栅门机密(如果使用)通过以下方式配置 toolsworx.turnstile.secret.

跑步

mvn test
mvn spring-boot:run

# docker
docker build -t toolsworx-backend -f Dockerfile .
docker run --rm -p 8080:8080 toolsworx-backend

因为这种环境无法到达 repo.maven.apache.org 可靠地, mvn test 当前无法下载 com.google.errorprone:error_prone_annotations:2.18.0。一旦网络允许Maven访问该主机,请重新运行该命令。

端点

  • POST /file/convert –排队文档转换。
  • POST /video/convert –队列通用媒体转码。
  • POST /audio/filter –具有作业跟踪功能的音频/图像过滤器。
  • /{kind}/status/{jobId} 和 /{kind}/download/{jobId} 反映统一服务作业生命周期。
  • GET /rates/currency 和 /rates/crypto 返回已保存的速率快照。
  • /ws/rates WebSocket与 /topic/rates/currency 和 /topic/rates/crypto topics会发出最新快照。
  • /mcp –用于文档/音频/视频/图像转换器的可流式MCP服务器。

致动器健康

随着 spring-boot-starter-actuator 使您现在可以公开 /actuator/health 加 /actuator/info.在本地启动应用程序后(mvn spring-boot:run 或 java -jar target/toolsworx-0.0.1-SNAPSHOT.jar):

curl http://localhost:8080/actuator/health
curl http://localhost:8080/actuator/info

health 始终显示状态/详细信息(数据库、磁盘),因为 management.endpoint.health.show-details=always; info 报告通过Spring Boot定义的元数据 info.* 属性或构建数据。

测试

  • 控制器/服务测试包括转换(FileConversionServiceTest, AudioConversionServiceTest等)、图像滤波器控制器、MCP布线和新 UnifiedApiController.
  • mvn test 已在本地执行,但仍无法解决上述Firebase依赖关系。没有手动跳过任何测试。

其他参考文献

  • docs/api-client.ts, docs/currency_client.tsx,以及 docs/crypto_client.tsx 显示UI如何使用 /api 路线。
  • docs/rates.md 列出了预期的ExchangeRate和CoinGecko有效载荷,与Java相匹配 RatesController.