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)
101 int bIsTelephonyFeatureSupported =0;
102 int bIsWifiFeatureSupported = 0;
103 int bIsWifiDirectFeatureSupported = 0;
105 bValue = system_info_get_platform_bool (TELEPHONY_FEATURE, &bIsTelephonyFeatureSupported);
106 bValue = system_info_get_platform_bool (WIFI_FEATURE, &bIsWifiFeatureSupported);
107 bValue = system_info_get_platform_bool (WIFI_DIRECT_FEATURE, &bIsWifiDirectFeatureSupported);
111 case DOWNLOAD_NETWORK_DATA_NETWORK:
112 if ( !bIsTelephonyFeatureSupported )
114 return DOWNLOAD_ERROR_NOT_SUPPORTED;
117 case DOWNLOAD_NETWORK_WIFI:
118 if ( !bIsWifiFeatureSupported )
120 return DOWNLOAD_ERROR_NOT_SUPPORTED;
123 case DOWNLOAD_NETWORK_WIFI_DIRECT:
124 if ( !bIsWifiDirectFeatureSupported )
126 return DOWNLOAD_ERROR_NOT_SUPPORTED;
129 case DOWNLOAD_NETWORK_ALL:
130 if ( !bIsTelephonyFeatureSupported && !bIsWifiFeatureSupported && !bIsWifiDirectFeatureSupported )
132 return DOWNLOAD_ERROR_NOT_SUPPORTED;
136 /////////////////////////
137 return dp_interface_set_network_type(download_id, (int)net_type);
140 int download_get_network_type(int download_id,
141 download_network_type_e *net_type)
145 if (net_type == NULL) {
146 TRACE_ERROR("Parameter NULL Check");
147 return DOWNLOAD_ERROR_INVALID_PARAMETER;
149 int network_type = DOWNLOAD_ADAPTOR_NETWORK_ALL;
150 int ret = dp_interface_get_network_type(download_id, &network_type);
151 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
152 *net_type = network_type;
156 int download_set_network_bonding(int download_id, bool enable)
159 return dp_interface_set_network_bonding(download_id, (int)enable);
162 int download_get_network_bonding(int download_id, bool *enable)
166 if (enable == NULL) {
167 TRACE_ERROR("Parameter NULL Check");
168 return DOWNLOAD_ERROR_INVALID_PARAMETER;
170 int ret = dp_interface_get_network_bonding(download_id, &is_set);
171 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
172 *enable = (bool)is_set;
176 int download_set_destination(int download_id, const char *path)
180 return DOWNLOAD_ERROR_INVALID_PARAMETER;
181 return dp_interface_set_destination(download_id, path);
185 int download_get_destination(int download_id, char **path)
189 return DOWNLOAD_ERROR_INVALID_PARAMETER;
190 return dp_interface_get_destination(download_id, path);
193 int download_set_file_name(int download_id, const char *file_name)
196 if (file_name == NULL)
197 return DOWNLOAD_ERROR_INVALID_PARAMETER;
198 return dp_interface_set_file_name(download_id, file_name);
201 int download_get_file_name(int download_id, char **file_name)
204 if (file_name == NULL)
205 return DOWNLOAD_ERROR_INVALID_PARAMETER;
206 return dp_interface_get_file_name(download_id, file_name);
209 int download_get_downloaded_file_path(int download_id, char **path)
213 return DOWNLOAD_ERROR_INVALID_PARAMETER;
214 return dp_interface_get_downloaded_file_path(download_id, path);
217 int download_add_http_header_field(int download_id, const char *field,
221 if (field == NULL || value == NULL)
222 return DOWNLOAD_ERROR_INVALID_PARAMETER;
224 dp_interface_add_http_header_field(download_id, field, value);
227 int download_get_http_header_field(int download_id,
228 const char *field, char **value)
231 if (field == NULL || value == NULL)
232 return DOWNLOAD_ERROR_INVALID_PARAMETER;
234 dp_interface_get_http_header_field(download_id, field, value);
237 int download_get_http_header_field_list(int download_id, char ***fields,
241 if (fields == NULL || length == NULL)
242 return DOWNLOAD_ERROR_INVALID_PARAMETER;
243 return dp_interface_get_http_header_field_list(download_id, fields,
247 int download_remove_http_header_field(int download_id,
252 return DOWNLOAD_ERROR_INVALID_PARAMETER;
253 return dp_interface_remove_http_header_field(download_id, field);
256 // download_state_changed_cb is different with dp_interface_state_changed_cb.
257 int download_set_state_changed_cb(int download_id,
258 download_state_changed_cb callback, void* user_data)
261 return dp_interface_set_state_changed_cb(download_id,
262 (dp_interface_state_changed_cb)callback, user_data);
265 int download_unset_state_changed_cb(int download_id)
268 return dp_interface_unset_state_changed_cb(download_id);
271 // download_progress_cb is same with dp_interface_progress_cb.
272 int download_set_progress_cb(int download_id,
273 download_progress_cb callback, void *user_data)
276 return dp_interface_set_progress_cb(download_id,
277 (dp_interface_progress_cb)callback, user_data);
280 int download_unset_progress_cb(int download_id)
283 return dp_interface_unset_progress_cb(download_id);
286 int download_get_state(int download_id, download_state_e *state)
291 TRACE_ERROR("Parameter NULL Check");
292 return DOWNLOAD_ERROR_INVALID_PARAMETER;
294 int ret = dp_interface_get_state(download_id, &statecode);
295 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
300 int download_get_temp_path(int download_id, char **temp_path)
303 if (temp_path == NULL)
304 return DOWNLOAD_ERROR_INVALID_PARAMETER;
305 return dp_interface_get_temp_path(download_id, temp_path);
308 int download_get_content_name(int download_id, char **content_name)
311 if (content_name == NULL)
312 return DOWNLOAD_ERROR_INVALID_PARAMETER;
313 return dp_interface_get_content_name(download_id, content_name);
316 int download_get_content_size(int download_id,
317 unsigned long long *content_size)
320 if (content_size == NULL)
321 return DOWNLOAD_ERROR_INVALID_PARAMETER;
322 return dp_interface_get_content_size(download_id, content_size);
325 int download_get_mime_type(int download_id, char **mime_type)
328 if (mime_type == NULL)
329 return DOWNLOAD_ERROR_INVALID_PARAMETER;
330 return dp_interface_get_mime_type(download_id, mime_type);
333 int download_set_auto_download(int download_id, bool enable)
336 return dp_interface_set_auto_download(download_id, (int)enable);
339 int download_get_auto_download(int download_id, bool *enable)
343 if (enable == NULL) {
344 TRACE_ERROR("Parameter NULL Check");
345 return DOWNLOAD_ERROR_INVALID_PARAMETER;
347 int ret = dp_interface_get_auto_download(download_id, &is_set);
348 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
349 *enable = (bool)is_set;
353 int download_get_error(int download_id, download_error_e *error)
358 TRACE_ERROR("Parameter NULL Check");
359 return DOWNLOAD_ERROR_INVALID_PARAMETER;
361 int ret = dp_interface_get_error(download_id, &errorcode);
362 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
367 int download_get_http_status(int download_id, int *http_status)
370 if (http_status == NULL)
371 return DOWNLOAD_ERROR_INVALID_PARAMETER;
372 return dp_interface_get_http_status(download_id, http_status);
375 int download_set_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h handle)
379 return DOWNLOAD_ERROR_INVALID_PARAMETER;
380 return dp_interface_set_notification_service_handle(download_id, (int)type, handle);
383 int download_get_notification_app_control(int download_id, download_notification_app_control_type_e type, app_control_h *handle)
387 return DOWNLOAD_ERROR_INVALID_PARAMETER;
388 return dp_interface_get_notification_service_handle(download_id, (int)type, handle);
391 int download_set_notification_title(int download_id, const char *title)
395 return DOWNLOAD_ERROR_INVALID_PARAMETER;
396 return dp_interface_set_notification_title(download_id, title);
399 int download_get_notification_title(int download_id, char **title)
403 return DOWNLOAD_ERROR_INVALID_PARAMETER;
404 return dp_interface_get_notification_title(download_id, title);
407 int download_set_notification_description(int download_id, const char *description)
410 if (description == NULL)
411 return DOWNLOAD_ERROR_INVALID_PARAMETER;
412 return dp_interface_set_notification_description(download_id, description);
415 int download_get_notification_description(int download_id, char **description)
418 if (description == NULL)
419 return DOWNLOAD_ERROR_INVALID_PARAMETER;
420 return dp_interface_get_notification_description(download_id, description);
423 int download_set_notification_type(int download_id, download_notification_type_e type)
426 return dp_interface_set_notification_type(download_id, (int)type);
429 int download_get_notification_type(int download_id, download_notification_type_e *type)
434 TRACE_ERROR("Parameter NULL Check");
435 return DOWNLOAD_ERROR_INVALID_PARAMETER;
437 int ret = dp_interface_get_notification_type(download_id, ¬i_type);
438 if (ret == DOWNLOAD_ADAPTOR_ERROR_NONE)
439 *type = (download_notification_type_e)noti_type;
443 int download_get_etag(int download_id, char **etag)
447 return DOWNLOAD_ERROR_INVALID_PARAMETER;
448 return dp_interface_get_etag(download_id, etag);
451 int download_set_temp_file_path(int download_id, char *path)
455 return DOWNLOAD_ERROR_INVALID_PARAMETER;
456 return dp_interface_set_temp_file_path(download_id, path);