| 114 | |
| 115 | |
| 116 | void logIn(std::string email, std::string password) { |
| 117 | if (!updateMutex.try_lock()) |
| 118 | return; |
| 119 | DEFER({updateMutex.unlock();}); |
| 120 | |
| 121 | loginStatus = string::translate("library.loggingIn"); |
| 122 | json_t* reqJ = json_object(); |
| 123 | json_object_set_new(reqJ, "email", json_string(email.c_str())); |
| 124 | json_object_set_new(reqJ, "password", json_string(password.c_str())); |
| 125 | std::string url = API_URL + "/token"; |
| 126 | json_t* resJ = network::requestJson(network::METHOD_POST, url, reqJ); |
| 127 | json_decref(reqJ); |
| 128 | |
| 129 | if (!resJ) { |
| 130 | loginStatus = string::translate("library.noResponse"); |
| 131 | return; |
| 132 | } |
| 133 | DEFER({json_decref(resJ);}); |
| 134 | |
| 135 | json_t* errorJ = json_object_get(resJ, "error"); |
| 136 | if (errorJ) { |
| 137 | const char* errorStr = json_string_value(errorJ); |
| 138 | loginStatus = errorStr; |
| 139 | return; |
| 140 | } |
| 141 | |
| 142 | json_t* tokenJ = json_object_get(resJ, "token"); |
| 143 | if (!tokenJ) { |
| 144 | loginStatus = string::translate("library.noToken"); |
| 145 | return; |
| 146 | } |
| 147 | |
| 148 | const char* tokenStr = json_string_value(tokenJ); |
| 149 | settings::token = tokenStr; |
| 150 | loginStatus = ""; |
| 151 | refreshRequested = true; |
| 152 | } |
| 153 | |
| 154 | |
| 155 | void logOut() { |
no test coverage detected