yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
api_handlers.h
Go to the documentation of this file.
1#ifndef YAZE_SRC_CLI_SERVICE_API_API_HANDLERS_H_
2#define YAZE_SRC_CLI_SERVICE_API_API_HANDLERS_H_
3
4#include <functional>
5#include <string>
6
7#include "absl/status/statusor.h"
8
9// Forward declarations to avoid exposing httplib headers everywhere
10namespace httplib {
11struct Request;
12struct Response;
13} // namespace httplib
14
15namespace yaze {
16namespace cli {
17namespace api {
18class BonjourPublisher;
19}
20} // namespace cli
21} // namespace yaze
22
23namespace yaze {
24class Rom;
25
26namespace emu {
27namespace debug {
28class SymbolProvider;
29}
30} // namespace emu
31
32namespace app {
33namespace service {
34class RenderService;
35}
36} // namespace app
37
38namespace cli {
39namespace api {
40
41// Health check endpoint. The optional |bonjour| pointer is used to report
42// discovery availability in the response JSON.
43void HandleHealth(const httplib::Request& req, httplib::Response& res,
44 const BonjourPublisher* bonjour = nullptr);
45
46// List available models
47void HandleListModels(const httplib::Request& req, httplib::Response& res);
48
49// Get current symbol table
50void HandleGetSymbols(const httplib::Request& req, httplib::Response& res,
52
53// Mesen2 bridge endpoints
54void HandleNavigate(const httplib::Request& req, httplib::Response& res);
55void HandleBreakpointHit(const httplib::Request& req, httplib::Response& res);
56void HandleStateUpdate(const httplib::Request& req, httplib::Response& res);
57
58// Window control endpoints
59void HandleWindowShow(const httplib::Request& req, httplib::Response& res,
60 const std::function<bool()>& action);
61void HandleWindowHide(const httplib::Request& req, httplib::Response& res,
62 const std::function<bool()>& action);
63
64// Local semantic editor commands. This endpoint never enables browser CORS.
66 const httplib::Request& req, httplib::Response& res,
67 const std::function<absl::StatusOr<std::string>(const std::string&)>&
68 action);
69
70// Apply common CORS headers to a response.
71void ApplyCorsHeaders(httplib::Response& res);
72
73// Render dungeon room to PNG image.
74// GET /api/v1/render/dungeon?room=<id>[&overlays=collision,sprites,...][&scale=<f>]
75void HandleRenderDungeon(const httplib::Request& req, httplib::Response& res,
76 yaze::app::service::RenderService* render_service);
77
78// Return JSON metadata for a dungeon room (no rendering).
79// GET /api/v1/render/dungeon/metadata?room=<id>
81 const httplib::Request& req, httplib::Response& res,
82 yaze::app::service::RenderService* render_service);
83
84// CORS preflight handler for OPTIONS requests.
85void HandleCorsPreflight(const httplib::Request& req, httplib::Response& res);
86
87// Execute a z3ed CLI command.
88// POST /api/v1/command/execute Body: {"command":"name","args":["--flag=val"]}
89void HandleCommandExecute(const httplib::Request& req, httplib::Response& res,
90 yaze::Rom* rom);
91
92// Responds 403 to POST /api/v1/command/execute on a server that has command
93// execution turned off.
94void HandleCommandExecuteDisabled(const httplib::Request& req,
95 httplib::Response& res);
96
97// List all registered z3ed commands.
98// GET /api/v1/command/list
99void HandleCommandList(const httplib::Request& req, httplib::Response& res);
100
101// Annotation CRUD endpoints.
102// GET /api/v1/annotations[?room=<id>]
103void HandleAnnotationList(const httplib::Request& req, httplib::Response& res,
104 const std::string& project_path);
105
106// POST /api/v1/annotations
107void HandleAnnotationCreate(const httplib::Request& req, httplib::Response& res,
108 const std::string& project_path);
109
110// PUT /api/v1/annotations/<id>
111void HandleAnnotationUpdate(const httplib::Request& req, httplib::Response& res,
112 const std::string& project_path);
113
114// DELETE /api/v1/annotations/<id>
115void HandleAnnotationDelete(const httplib::Request& req, httplib::Response& res,
116 const std::string& project_path);
117
118} // namespace api
119} // namespace cli
120} // namespace yaze
121
122#endif // YAZE_SRC_CLI_SERVICE_API_API_HANDLERS_H_
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:52
Provider for symbol (label) resolution in disassembly.
void HandleStateUpdate(const httplib::Request &req, httplib::Response &res)
void ApplyCorsHeaders(httplib::Response &res)
void HandleCorsPreflight(const httplib::Request &req, httplib::Response &res)
void HandleEditorControl(const httplib::Request &req, httplib::Response &res, const std::function< absl::StatusOr< std::string >(const std::string &)> &action)
void HandleBreakpointHit(const httplib::Request &req, httplib::Response &res)
void HandleListModels(const httplib::Request &req, httplib::Response &res)
void HandleGetSymbols(const httplib::Request &req, httplib::Response &res, yaze::emu::debug::SymbolProvider *symbols)
void HandleNavigate(const httplib::Request &req, httplib::Response &res)
void HandleWindowShow(const httplib::Request &req, httplib::Response &res, const std::function< bool()> &action)
void HandleAnnotationUpdate(const httplib::Request &req, httplib::Response &res, const std::string &project_path)
void HandleRenderDungeonMetadata(const httplib::Request &req, httplib::Response &res, yaze::app::service::RenderService *render_service)
void HandleRenderDungeon(const httplib::Request &req, httplib::Response &res, yaze::app::service::RenderService *render_service)
void HandleCommandExecute(const httplib::Request &req, httplib::Response &res, yaze::Rom *rom)
void HandleAnnotationDelete(const httplib::Request &req, httplib::Response &res, const std::string &project_path)
void HandleAnnotationList(const httplib::Request &req, httplib::Response &res, const std::string &project_path)
void HandleCommandExecuteDisabled(const httplib::Request &req, httplib::Response &res)
void HandleAnnotationCreate(const httplib::Request &req, httplib::Response &res, const std::string &project_path)
void HandleCommandList(const httplib::Request &req, httplib::Response &res)
void HandleWindowHide(const httplib::Request &req, httplib::Response &res, const std::function< bool()> &action)
void HandleHealth(const httplib::Request &req, httplib::Response &res, const BonjourPublisher *bonjour)