@@ -33,6 +33,61 @@ void Assistants::RetrieveAssistant(
3333 }
3434}
3535
36+ void Assistants::CreateAssistant (
37+ const HttpRequestPtr& req,
38+ std::function<void (const HttpResponsePtr&)>&& callback,
39+ const std::string& assistant_id) {
40+ auto json_body = req->getJsonObject ();
41+ if (json_body == nullptr ) {
42+ Json::Value ret;
43+ ret[" message" ] = " Request body can't be empty" ;
44+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
45+ resp->setStatusCode (k400BadRequest);
46+ callback (resp);
47+ return ;
48+ }
49+
50+ // Parse assistant from request body
51+ auto assistant_result = OpenAi::JanAssistant::FromJson (std::move (*json_body));
52+ if (assistant_result.has_error ()) {
53+ Json::Value ret;
54+ ret[" message" ] = " Failed to parse assistant: " + assistant_result.error ();
55+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
56+ resp->setStatusCode (k400BadRequest);
57+ callback (resp);
58+ return ;
59+ }
60+
61+ // Call assistant service to create
62+ auto create_result = assistant_service_->CreateAssistant (
63+ assistant_id, assistant_result.value ());
64+ if (create_result.has_error ()) {
65+ Json::Value ret;
66+ ret[" message" ] = create_result.error ();
67+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
68+ resp->setStatusCode (k400BadRequest);
69+ callback (resp);
70+ return ;
71+ }
72+
73+ // Convert result to JSON and send response
74+ auto to_json_result = create_result->ToJson ();
75+ if (to_json_result.has_error ()) {
76+ CTL_ERR (" Failed to convert assistant to json: " + to_json_result.error ());
77+ Json::Value ret;
78+ ret[" message" ] = to_json_result.error ();
79+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
80+ resp->setStatusCode (k400BadRequest);
81+ callback (resp);
82+ return ;
83+ }
84+
85+ auto resp =
86+ cortex_utils::CreateCortexHttpJsonResponse (to_json_result.value ());
87+ resp->setStatusCode (k201Created);
88+ callback (resp);
89+ }
90+
3691void Assistants::ModifyAssistant (
3792 const HttpRequestPtr& req,
3893 std::function<void (const HttpResponsePtr&)>&& callback,
@@ -47,28 +102,43 @@ void Assistants::ModifyAssistant(
47102 return ;
48103 }
49104
50- // auto res =
51- // assistant_service_->ModifyAssistant(thread_id, nullptr, metadata.value());
52- // if (res.has_error()) {
53- // Json::Value ret;
54- // ret["message"] = res.error();
55- // auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
56- // resp->setStatusCode(k400BadRequest);
57- // callback(resp);
58- // } else {
59- // auto message_to_json = res->ToJson();
60- // if (message_to_json.has_error()) {
61- // CTL_ERR("Failed to convert message to json: " + message_to_json.error());
62- // Json::Value ret;
63- // ret["message"] = message_to_json.error();
64- // auto resp = cortex_utils::CreateCortexHttpJsonResponse(ret);
65- // resp->setStatusCode(k400BadRequest);
66- // callback(resp);
67- // } else {
68- // auto resp =
69- // cortex_utils::CreateCortexHttpJsonResponse(res->ToJson().value());
70- // resp->setStatusCode(k200OK);
71- // callback(resp);
72- // }
73- // }
105+ // Parse assistant from request body
106+ auto assistant_result = OpenAi::JanAssistant::FromJson (std::move (*json_body));
107+ if (assistant_result.has_error ()) {
108+ Json::Value ret;
109+ ret[" message" ] = " Failed to parse assistant: " + assistant_result.error ();
110+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
111+ resp->setStatusCode (k400BadRequest);
112+ callback (resp);
113+ return ;
114+ }
115+
116+ // Call assistant service to create
117+ auto modify_result = assistant_service_->ModifyAssistant (
118+ assistant_id, assistant_result.value ());
119+ if (modify_result.has_error ()) {
120+ Json::Value ret;
121+ ret[" message" ] = modify_result.error ();
122+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
123+ resp->setStatusCode (k400BadRequest);
124+ callback (resp);
125+ return ;
126+ }
127+
128+ // Convert result to JSON and send response
129+ auto to_json_result = modify_result->ToJson ();
130+ if (to_json_result.has_error ()) {
131+ CTL_ERR (" Failed to convert assistant to json: " + to_json_result.error ());
132+ Json::Value ret;
133+ ret[" message" ] = to_json_result.error ();
134+ auto resp = cortex_utils::CreateCortexHttpJsonResponse (ret);
135+ resp->setStatusCode (k400BadRequest);
136+ callback (resp);
137+ return ;
138+ }
139+
140+ auto resp =
141+ cortex_utils::CreateCortexHttpJsonResponse (to_json_result.value ());
142+ resp->setStatusCode (k200OK);
143+ callback (resp);
74144}
0 commit comments