| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221 |
- #include <web_crawler.h>
- void web_crawler_loader_free_model(View* view);
- void free_buffers(WebCrawlerApp* app) {
- if(!app) {
- FURI_LOG_E(TAG, "Invalid app context");
- return;
- }
- if(app->path) {
- free(app->path);
- app->path = NULL;
- }
- if(app->temp_buffer_path) {
- free(app->temp_buffer_path);
- app->temp_buffer_path = NULL;
- }
- if(app->ssid) {
- free(app->ssid);
- app->ssid = NULL;
- }
- if(app->temp_buffer_ssid) {
- free(app->temp_buffer_ssid);
- app->temp_buffer_ssid = NULL;
- }
- if(app->password) {
- free(app->password);
- app->password = NULL;
- }
- if(app->temp_buffer_password) {
- free(app->temp_buffer_password);
- app->temp_buffer_password = NULL;
- }
- if(app->file_type) {
- free(app->file_type);
- app->file_type = NULL;
- }
- if(app->temp_buffer_file_type) {
- free(app->temp_buffer_file_type);
- app->temp_buffer_file_type = NULL;
- }
- if(app->file_rename) {
- free(app->file_rename);
- app->file_rename = NULL;
- }
- if(app->temp_buffer_file_rename) {
- free(app->temp_buffer_file_rename);
- app->temp_buffer_file_rename = NULL;
- }
- if(app->temp_buffer_http_method) {
- free(app->temp_buffer_http_method);
- app->temp_buffer_http_method = NULL;
- }
- if(app->temp_buffer_headers) {
- free(app->temp_buffer_headers);
- app->temp_buffer_headers = NULL;
- }
- if(app->temp_buffer_payload) {
- free(app->temp_buffer_payload);
- app->temp_buffer_payload = NULL;
- }
- if(app->http_method) {
- free(app->http_method);
- app->http_method = NULL;
- }
- if(app->headers) {
- free(app->headers);
- app->headers = NULL;
- }
- if(app->payload) {
- free(app->payload);
- app->payload = NULL;
- }
- }
- void free_resources(WebCrawlerApp* app) {
- if(!app) {
- FURI_LOG_E(TAG, "Invalid app context");
- return;
- }
- free_buffers(app);
- }
- void free_all(WebCrawlerApp* app, char* reason) {
- if(!app) {
- FURI_LOG_E(TAG, "Invalid app context");
- return;
- }
- if(reason) {
- FURI_LOG_I(TAG, reason);
- }
- if(app->view_loader) view_free(app->view_loader);
- if(app->submenu_main) submenu_free(app->submenu_main);
- if(app->submenu_config) submenu_free(app->submenu_config);
- if(app->variable_item_list_wifi) variable_item_list_free(app->variable_item_list_wifi);
- if(app->variable_item_list_file) variable_item_list_free(app->variable_item_list_file);
- if(app->variable_item_list_request) variable_item_list_free(app->variable_item_list_request);
- if(app->view_dispatcher) view_dispatcher_free(app->view_dispatcher);
- if(app->widget_about) widget_free(app->widget_about);
- if(app->widget_file_read) widget_free(app->widget_file_read);
- if(app->widget_file_delete) widget_free(app->widget_file_delete);
- if(app->text_input_path) text_input_free(app->text_input_path);
- if(app->text_input_ssid) text_input_free(app->text_input_ssid);
- if(app->text_input_password) text_input_free(app->text_input_password);
- if(app->text_input_file_type) text_input_free(app->text_input_file_type);
- if(app->text_input_file_rename) text_input_free(app->text_input_file_rename);
- if(app->text_input_headers) text_input_free(app->text_input_headers);
- if(app->text_input_payload) text_input_free(app->text_input_payload);
- furi_record_close(RECORD_GUI);
- free_resources(app);
- }
- /**
- * @brief Function to free the resources used by WebCrawlerApp.
- * @param app The WebCrawlerApp object to free.
- */
- void web_crawler_app_free(WebCrawlerApp* app) {
- if(!app) {
- FURI_LOG_E(TAG, "Invalid app context");
- return;
- }
- if(!app->view_dispatcher) {
- FURI_LOG_E(TAG, "Invalid view dispatcher");
- return;
- }
- // Free View(s)
- if(app->view_loader) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewLoader);
- web_crawler_loader_free_model(app->view_loader);
- view_free(app->view_loader);
- }
- // Deinitialize UART
- flipper_http_deinit();
- // Remove and free Submenu
- if(app->submenu_main) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewSubmenuMain);
- submenu_free(app->submenu_main);
- }
- if(app->submenu_config) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewSubmenuConfig);
- submenu_free(app->submenu_config);
- }
- // Remove and free Variable Item Lists
- if(app->variable_item_list_wifi) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewVariableItemListWifi);
- variable_item_list_free(app->variable_item_list_wifi);
- }
- if(app->variable_item_list_file) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewVariableItemListFile);
- variable_item_list_free(app->variable_item_list_file);
- }
- if(app->variable_item_list_request) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewVariableItemListRequest);
- variable_item_list_free(app->variable_item_list_request);
- }
- // Remove and free Text Input views
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInput);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputSSID);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputPassword);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputFileType);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputFileRename);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputHeaders);
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewTextInputPayload);
- if(app->text_input_path) text_input_free(app->text_input_path);
- if(app->text_input_ssid) text_input_free(app->text_input_ssid);
- if(app->text_input_password) text_input_free(app->text_input_password);
- if(app->text_input_file_type) text_input_free(app->text_input_file_type);
- if(app->text_input_file_rename) text_input_free(app->text_input_file_rename);
- if(app->text_input_headers) text_input_free(app->text_input_headers);
- if(app->text_input_payload) text_input_free(app->text_input_payload);
- // Remove and free Widgets
- if(app->widget_about) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewAbout);
- widget_free(app->widget_about);
- }
- if(app->widget_file_read) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewFileRead);
- widget_free(app->widget_file_read);
- }
- if(app->widget_file_delete) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewFileDelete);
- widget_free(app->widget_file_delete);
- }
- if(app->widget_result) {
- view_dispatcher_remove_view(app->view_dispatcher, WebCrawlerViewWidgetResult);
- widget_free(app->widget_result);
- }
- // Free the ViewDispatcher and close GUI
- if(app->view_dispatcher) view_dispatcher_free(app->view_dispatcher);
- // Free the application structure
- if(app) {
- free(app);
- }
- }
- WebCrawlerApp* app_instance = NULL;
- char* http_method_names[] = {"GET", "POST", "PUT", "DELETE", "DOWNLOAD"};
|