Cloud API added
[apps/native/gear-racing-car.git] / inc / cloud / cloud_request.h
1 /*
2  * Copyright (c) 2018 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Flora License, Version 1.1 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #ifndef __CLOUD_REQUEST_H_
18 #define __CLOUD_REQUEST_H_
19
20 #include <gio/gio.h>
21 #include "car_info.h"
22
23 /**
24  * @brief Enum that indicates if HTTP request finished succesfully or not.
25 */
26 typedef enum
27 {
28     SUCCESS = 0,
29     FAILURE
30 } request_result_e;
31
32 /**
33  * @brief Called when data from HTTP /api/racing GET request was obtained.
34  *
35  * @param[in] result Result of request.
36  * @param[in] car_info The array of car_info struct.
37  * @param[in] size Length of the car_info array
38  * @param[in] user_data User data passed in @cloud_request_api_racing_get function.
39  */
40 typedef void(*cloud_request_car_list_data_cb)(request_result_e result, car_info_t **car_info, int size, void *user_data);
41
42 /**
43  * @brief Called when data from HTTP /api/racing POST request was obtained.
44  *
45  * @param[in] result Result of request.
46  * @param[in] user_data User data passed in @cloud_request_api_racing_post function.
47  */
48 typedef void(*cloud_request_car_post_finish_cb)(request_result_e result, void *user_data);
49
50 /**
51  * @brief Sends cloud request that obtains list of registered cars.
52  *
53  * @param[in] ap_mac Mac address of access point that device is connected to.
54  * @param[in] callback Function that will be invoked, when request will be finished.
55  *
56  * @return Returns @GCancellable object that allows to cancel this request.
57  * @remark To cancel task function g_cancellable_cancel should be called.
58  */
59 GCancellable *cloud_request_api_racing_get(const char *ap_mac, cloud_request_car_list_data_cb callback, void *user_data);
60
61 /**
62  * @brief Sends cloud request registering the car.
63  *
64  * @param[in] car_info The car_info object with car data.
65  * @param[in] callback Function that will be invoked, when request will be finished.
66  *
67  * @return Returns @GCancellable object that allows to cancel this request.
68  * @remark To cancel task function g_cancellable_cancel should be called.
69  */
70 GCancellable *cloud_request_api_racing_post(const car_info_t *car_info, cloud_request_car_post_finish_cb callback, void *user_data);
71
72 #endif