Newer
Older
PrismSoftware / ECTrainer2 / TobiiREST.cpp
#include "TobiiREST.h"

bool TobiiREST::GetCalibID() {
	try
	{
		json::value json = REST_Handler::POST_Request(SERVER _T("/api/projects")).extract_json().get();
		auto prId = json[_T("pr_id")].as_string();
		std::wcout << "prId=" << prId << std::endl;

		json::value postData;
		postData[L"pa_project"] = json::value::string(prId);
		json = REST_Handler::POST_Request(SERVER _T("/api/participants"), postData).extract_json().get();
		auto paId = json[_T("pa_id")].as_string();
		std::wcout << "paId=" << paId << std::endl;

		json::value postData2;
		postData2[L"ca_project"] = json::value::string(prId);
		postData2[L"ca_type"] = json::value::string(L"default");
		postData2[L"ca_participant"] = json::value::string(paId);
		json = REST_Handler::POST_Request(SERVER _T("/api/calibrations"), postData2).extract_json().get();
		_CalibID = json[_T("ca_id")].as_string();
		std::wcout << "caId=" << _CalibID << std::endl;

		return true;
	}
	catch (const std::exception & e)
	{
		std::cout << "Error " << e.what() << std::endl;
		return false;
	}
}

bool TobiiREST::StartCalibration() {
	try
	{
		std::wstring url = SERVER _T("/api/calibrations/") + _CalibID + _T("/start");
		json::value json = REST_Handler::POST_Request(url.c_str()).extract_json().get();
		std::wcout << "Calibration start" << std::endl;
		return true;
	}
	catch (const std::exception& e)
	{
		std::cout << "Error " << e.what() << std::endl;
		return false;
	}
}

// GetCalibResult
// 戻り値 -1:エラー 0:失敗 1:成功
int TobiiREST::GetCalibResult() {
	try
	{
		std::wstring url = SERVER _T("/api/calibrations/") + _CalibID + _T("/status");
		std::vector<std::wstring> values;
		values.push_back(_T("failed"));
		values.push_back(_T("calibrated"));
		std::wstring status = REST_Handler::WaitForStatus(url.c_str(), _T("ca_state"), values);
		if (status == _T("failed")) {
			std::wcout << _T("Calibration failed.") << std::endl;
			return 0;
		}
		std::wcout << _T("Calibration successful.") << std::endl;
		return 1;
	}
	catch (const std::exception & e)
	{
		std::cout << "Error " << e.what() << std::endl;

		return -1;
	}
}