5 #include <sys/socket.h>
10 #include <system_info.h>
14 #include <download-provider-interface.h>
22 #define LOG_TAG "TIZEN_N_URL_DOWNLOAD"
23 #define TRACE_ERROR(format, ARG...) \
25 LOGE(format, ##ARG); \
27 #define TRACE_STRERROR(format, ARG...) \
29 LOGE(format" [%s]", ##ARG, strerror(errno)); \
31 #define TRACE_INFO(format, ARG...) \
33 LOGI(format, ##ARG); \
36 #define TRACE_DEBUG_MSG(format, ARG...) ;
39 #define TELEPHONY_FEATURE "tizen.org/feature/network.telephony"
40 #define WIFI_FEATURE "tizen.org/feature/network.wifi"
41 #define WIFI_DIRECT_FEATURE "tizen.org/feature/network.wifi.direct"
43 /////////////////////// APIs /////////////////////////////////
45 int download_create(int *download_id)
48 if (download_id == NULL)
49 return DOWNLOAD_ERROR_INVALID_PARAMETER;
50 return dp_interface_create(download_id);
53 int download_destroy(int download_id)
56 return dp_interface_destroy(download_id);
59 int download_start(int download_id)
62 return dp_interface_start(download_id);
65 int download_pause(int download_id)
68 return dp_interface_pause(download_id);
71 int download_cancel(int download_id)
74 return dp_interface_cancel(download_id);
78 int download_set_url(int download_id, const char *url)
82 return DOWNLOAD_ERROR_INVALID_PARAMETER;
83 return dp_interface_set_url(download_id, url);
87 int download_get_url(int download_id, char **url)
91 return DOWNLOAD_ERROR_INVALID_PARAMETER;
92 return dp_interface_get_url(download_id, url);
95 int download_set_network_type(int download_id,
96 download_network_type_e net_type)
100 int bIsTelephonyFeatureSupported = 0;
101 int bIsWifiFeatureSupported = 0;
102 int bIsWifiDirectFeatureSupported = 0;
104 system_info_get_platform_bool (TELEPHONY_FEATURE, &bIsTelephonyFeatureSupported);
105 system_info_get_platform_bool (WIFI_FEATURE, &bIsWifiFeatureSupported);
106 system_info_get_platform_bool (WIFI_DIRECT_FEATURE, &bIsWifiDirectFeatureSupported);
110 case DOWNLOAD_NETWORK_DATA_NETWORK:
111 if ( !bIsTelephonyFeatureSupported )
113 return DOWNLOAD_ERROR_NOT_SUPPORTED;
116 case DOWNLOAD_NETWORK_WIFI:
117 if ( !bIsWifiFeatureSupported )
119 return DOWNLOAD_ERROR_NOT_SUPPORTED;
122 case DOWNLOAD_NETWORK_WIFI_DIRECT:
123 if ( !bIsWifiDirectFeatureSupported )
125 return DOWNLOAD_ERROR_NOT_SUPPORTED;
128 case DOWNLOAD_NETWORK_ALL:
129 if ( !bIsTelephonyFeatureSupported && !bIsWifiFeatureSupported && !bIsWifiDirectFeatureSupported )
131 return DOWNLOAD_ERROR_NOT_SUPPORTED;
136 return dp_interface_set_network_type(download_id, (int)net_type);
139 int download_get_network_type(int download_id,
140 download_network_type_e *net_type)
144 if (net_type == NULL) {
145 TRACE_ERROR("Parameter NULL Check");
146 return DOWNLOAD_ERROR_INVALID_PARAMETER;
148 int network_type = DOWNLOAD_ADAPTOR_NETWORK_ALL;
149 int ret = dp_interface_get_network_type(download_id, &network_type);
150 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
151 *net_type = network_type;
155 int download_set_network_bonding(int download_id, bool enable)
158 return dp_interface_set_network_bonding(download_id, (int)enable);
161 int download_get_network_bonding(int download_id, bool *enable)
165 if (enable == NULL) {
166 TRACE_ERROR("Parameter NULL Check");
167 return DOWNLOAD_ERROR_INVALID_PARAMETER;
169 int ret = dp_interface_get_network_bonding(download_id, &is_set);
170 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
171 *enable = (bool)is_set;
175 int download_set_destination(int download_id, const char *path)
179 return DOWNLOAD_ERROR_INVALID_PARAMETER;
180 return dp_interface_set_destination(download_id, path);
184 int download_get_destination(int download_id, char **path)
188 return DOWNLOAD_ERROR_INVALID_PARAMETER;
189 return dp_interface_get_destination(download_id, path);
192 int download_set_file_name(int download_id, const char *file_name)
195 if (file_name == NULL)
196 return DOWNLOAD_ERROR_INVALID_PARAMETER;
197 return dp_interface_set_file_name(download_id, file_name);
200 int download_get_file_name(int download_id, char **file_name)
203 if (file_name == NULL)
204 return DOWNLOAD_ERROR_INVALID_PARAMETER;
205 return dp_interface_get_file_name(download_id, file_name);
208 int download_get_downloaded_file_path(int download_id, char **path)
212 return DOWNLOAD_ERROR_INVALID_PARAMETER;
213 return dp_interface_get_downloaded_file_path(download_id, path);
216 int download_add_http_header_field(int download_id, const char *field,
220 if (field == NULL || value == NULL)
221 return DOWNLOAD_ERROR_INVALID_PARAMETER;
223 dp_interface_add_http_header_field(download_id, field, value);
226 int download_get_http_header_field(int download_id,
227 const char *field, char **value)
230 if (field == NULL || value == NULL)
231 return DOWNLOAD_ERROR_INVALID_PARAMETER;
233 dp_interface_get_http_header_field(download_id, field, value);
236 int download_get_http_header_field_list(int download_id, char ***fields,
240 if (fields == NULL || length == NULL)
241 return DOWNLOAD_ERROR_INVALID_PARAMETER;
242 return dp_interface_get_http_header_field_list(download_id, fields,
246 int download_remove_http_header_field(int download_id,
251 return DOWNLOAD_ERROR_INVALID_PARAMETER;
252 return dp_interface_remove_http_header_field(download_id, field);
255 // download_state_changed_cb is different with dp_interface_state_changed_cb.
256 int download_set_state_changed_cb(int download_id,
257 download_state_changed_cb callback, void* user_data)
260 return dp_interface_set_state_changed_cb(download_id,
261 (dp_interface_state_changed_cb)callback, user_data);
264 int download_unset_state_changed_cb(int download_id)
267 return dp_interface_unset_state_changed_cb(download_id);
270 // download_progress_cb is same with dp_interface_progress_cb.
271 int download_set_progress_cb(int download_id,
272 download_progress_cb callback, void *user_data)
275 return dp_interface_set_progress_cb(download_id,
276 (dp_interface_progress_cb)callback, user_data);
279 int download_unset_progress_cb(int download_id)
282 return dp_interface_unset_progress_cb(download_id);
285 int download_get_state(int download_id, download_state_e *state)
290 TRACE_ERROR("Parameter NULL Check");
291 return DOWNLOAD_ERROR_INVALID_PARAMETER;
293 int ret = dp_interface_get_state(download_id, &statecode);
294 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
299 int download_get_temp_path(int download_id, char **temp_path)
302 if (temp_path == NULL)
303 return DOWNLOAD_ERROR_INVALID_PARAMETER;
304 return dp_interface_get_temp_path(download_id, temp_path);
307 int download_get_content_name(int download_id, char **content_name)
310 if (content_name == NULL)
311 return DOWNLOAD_ERROR_INVALID_PARAMETER;
312 return dp_interface_get_content_name(download_id, content_name);
315 int download_get_content_size(int download_id,
316 unsigned long long *content_size)
319 if (content_size == NULL)
320 return DOWNLOAD_ERROR_INVALID_PARAMETER;
321 return dp_interface_get_content_size(download_id, content_size);
324 int download_get_mime_type(int download_id, char **mime_type)
327 if (mime_type == NULL)
328 return DOWNLOAD_ERROR_INVALID_PARAMETER;
329 return dp_interface_get_mime_type(download_id, mime_type);
332 int download_set_auto_download(int download_id, bool enable)
335 return dp_interface_set_auto_download(download_id, (int)enable);
338 int download_get_auto_download(int download_id, bool *enable)
342 if (enable == NULL) {
343 TRACE_ERROR("Parameter NULL Check");
344 return DOWNLOAD_ERROR_INVALID_PARAMETER;
346 int ret = dp_interface_get_auto_download(download_id, &is_set);
347 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
348 *enable = (bool)is_set;
352 int download_get_error(int download_id, download_error_e *error)
357 TRACE_ERROR("Parameter NULL Check");
358 return DOWNLOAD_ERROR_INVALID_PARAMETER;
360 int ret = dp_interface_get_error(download_id, &errorcode);
361 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
366 int download_get_http_status(int download_id, int *http_status)
369 if (http_status == NULL)
370 return DOWNLOAD_ERROR_INVALID_PARAMETER;
371 return dp_interface_get_http_status(download_id, http_status);
374 int download_set_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h handle)
378 return DOWNLOAD_ERROR_INVALID_PARAMETER;
379 return dp_interface_set_notification_service_handle(download_id, (int)type, handle);
382 int download_get_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h *handle)
386 return DOWNLOAD_ERROR_INVALID_PARAMETER;
387 return dp_interface_get_notification_service_handle(download_id, (int)type, handle);
390 int download_set_notification_title(int download_id, const char *title)
394 return DOWNLOAD_ERROR_INVALID_PARAMETER;
395 return dp_interface_set_notification_title(download_id, title);
398 int download_get_notification_title(int download_id, char **title)
402 return DOWNLOAD_ERROR_INVALID_PARAMETER;
403 return dp_interface_get_notification_title(download_id, title);
406 int download_set_notification_description(int download_id, const char *description)
409 if (description == NULL)
410 return DOWNLOAD_ERROR_INVALID_PARAMETER;
411 return dp_interface_set_notification_description(download_id, description);
414 int download_get_notification_description(int download_id, char **description)
417 if (description == NULL)
418 return DOWNLOAD_ERROR_INVALID_PARAMETER;
419 return dp_interface_get_notification_description(download_id, description);
422 int download_set_notification_type(int download_id, download_notification_type_e type)
425 return dp_interface_set_notification_type(download_id, (int)type);
428 int download_get_notification_type(int download_id, download_notification_type_e *type)
433 TRACE_ERROR("Parameter NULL Check");
434 return DOWNLOAD_ERROR_INVALID_PARAMETER;
436 int ret = dp_interface_get_notification_type(download_id, ¬i_type);
437 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
438 *type = (download_notification_type_e)noti_type;
442 int download_get_etag(int download_id, char **etag)
446 return DOWNLOAD_ERROR_INVALID_PARAMETER;
447 return dp_interface_get_etag(download_id, etag);
450 int download_set_temp_file_path(int download_id, char *path)
454 return DOWNLOAD_ERROR_INVALID_PARAMETER;
455 return dp_interface_set_temp_file_path(download_id, path);