├── HTTPShortcuts ├── framework │ ├── .gitignore │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── android │ │ └── framework │ │ ├── extensions │ │ ├── ServiceExtensions.kt │ │ ├── ActivityExtensions.kt │ │ └── CoroutineExtensions.kt │ │ ├── ui │ │ └── IntentBuilder.kt │ │ └── utils │ │ ├── WebViewChecker.kt │ │ └── UUIDUtils.kt ├── scripting │ ├── .gitignore │ ├── consumer-rules.pro │ ├── proguard-rules.pro │ └── src │ │ └── main │ │ ├── AndroidManifest.xml │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── android │ │ └── scripting │ │ ├── JsFunction.kt │ │ ├── ScriptingEngineFactory.kt │ │ ├── ScriptingException.kt │ │ ├── quickjs │ │ └── QuickJsObject.kt │ │ ├── JsValue.kt │ │ └── ScriptingEngine.kt ├── keystores │ └── development.jks ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── app │ └── src │ │ ├── main │ │ ├── assets │ │ │ ├── icons_keywords │ │ │ └── docs │ │ │ │ └── assets │ │ │ │ ├── scripting │ │ │ │ ├── 01.png │ │ │ │ └── 02.png │ │ │ │ └── shortcuts │ │ │ │ └── 01.png │ │ ├── res │ │ │ ├── drawable-nodpi │ │ │ │ ├── black_cd.webp │ │ │ │ ├── black_armor.webp │ │ │ │ ├── black_bell.webp │ │ │ │ ├── black_box.webp │ │ │ │ ├── black_cake.webp │ │ │ │ ├── black_car.webp │ │ │ │ ├── black_cat.webp │ │ │ │ ├── black_check.webp │ │ │ │ ├── black_clean.webp │ │ │ │ ├── black_clock.webp │ │ │ │ ├── black_close.webp │ │ │ │ ├── black_cloud.webp │ │ │ │ ├── black_color.webp │ │ │ │ ├── black_dice.webp │ │ │ │ ├── black_dog.webp │ │ │ │ ├── black_dvd.webp │ │ │ │ ├── black_film.webp │ │ │ │ ├── black_fire.webp │ │ │ │ ├── black_fish.webp │ │ │ │ ├── black_gift.webp │ │ │ │ ├── black_globe.webp │ │ │ │ ├── black_graph.webp │ │ │ │ ├── black_hand.webp │ │ │ │ ├── black_hat.webp │ │ │ │ ├── black_heart.webp │ │ │ │ ├── black_help.webp │ │ │ │ ├── black_house.webp │ │ │ │ ├── black_ipad.webp │ │ │ │ ├── black_iris.webp │ │ │ │ ├── black_lan.webp │ │ │ │ ├── black_laugh.webp │ │ │ │ ├── black_light.webp │ │ │ │ ├── black_link.webp │ │ │ │ ├── black_linux.webp │ │ │ │ ├── black_lock.webp │ │ │ │ ├── black_mail.webp │ │ │ │ ├── black_minus.webp │ │ │ │ ├── black_moon.webp │ │ │ │ ├── black_mouse.webp │ │ │ │ ├── black_movie.webp │ │ │ │ ├── black_new.webp │ │ │ │ ├── black_next.webp │ │ │ │ ├── black_phone.webp │ │ │ │ ├── black_plug.webp │ │ │ │ ├── black_plus.webp │ │ │ │ ├── black_robot.webp │ │ │ │ ├── black_sad.webp │ │ │ │ ├── black_smile.webp │ │ │ │ ├── black_sofa.webp │ │ │ │ ├── black_solar.webp │ │ │ │ ├── black_sword.webp │ │ │ │ ├── black_tag.webp │ │ │ │ ├── black_tent.webp │ │ │ │ ├── black_tools.webp │ │ │ │ ├── black_torch.webp │ │ │ │ ├── black_toy.webp │ │ │ │ ├── black_tube.webp │ │ │ │ ├── black_usb.webp │ │ │ │ ├── black_view.webp │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── black_balloon.webp │ │ │ │ ├── black_bat_man.webp │ │ │ │ ├── black_button.webp │ │ │ │ ├── black_camera.webp │ │ │ │ ├── black_cooker.webp │ │ │ │ ├── black_cursor.webp │ │ │ │ ├── black_cycling.webp │ │ │ │ ├── black_danger.webp │ │ │ │ ├── black_delete.webp │ │ │ │ ├── black_driller.webp │ │ │ │ ├── black_feather.webp │ │ │ │ ├── black_floppy.webp │ │ │ │ ├── black_flower.webp │ │ │ │ ├── black_guitar.webp │ │ │ │ ├── black_houses.webp │ │ │ │ ├── black_knight.webp │ │ │ │ ├── black_laptop.webp │ │ │ │ ├── black_logout.webp │ │ │ │ ├── black_mac_pc.webp │ │ │ │ ├── black_magnet.webp │ │ │ │ ├── black_office.webp │ │ │ │ ├── black_penguin.webp │ │ │ │ ├── black_picture.webp │ │ │ │ ├── black_planet.webp │ │ │ │ ├── black_power_1.webp │ │ │ │ ├── black_power_2.webp │ │ │ │ ├── black_printer.webp │ │ │ │ ├── black_puzzles.webp │ │ │ │ ├── black_reload.webp │ │ │ │ ├── black_search.webp │ │ │ │ ├── black_shape12.webp │ │ │ │ ├── black_shape6.webp │ │ │ │ ├── black_sleepy.webp │ │ │ │ ├── black_speech.webp │ │ │ │ ├── black_sports.webp │ │ │ │ ├── black_swap_up.webp │ │ │ │ ├── black_target.webp │ │ │ │ ├── black_thunder.webp │ │ │ │ ├── black_toolbox.webp │ │ │ │ ├── black_turtle.webp │ │ │ │ ├── black_weather.webp │ │ │ │ ├── black_webcam.webp │ │ │ │ ├── black_attachment.webp │ │ │ │ ├── black_bluetooth.webp │ │ │ │ ├── black_book_open.webp │ │ │ │ ├── black_butterfly.webp │ │ │ │ ├── black_chef_cap.webp │ │ │ │ ├── black_data_edit.webp │ │ │ │ ├── black_document.webp │ │ │ │ ├── black_foot_print.webp │ │ │ │ ├── black_footprint.webp │ │ │ │ ├── black_gramaphone.webp │ │ │ │ ├── black_headphone.webp │ │ │ │ ├── black_hour_glass.webp │ │ │ │ ├── black_internet.webp │ │ │ │ ├── black_joystick.webp │ │ │ │ ├── black_key_access.webp │ │ │ │ ├── black_keyboard.webp │ │ │ │ ├── black_latitude.webp │ │ │ │ ├── black_left_arrow.webp │ │ │ │ ├── black_light_bulb.webp │ │ │ │ ├── black_media_back.webp │ │ │ │ ├── black_media_end.webp │ │ │ │ ├── black_media_play.webp │ │ │ │ ├── black_messages.webp │ │ │ │ ├── black_microphone.webp │ │ │ │ ├── black_palm_tree.webp │ │ │ │ ├── black_password.webp │ │ │ │ ├── black_photograph.webp │ │ │ │ ├── black_pine_tree.webp │ │ │ │ ├── black_printer_2.webp │ │ │ │ ├── black_rectangle.webp │ │ │ │ ├── black_satellite.webp │ │ │ │ ├── black_settings.webp │ │ │ │ ├── black_shape_cube.webp │ │ │ │ ├── black_shape_star.webp │ │ │ │ ├── black_spaceship.webp │ │ │ │ ├── black_squirrel.webp │ │ │ │ ├── black_swap_down.webp │ │ │ │ ├── black_swap_left.webp │ │ │ │ ├── black_swap_right.webp │ │ │ │ ├── black_table_fan.webp │ │ │ │ ├── black_table_lamp.webp │ │ │ │ ├── black_telephone.webp │ │ │ │ ├── black_television.webp │ │ │ │ ├── black_umbrella.webp │ │ │ │ ├── black_university.webp │ │ │ │ ├── black_user_male.webp │ │ │ │ ├── black_voicemail.webp │ │ │ │ ├── black_volume_low.webp │ │ │ │ ├── black_water_tap.webp │ │ │ │ ├── black_windows_pc.webp │ │ │ │ ├── black_yin_yang.webp │ │ │ │ ├── black_alarm_clock.webp │ │ │ │ ├── black_announcement.webp │ │ │ │ ├── black_beamed_notes.webp │ │ │ │ ├── black_beep_signal.webp │ │ │ │ ├── black_business_man.webp │ │ │ │ ├── black_cctv_camera.webp │ │ │ │ ├── black_command_mac.webp │ │ │ │ ├── black_device_bell.webp │ │ │ │ ├── black_finger_print.webp │ │ │ │ ├── black_fuel_station.webp │ │ │ │ ├── black_linear_gauge.webp │ │ │ │ ├── black_loud_speaker.webp │ │ │ │ ├── black_map_location.webp │ │ │ │ ├── black_media_pause.webp │ │ │ │ ├── black_mobile_phone.webp │ │ │ │ ├── black_outlet_plug.webp │ │ │ │ ├── black_quarter_note.webp │ │ │ │ ├── black_refrigerator.webp │ │ │ │ ├── black_road_forward.webp │ │ │ │ ├── black_shape_peace.webp │ │ │ │ ├── black_shape_spade.webp │ │ │ │ ├── black_shape_square.webp │ │ │ │ ├── black_smoking_zone.webp │ │ │ │ ├── black_synchronize.webp │ │ │ │ ├── black_user_female.webp │ │ │ │ ├── black_volume_high.webp │ │ │ │ ├── black_volume_mute.webp │ │ │ │ ├── black_beverage_coffee.webp │ │ │ │ ├── black_calendar_date.webp │ │ │ │ ├── black_command_refresh.webp │ │ │ │ ├── black_folder_sharing.webp │ │ │ │ ├── black_identity_card.webp │ │ │ │ ├── black_network_sharing.webp │ │ │ │ ├── black_picture_frame.webp │ │ │ │ ├── black_recorded_media.webp │ │ │ │ ├── black_remote_control.webp │ │ │ │ ├── black_road_backward.webp │ │ │ │ ├── black_shape_lightning.webp │ │ │ │ ├── black_shape_triangle.webp │ │ │ │ ├── black_snack_doughnut.webp │ │ │ │ ├── black_speaker_volume.webp │ │ │ │ ├── black_tape_recorder.webp │ │ │ │ ├── black_waiting_popup.webp │ │ │ │ ├── black_warning_message.webp │ │ │ │ ├── black_washing_machine.webp │ │ │ │ ├── black_battery_charging.webp │ │ │ │ ├── black_data_information.webp │ │ │ │ ├── black_device_calculator.webp │ │ │ │ ├── black_display_contrast.webp │ │ │ │ ├── black_microsoft_windows.webp │ │ │ │ ├── black_cutlery_fork_knife.webp │ │ │ │ ├── black_display_brightness.webp │ │ │ │ ├── black_energy_saving_bulb_1.webp │ │ │ │ ├── black_energy_saving_bulb_2.webp │ │ │ │ ├── black_instrument_barometer.webp │ │ │ │ ├── black_instrument_telescope.webp │ │ │ │ ├── black_media_fast_forward.webp │ │ │ │ ├── black_transport_school_bus.webp │ │ │ │ └── black_instrument_round_bottom_flask.webp │ │ │ ├── raw │ │ │ │ └── keep.xml │ │ │ ├── xml │ │ │ │ ├── provider_paths.xml │ │ │ │ └── network_security_config.xml │ │ │ ├── drawable │ │ │ │ ├── black_circle.xml │ │ │ │ ├── image_placeholder.xml │ │ │ │ ├── black_shape_square2.xml │ │ │ │ ├── variable_widget_background.xml │ │ │ │ ├── ic_files.xml │ │ │ │ ├── ic_launcher_monochrome.xml │ │ │ │ ├── ic_handle_response.xml │ │ │ │ ├── ic_modify_shortcuts.xml │ │ │ │ ├── ic_quick_settings_tile.xml │ │ │ │ ├── ic_info.xml │ │ │ │ ├── ic_misc.xml │ │ │ │ ├── ic_control_flow.xml │ │ │ │ ├── ic_variables.xml │ │ │ │ ├── splash_screen.xml │ │ │ │ └── ic_google_play.xml │ │ │ ├── mipmap │ │ │ │ └── ic_launcher.xml │ │ │ ├── values │ │ │ │ └── arrays.xml │ │ │ └── layout │ │ │ │ └── image_editor.xml │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ ├── http_shortcuts │ │ │ ├── data │ │ │ │ ├── domains │ │ │ │ │ ├── sections │ │ │ │ │ │ └── SectionId.kt │ │ │ │ │ ├── categories │ │ │ │ │ │ └── CategoryId.kt │ │ │ │ │ ├── shortcuts │ │ │ │ │ │ ├── ShortcutId.kt │ │ │ │ │ │ └── ShortcutNameOrId.kt │ │ │ │ │ ├── variables │ │ │ │ │ │ ├── VariableKey.kt │ │ │ │ │ │ ├── GlobalVariableId.kt │ │ │ │ │ │ └── VariableKeyOrId.kt │ │ │ │ │ ├── pending_executions │ │ │ │ │ │ └── ExecutionId.kt │ │ │ │ │ ├── request_headers │ │ │ │ │ │ └── RequestHeaderId.kt │ │ │ │ │ ├── certificate_pins │ │ │ │ │ │ └── CertificatePinId.kt │ │ │ │ │ ├── request_parameters │ │ │ │ │ │ └── RequestParameterId.kt │ │ │ │ │ └── working_directories │ │ │ │ │ │ └── WorkingDirectoryId.kt │ │ │ │ ├── enums │ │ │ │ │ ├── SelectionMode.kt │ │ │ │ │ ├── IpVersion.kt │ │ │ │ │ ├── PendingExecutionType.kt │ │ │ │ │ ├── ConfirmationType.kt │ │ │ │ │ ├── ParameterType.kt │ │ │ │ │ ├── ResponseFailureOutput.kt │ │ │ │ │ ├── ResponseSuccessOutput.kt │ │ │ │ │ ├── ResponseContentType.kt │ │ │ │ │ ├── ResponseDisplayAction.kt │ │ │ │ │ ├── RequestBodyType.kt │ │ │ │ │ ├── ShortcutClickBehavior.kt │ │ │ │ │ ├── ProxyType.kt │ │ │ │ │ ├── ResponseUiType.kt │ │ │ │ │ ├── FileUploadType.kt │ │ │ │ │ ├── HttpMethod.kt │ │ │ │ │ ├── CategoryLayoutType.kt │ │ │ │ │ └── ShortcutExecutionType.kt │ │ │ │ ├── dtos │ │ │ │ │ ├── LauncherShortcut.kt │ │ │ │ │ ├── ShortcutPlaceholder.kt │ │ │ │ │ └── GlobalVariablePlaceholder.kt │ │ │ │ └── models │ │ │ │ │ ├── PendingExecutionWithVariablesModel.kt │ │ │ │ │ ├── AppConfig.kt │ │ │ │ │ └── AppLock.kt │ │ │ ├── import_export │ │ │ │ ├── InvalidFileException.kt │ │ │ │ ├── ImportMode.kt │ │ │ │ ├── ImportPasswordException.kt │ │ │ │ ├── ImportVersionMismatchException.kt │ │ │ │ ├── ImportException.kt │ │ │ │ ├── migration │ │ │ │ │ └── ImportMigration.kt │ │ │ │ └── ImportExport.kt │ │ │ ├── exceptions │ │ │ │ ├── NoActivityAvailableException.kt │ │ │ │ ├── DialogCancellationException.kt │ │ │ │ ├── UserAbortException.kt │ │ │ │ ├── TreatAsFailureException.kt │ │ │ │ ├── ActionException.kt │ │ │ │ ├── ClientCertException.kt │ │ │ │ ├── InvalidProxyException.kt │ │ │ │ ├── InvalidHeaderException.kt │ │ │ │ ├── DigestAuthException.kt │ │ │ │ ├── MissingLocationPermissionException.kt │ │ │ │ ├── InvalidBearerAuthException.kt │ │ │ │ ├── FailedToAccessFileException.kt │ │ │ │ ├── BrowserNotFoundException.kt │ │ │ │ ├── InvalidContentTypeException.kt │ │ │ │ ├── InvalidUrlException.kt │ │ │ │ ├── ResponseTooLargeException.kt │ │ │ │ └── UserException.kt │ │ │ ├── http │ │ │ │ ├── ErrorResponse.kt │ │ │ │ ├── CertificatePin.kt │ │ │ │ ├── Extensions.kt │ │ │ │ └── ProxyParams.kt │ │ │ ├── activities │ │ │ │ ├── icons │ │ │ │ │ ├── models │ │ │ │ │ │ └── IconShape.kt │ │ │ │ │ ├── IconPickerListItem.kt │ │ │ │ │ ├── IconPickerViewState.kt │ │ │ │ │ ├── IconPickerEvent.kt │ │ │ │ │ └── IconPickerDialogState.kt │ │ │ │ ├── variables │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── types │ │ │ │ │ │ │ ├── VariableTypeViewState.kt │ │ │ │ │ │ │ ├── ConstantTypeViewState.kt │ │ │ │ │ │ │ ├── ColorTypeViewState.kt │ │ │ │ │ │ │ ├── IncrementTypeViewState.kt │ │ │ │ │ │ │ ├── TimestampTypeViewState.kt │ │ │ │ │ │ │ ├── DateTypeViewState.kt │ │ │ │ │ │ │ ├── TimeTypeViewState.kt │ │ │ │ │ │ │ ├── TextTypeViewState.kt │ │ │ │ │ │ │ ├── ToggleTypeViewState.kt │ │ │ │ │ │ │ └── SelectTypeViewState.kt │ │ │ │ │ │ ├── GlobalVariableEditorEvent.kt │ │ │ │ │ │ ├── GlobalVariableEditorDialogState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── ShareSupport.kt │ │ │ │ │ ├── VariablesViewState.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── GlobalVariableListItem.kt │ │ │ │ ├── documentation │ │ │ │ │ ├── models │ │ │ │ │ │ └── SearchDirection.kt │ │ │ │ │ ├── DocumentationViewState.kt │ │ │ │ │ └── DocumentationEvent.kt │ │ │ │ ├── categories │ │ │ │ │ ├── editor │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── CategoryBackground.kt │ │ │ │ │ │ └── CategoryEditorDialogState.kt │ │ │ │ │ ├── sections │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── CategorySectionListItem.kt │ │ │ │ │ │ ├── CategorySectionsViewState.kt │ │ │ │ │ │ └── CategorySectionsDialogState.kt │ │ │ │ │ └── CategoriesViewState.kt │ │ │ │ ├── execute │ │ │ │ │ ├── DialogHandle.kt │ │ │ │ │ ├── StartServiceEvent.kt │ │ │ │ │ ├── ExecuteViewState.kt │ │ │ │ │ ├── ExternalResult.kt │ │ │ │ │ ├── ExternalRequest.kt │ │ │ │ │ └── ExecutionFactory.kt │ │ │ │ ├── editor │ │ │ │ │ ├── advancedsettings │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── HostVerificationType.kt │ │ │ │ │ │ └── AdvancedSettingsDialogState.kt │ │ │ │ │ ├── scripting │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── CodeFieldType.kt │ │ │ │ │ │ ├── ScriptingEvent.kt │ │ │ │ │ │ └── codesnippets │ │ │ │ │ │ │ ├── CodeSnippetPickerEvent.kt │ │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ ├── SectionItem.kt │ │ │ │ │ │ │ └── CodeSnippetItem.kt │ │ │ │ │ │ │ └── CodeSnippetPickerViewState.kt │ │ │ │ │ ├── ShortcutEditorEvent.kt │ │ │ │ │ ├── basicsettings │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── InstalledBrowser.kt │ │ │ │ │ ├── mqttmessages │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── MqttMessagesListItem.kt │ │ │ │ │ │ ├── MqttMessagesViewState.kt │ │ │ │ │ │ └── MqttMessagesDialogState.kt │ │ │ │ │ ├── executionsettings │ │ │ │ │ │ └── ExecutionSettingsEvent.kt │ │ │ │ │ ├── headers │ │ │ │ │ │ ├── models │ │ │ │ │ │ │ └── HeaderListItem.kt │ │ │ │ │ │ ├── RequestHeadersViewState.kt │ │ │ │ │ │ └── RequestHeadersDialogState.kt │ │ │ │ │ ├── response │ │ │ │ │ │ └── ResponseDisplayDialogState.kt │ │ │ │ │ ├── shortcuts │ │ │ │ │ │ ├── TriggerShortcutsViewState.kt │ │ │ │ │ │ └── models │ │ │ │ │ │ │ └── ShortcutListItem.kt │ │ │ │ │ └── authentication │ │ │ │ │ │ └── AuthenticationDialogState.kt │ │ │ │ ├── misc │ │ │ │ │ ├── share │ │ │ │ │ │ ├── ShareViewState.kt │ │ │ │ │ │ └── ShareDialogState.kt │ │ │ │ │ ├── deeplink │ │ │ │ │ │ ├── DeepLinkViewState.kt │ │ │ │ │ │ ├── DeepLinkDialogState.kt │ │ │ │ │ │ └── DeepLinkActivity.kt │ │ │ │ │ ├── second_launcher │ │ │ │ │ │ ├── SecondLauncherViewState.kt │ │ │ │ │ │ ├── SecondLauncherDialogState.kt │ │ │ │ │ │ └── SecondLauncherActivity.kt │ │ │ │ │ └── quick_settings_tile │ │ │ │ │ │ ├── QuickSettingsTileViewState.kt │ │ │ │ │ │ └── QuickSettingsTileDialogState.kt │ │ │ │ ├── importexport │ │ │ │ │ ├── ExportEvent.kt │ │ │ │ │ ├── ImportExportEvent.kt │ │ │ │ │ ├── ImportExportViewState.kt │ │ │ │ │ └── ExportDialogState.kt │ │ │ │ ├── globalcode │ │ │ │ │ ├── GlobalScriptingDialogState.kt │ │ │ │ │ ├── GlobalScriptingEvent.kt │ │ │ │ │ └── GlobalScriptingViewState.kt │ │ │ │ ├── response │ │ │ │ │ ├── models │ │ │ │ │ │ ├── TableData.kt │ │ │ │ │ │ └── DetailInfo.kt │ │ │ │ │ └── DisplayResponseEvent.kt │ │ │ │ ├── troubleshooting │ │ │ │ │ └── TroubleShootingDialogState.kt │ │ │ │ ├── contact │ │ │ │ │ └── MetaData.kt │ │ │ │ ├── curl_import │ │ │ │ │ └── CurlImportViewState.kt │ │ │ │ ├── main │ │ │ │ │ ├── MainEvent.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── RecoveryInfo.kt │ │ │ │ ├── workingdirectories │ │ │ │ │ ├── WorkingDirectoriesEvent.kt │ │ │ │ │ ├── WorkingDirectoriesViewState.kt │ │ │ │ │ └── models │ │ │ │ │ │ └── WorkingDirectoryListItem.kt │ │ │ │ ├── certpinning │ │ │ │ │ ├── CertPinningViewState.kt │ │ │ │ │ ├── models │ │ │ │ │ │ └── Pin.kt │ │ │ │ │ └── CertPinningDialogState.kt │ │ │ │ ├── about │ │ │ │ │ └── AboutViewState.kt │ │ │ │ ├── variablewidget │ │ │ │ │ └── models │ │ │ │ │ │ └── SelectableVariable.kt │ │ │ │ ├── history │ │ │ │ │ ├── HistoryViewState.kt │ │ │ │ │ └── HistoryListItem.kt │ │ │ │ ├── remote_edit │ │ │ │ │ ├── RemoteEditViewState.kt │ │ │ │ │ └── RemoteEditDialogState.kt │ │ │ │ └── settings │ │ │ │ │ └── SettingsDialogState.kt │ │ │ ├── scripting │ │ │ │ ├── ActionAlias.kt │ │ │ │ ├── ResultHandler.kt │ │ │ │ ├── actions │ │ │ │ │ ├── types │ │ │ │ │ │ ├── UUIDAction.kt │ │ │ │ │ │ ├── Action.kt │ │ │ │ │ │ ├── ActionType.kt │ │ │ │ │ │ ├── ToStringAction.kt │ │ │ │ │ │ ├── GetDeviceIdAction.kt │ │ │ │ │ │ ├── WifiIPAction.kt │ │ │ │ │ │ ├── SetResultAction.kt │ │ │ │ │ │ ├── HtmlEncodeAction.kt │ │ │ │ │ │ ├── ToHexStringAction.kt │ │ │ │ │ │ ├── WaitAction.kt │ │ │ │ │ │ ├── ScanBarcodeAction.kt │ │ │ │ │ │ ├── Base64EncodeAction.kt │ │ │ │ │ │ └── HtmlDecodeAction.kt │ │ │ │ │ └── ActionRunnable.kt │ │ │ │ └── CleanupHandler.kt │ │ │ ├── Constants.kt │ │ │ ├── extensions │ │ │ │ ├── WorkerExtensions.kt │ │ │ │ └── StringExtensions.kt │ │ │ ├── notifications │ │ │ │ └── NotificationChannelIds.kt │ │ │ ├── utils │ │ │ │ ├── PlayServicesUtil.kt │ │ │ │ ├── NoCloseInputStream.kt │ │ │ │ ├── CameraUtil.kt │ │ │ │ ├── ClientCertUtil.kt │ │ │ │ ├── FileTypeUtil.kt │ │ │ │ └── ColorUtil.kt │ │ │ ├── components │ │ │ │ ├── models │ │ │ │ │ └── MenuEntry.kt │ │ │ │ ├── HelpText.kt │ │ │ │ └── VerticalSpacer.kt │ │ │ ├── variables │ │ │ │ └── types │ │ │ │ │ ├── VariableType.kt │ │ │ │ │ ├── ConstantType.kt │ │ │ │ │ └── UUIDType.kt │ │ │ └── plugin │ │ │ │ ├── Output.kt │ │ │ │ └── TaskerTaskPickerContract.kt │ │ │ └── framework │ │ │ ├── viewmodel │ │ │ ├── ViewModelCancellationException.kt │ │ │ └── ViewModelScope.kt │ │ │ ├── extensions │ │ │ ├── OkHttpExtensions.kt │ │ │ ├── UriExtensions.kt │ │ │ └── ViewModelExtensions.kt │ │ │ ├── navigation │ │ │ └── NavigationRequest.kt │ │ │ └── utils │ │ │ └── localization │ │ │ └── StaticLocalizable.kt │ │ ├── test │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── android │ │ │ └── testutils │ │ │ └── ResourceLoader.kt │ │ └── withoutGoogleServices │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── android │ │ └── http_shortcuts │ │ └── utils │ │ └── PlayServicesUtilImpl.kt ├── stability_config.conf ├── .gitignore ├── favicon_grabber │ ├── src │ │ └── main │ │ │ └── kotlin │ │ │ └── ch │ │ │ └── rmy │ │ │ └── favicongrabber │ │ │ ├── models │ │ │ ├── ManifestRoot.kt │ │ │ ├── IconResult.kt │ │ │ ├── LinkTag.kt │ │ │ └── ManifestIcon.kt │ │ │ └── grabbers │ │ │ └── Grabber.kt │ └── build.gradle.kts ├── gradle.properties ├── curl_command │ ├── build.gradle.kts │ └── src │ │ └── test │ │ └── kotlin │ │ └── ch │ │ └── rmy │ │ └── curlcommand │ │ └── CommandParserTest.kt ├── documentation_template.html ├── settings.gradle.kts └── .editorconfig ├── metadata ├── de-DE │ ├── title.txt │ └── short_description.txt ├── en-US │ ├── title.txt │ ├── short_description.txt │ └── images │ │ ├── icon.png │ │ ├── featureGraphic.png │ │ └── phoneScreenshots │ │ ├── 1.png │ │ ├── 2.png │ │ ├── 3.png │ │ ├── 4.png │ │ ├── 5.png │ │ ├── 6.png │ │ ├── 7.png │ │ └── 8.png ├── he-IL │ ├── title.txt │ └── short_description.txt ├── ja-JP │ ├── title.txt │ └── short_description.txt ├── ko-KR │ ├── title.txt │ └── short_description.txt ├── ru-RU │ ├── title.txt │ └── short_description.txt └── zh-TW │ ├── title.txt │ └── short_description.txt ├── .github └── FUNDING.yml ├── .gitignore └── assets ├── logo.png ├── screenshots ├── 01.png ├── 02.png ├── 03.png ├── 04.png ├── 05.png ├── 06.png ├── 07.png ├── 08.png ├── 09.png ├── 10.png ├── 11.png ├── 12.png └── 13.png └── documentation ├── scripting ├── 01.png └── 02.png ├── shortcuts └── 01.png └── updatestar_rating.png /HTTPShortcuts/framework/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /HTTPShortcuts/framework/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/consumer-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /metadata/de-DE/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/en-US/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/he-IL/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ja-JP/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ko-KR/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ru-RU/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/zh-TW/title.txt: -------------------------------------------------------------------------------- 1 | HTTP Request Shortcuts -------------------------------------------------------------------------------- /metadata/ko-KR/short_description.txt: -------------------------------------------------------------------------------- 1 | 홈 화면 아이콘으로 HTTP 요청 보내기 -------------------------------------------------------------------------------- /metadata/ja-JP/short_description.txt: -------------------------------------------------------------------------------- 1 | ホーム画面でショートカットからHTTPリクエストを送信 -------------------------------------------------------------------------------- /metadata/zh-TW/short_description.txt: -------------------------------------------------------------------------------- 1 | 在您的主畫面放置捷徑,以便提交 HTTP 請求 -------------------------------------------------------------------------------- /metadata/he-IL/short_description.txt: -------------------------------------------------------------------------------- 1 | שלח בקשות HTTP מקיצורי דרך במסך הבית שלך -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: waboodoo 2 | custom: "https://www.paypal.me/waboodoo" 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | venv 3 | processed-docs/ 4 | crowdin.yml 5 | store_listings 6 | -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/logo.png -------------------------------------------------------------------------------- /metadata/en-US/short_description.txt: -------------------------------------------------------------------------------- 1 | Submit HTTP Requests from Shortcuts on your Home Screen -------------------------------------------------------------------------------- /metadata/ru-RU/short_description.txt: -------------------------------------------------------------------------------- 1 | Отправляйте HTTP-запросы из ярлыков на главном экране. -------------------------------------------------------------------------------- /metadata/de-DE/short_description.txt: -------------------------------------------------------------------------------- 1 | Verschicke HTTP-Requests via Shortcuts von deinem Home Screen aus. -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /assets/screenshots/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/01.png -------------------------------------------------------------------------------- /assets/screenshots/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/02.png -------------------------------------------------------------------------------- /assets/screenshots/03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/03.png -------------------------------------------------------------------------------- /assets/screenshots/04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/04.png -------------------------------------------------------------------------------- /assets/screenshots/05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/05.png -------------------------------------------------------------------------------- /assets/screenshots/06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/06.png -------------------------------------------------------------------------------- /assets/screenshots/07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/07.png -------------------------------------------------------------------------------- /assets/screenshots/08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/08.png -------------------------------------------------------------------------------- /assets/screenshots/09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/09.png -------------------------------------------------------------------------------- /assets/screenshots/10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/10.png -------------------------------------------------------------------------------- /assets/screenshots/11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/11.png -------------------------------------------------------------------------------- /assets/screenshots/12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/12.png -------------------------------------------------------------------------------- /assets/screenshots/13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/screenshots/13.png -------------------------------------------------------------------------------- /metadata/en-US/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/icon.png -------------------------------------------------------------------------------- /assets/documentation/scripting/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/documentation/scripting/01.png -------------------------------------------------------------------------------- /assets/documentation/scripting/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/documentation/scripting/02.png -------------------------------------------------------------------------------- /assets/documentation/shortcuts/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/documentation/shortcuts/01.png -------------------------------------------------------------------------------- /HTTPShortcuts/keystores/development.jks: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/keystores/development.jks -------------------------------------------------------------------------------- /assets/documentation/updatestar_rating.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/assets/documentation/updatestar_rating.png -------------------------------------------------------------------------------- /metadata/en-US/images/featureGraphic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/featureGraphic.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/1.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/2.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/3.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/4.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/5.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/6.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/7.png -------------------------------------------------------------------------------- /metadata/en-US/images/phoneScreenshots/8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/metadata/en-US/images/phoneScreenshots/8.png -------------------------------------------------------------------------------- /HTTPShortcuts/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/icons_keywords: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/assets/icons_keywords -------------------------------------------------------------------------------- /HTTPShortcuts/stability_config.conf: -------------------------------------------------------------------------------- 1 | android.net.Uri 2 | java.nio.charset.Charset 3 | java.time.LocalDateTime 4 | java.time.Instant 5 | kotlin.collections.* -------------------------------------------------------------------------------- /HTTPShortcuts/.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | local.properties 3 | .idea/ 4 | .kotlin/ 5 | build/ 6 | *.iml 7 | *.aab 8 | app/release 9 | app/releaseFull 10 | /captures/ -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cd.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/scripting/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/assets/docs/assets/scripting/01.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/scripting/02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/assets/docs/assets/scripting/02.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/assets/docs/assets/shortcuts/01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/assets/docs/assets/shortcuts/01.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_armor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_armor.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bell.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bell.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_box.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_box.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cake.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cake.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_car.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_car.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cat.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_check.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_check.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clean.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clean.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_clock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_close.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_close.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cloud.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cloud.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_color.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_color.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dice.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dice.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dog.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dog.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dvd.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_dvd.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_film.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_film.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fire.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fire.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fish.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fish.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gift.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gift.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_globe.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_globe.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_graph.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_graph.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hand.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hand.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hat.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hat.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_heart.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_heart.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_help.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_help.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_house.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_house.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_ipad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_ipad.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_iris.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_iris.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lan.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laugh.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laugh.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_link.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_link.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linux.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linux.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_lock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mail.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mail.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_minus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_minus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_moon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_moon.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mouse.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mouse.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_movie.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_movie.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_new.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_new.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_next.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_next.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_phone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_phone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plug.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plug.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_plus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_robot.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_robot.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sad.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sad.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smile.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smile.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sofa.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sofa.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_solar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_solar.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sword.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sword.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tag.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tag.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tent.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tent.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tools.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tools.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_torch.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_torch.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tube.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tube.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_usb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_usb.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_view.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_view.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/ic_launcher.png -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/raw/keep.xml: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_balloon.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_balloon.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bat_man.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bat_man.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_button.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_button.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_camera.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_camera.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cooker.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cooker.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cursor.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cursor.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cycling.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cycling.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_danger.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_danger.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_delete.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_delete.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_driller.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_driller.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_feather.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_feather.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_floppy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_floppy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_flower.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_flower.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_guitar.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_guitar.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_houses.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_houses.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_knight.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_knight.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laptop.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_laptop.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_logout.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_logout.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mac_pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mac_pc.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_magnet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_magnet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_office.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_office.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_penguin.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_penguin.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_planet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_planet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_1.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_power_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_puzzles.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_puzzles.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_reload.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_reload.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_search.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_search.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape12.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape12.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape6.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape6.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sleepy.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sleepy.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speech.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speech.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sports.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_sports.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_up.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_up.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_target.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_target.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_thunder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_thunder.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toolbox.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_toolbox.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_turtle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_turtle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_weather.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_weather.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_webcam.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_webcam.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_attachment.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_attachment.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bluetooth.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_bluetooth.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_book_open.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_book_open.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_butterfly.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_butterfly.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_chef_cap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_chef_cap.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_edit.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_edit.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_document.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_document.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_foot_print.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_foot_print.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_footprint.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_footprint.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gramaphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_gramaphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_headphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_headphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hour_glass.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_hour_glass.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_internet.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_internet.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_joystick.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_joystick.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_key_access.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_key_access.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_keyboard.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_keyboard.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_latitude.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_latitude.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_left_arrow.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_left_arrow.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light_bulb.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_light_bulb.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_back.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_back.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_end.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_end.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_play.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_play.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_messages.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_messages.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microphone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microphone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_palm_tree.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_palm_tree.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_password.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_password.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_photograph.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_photograph.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_pine_tree.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_pine_tree.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_printer_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_rectangle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_rectangle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_satellite.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_satellite.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_settings.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_settings.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_cube.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_cube.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_star.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_star.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_spaceship.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_spaceship.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_squirrel.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_squirrel.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_down.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_down.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_left.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_left.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_right.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_swap_right.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_fan.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_fan.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_lamp.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_table_lamp.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_telephone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_telephone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_television.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_television.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_umbrella.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_umbrella.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_university.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_university.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_male.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_male.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_voicemail.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_voicemail.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_low.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_low.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_water_tap.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_water_tap.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_windows_pc.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_windows_pc.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_yin_yang.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_yin_yang.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/xml/provider_paths.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_alarm_clock.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_alarm_clock.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_announcement.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_announcement.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beamed_notes.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beamed_notes.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beep_signal.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beep_signal.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_business_man.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_business_man.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cctv_camera.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cctv_camera.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_mac.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_mac.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_bell.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_bell.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_finger_print.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_finger_print.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fuel_station.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_fuel_station.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linear_gauge.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_linear_gauge.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_loud_speaker.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_loud_speaker.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_map_location.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_map_location.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_pause.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_pause.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mobile_phone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_mobile_phone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_outlet_plug.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_outlet_plug.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_quarter_note.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_quarter_note.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_refrigerator.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_refrigerator.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_forward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_forward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_peace.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_peace.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_spade.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_spade.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_square.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_square.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smoking_zone.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_smoking_zone.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_synchronize.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_synchronize.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_female.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_user_female.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_high.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_high.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_mute.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_volume_mute.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/sections/SectionId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.sections 2 | 3 | typealias SectionId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beverage_coffee.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_beverage_coffee.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_calendar_date.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_calendar_date.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_refresh.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_command_refresh.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_folder_sharing.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_folder_sharing.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_identity_card.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_identity_card.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_network_sharing.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_network_sharing.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture_frame.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_picture_frame.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_recorded_media.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_recorded_media.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_remote_control.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_remote_control.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_backward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_road_backward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_lightning.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_lightning.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_triangle.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_shape_triangle.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_snack_doughnut.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_snack_doughnut.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speaker_volume.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_speaker_volume.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tape_recorder.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_tape_recorder.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_waiting_popup.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_waiting_popup.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_warning_message.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_warning_message.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_washing_machine.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_washing_machine.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/categories/CategoryId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.categories 2 | 3 | typealias CategoryId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/shortcuts/ShortcutId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.shortcuts 2 | 3 | typealias ShortcutId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/VariableKey.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | typealias VariableKey = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/InvalidFileException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class InvalidFileException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_battery_charging.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_battery_charging.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_information.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_data_information.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_calculator.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_device_calculator.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_contrast.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_contrast.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microsoft_windows.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_microsoft_windows.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/viewmodel/ViewModelCancellationException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.viewmodel 2 | 3 | class ViewModelCancellationException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cutlery_fork_knife.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_cutlery_fork_knife.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_brightness.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_display_brightness.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_1.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_1.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_2.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_energy_saving_bulb_2.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_barometer.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_barometer.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_telescope.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_telescope.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_fast_forward.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_media_fast_forward.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_transport_school_bus.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_transport_school_bus.webp -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/JsFunction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | interface JsFunction { 4 | operator fun invoke(args: JsFunctionArgs): Any? 5 | } 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/shortcuts/ShortcutNameOrId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.shortcuts 2 | 3 | typealias ShortcutNameOrId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/GlobalVariableId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | typealias GlobalVariableId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/NoActivityAvailableException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | class NoActivityAvailableException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/ErrorResponse.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | class ErrorResponse(val shortcutResponse: ShortcutResponse) : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportMode.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | enum class ImportMode { 4 | MERGE, 5 | REPLACE, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/ManifestRoot.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class ManifestRoot( 4 | val icons: List? = null, 5 | ) 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/pending_executions/ExecutionId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.pending_executions 2 | 3 | typealias ExecutionId = Int 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportPasswordException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class ImportPasswordException : ImportException() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/IconResult.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | import java.io.File 4 | 5 | data class IconResult( 6 | val file: File, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/request_headers/RequestHeaderId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.request_headers 2 | 3 | typealias RequestHeaderId = Long 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportVersionMismatchException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | class ImportVersionMismatchException : Exception() 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/certificate_pins/CertificatePinId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.certificate_pins 2 | 3 | typealias CertificatePinId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_round_bottom_flask.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Waboodoo/HTTP-Shortcuts/HEAD/HTTPShortcuts/app/src/main/res/drawable-nodpi/black_instrument_round_bottom_flask.webp -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/models/IconShape.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons.models 2 | 3 | enum class IconShape { 4 | SQUARE, 5 | CIRCLE, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/request_parameters/RequestParameterId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.request_parameters 2 | 3 | typealias RequestParameterId = Long 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/LinkTag.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class LinkTag( 4 | val rel: String, 5 | val href: String, 6 | val size: Int?, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/working_directories/WorkingDirectoryId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.working_directories 2 | 3 | typealias WorkingDirectoryId = String 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/OkHttpExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import okhttp3.Response 4 | 5 | fun Response.isSuccessfulOrRedirect() = 6 | code in 200..399 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/VariableTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | sealed interface VariableTypeViewState 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | open class ImportException(override val message: String? = null) : Exception(message) 4 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/black_circle.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/models/SearchDirection.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation.models 2 | 3 | enum class SearchDirection { 4 | PREVIOUS, 5 | NEXT, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/image_placeholder.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.jetbrains.kotlin.jvm") 3 | } 4 | 5 | dependencies { 6 | implementation(libs.okhttp3) 7 | implementation(libs.gson) 8 | implementation(libs.kotlinx.coroutines) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx4000M 2 | kotlin.daemon.jvmargs=-Xmx4000M 3 | android.useAndroidX=true 4 | android.enableJetifier=false 5 | android.enableR8.fullMode=false 6 | android.nonTransitiveRClass=true 7 | android.nonFinalResIds=true 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/black_shape_square2.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/editor/models/CategoryBackground.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.editor.models 2 | 3 | enum class CategoryBackground { 4 | DEFAULT, 5 | COLOR, 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/curl_command/build.gradle.kts: -------------------------------------------------------------------------------- 1 | plugins { 2 | id("org.jetbrains.kotlin.jvm") 3 | } 4 | 5 | dependencies { 6 | testImplementation(libs.kotlin.test.junit5) 7 | } 8 | 9 | tasks { 10 | test { 11 | useJUnitPlatform() 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/documentation_template.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/extensions/ServiceExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Service 4 | import android.content.Context 5 | 6 | val Service.context: Context 7 | get() = this 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/DialogHandle.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | interface DialogHandle { 4 | suspend fun showDialog(dialogState: ExecuteDialogState): T 5 | } 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/StartServiceEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | object StartServiceEvent : ViewModelEvent() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/ui/IntentBuilder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.ui 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | 6 | interface IntentBuilder { 7 | fun build(context: Context): Intent 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/DialogCancellationException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class DialogCancellationException : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/UserAbortException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class UserAbortException(val abortAll: Boolean) : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/UriExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.net.Uri 4 | 5 | val Uri.isWebUrl 6 | get() = scheme.run { equals("http", ignoreCase = true) || equals("https", ignoreCase = true) } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/ActionAlias.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting 2 | 3 | class ActionAlias( 4 | val functionName: String, 5 | val functionNameAliases: Set = emptySet(), 6 | val parameters: Int, 7 | ) 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/migration/ImportMigration.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export.migration 2 | 3 | import com.google.gson.JsonObject 4 | 5 | interface ImportMigration { 6 | fun migrateImport(base: JsonObject) 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/variable_widget_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/test/kotlin/ch/rmy/android/testutils/ResourceLoader.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.testutils 2 | 3 | import java.io.InputStream 4 | 5 | object ResourceLoader { 6 | fun getStream(file: String): InputStream = 7 | javaClass.classLoader!!.getResourceAsStream(file) 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/Constants.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts 2 | 3 | object Constants { 4 | const val SHORTCUT_NAME_MAX_LENGTH = 50 5 | const val SHORTCUT_DESCRIPTION_MAX_LENGTH = 200 6 | const val CATEGORY_NAME_MAX_LENGTH = 50 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/TreatAsFailureException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import kotlinx.coroutines.CancellationException 4 | 5 | class TreatAsFailureException(override val message: String?) : CancellationException() 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/extensions/WorkerExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.extensions 2 | 3 | import android.content.Context 4 | import androidx.work.ListenableWorker 5 | 6 | val ListenableWorker.context: Context 7 | get() = applicationContext 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/import_export/ImportExport.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.import_export 2 | 3 | object ImportExport { 4 | const val JSON_FILE = "shortcuts.json" 5 | const val VERSION = 91L 6 | const val COMPATIBILITY_VERSION = 90L 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/CertificatePin.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | data class CertificatePin( 4 | val pattern: String, 5 | val hash: ByteArray, 6 | ) { 7 | val isSha256: Boolean 8 | get() = hash.size == 32 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/advancedsettings/models/HostVerificationType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.advancedsettings.models 2 | 3 | enum class HostVerificationType { 4 | DEFAULT, 5 | SELF_SIGNED, 6 | TRUST_ALL, 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/share/ShareViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.share 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ShareViewState( 7 | val dialogState: ShareDialogState? = null, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/notifications/NotificationChannelIds.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.notifications 2 | 3 | object NotificationChannelIds { 4 | const val SHORTCUT_EXECUTION = "shortcut_execution" 5 | const val SHORTCUT_RESULTS = "shortcut_results" 6 | } 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/ScriptingEngineFactory.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | import ch.rmy.android.scripting.quickjs.QuickJsScriptingEngine 4 | 5 | object ScriptingEngineFactory { 6 | fun create(): ScriptingEngine = 7 | QuickJsScriptingEngine() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/navigation/NavigationRequest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.navigation 2 | 3 | interface NavigationRequest { 4 | val route: String 5 | } 6 | 7 | data class NavigationRequestImpl( 8 | override val route: String, 9 | ) : NavigationRequest 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/deeplink/DeepLinkViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.deeplink 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class DeepLinkViewState( 7 | val dialogState: DeepLinkDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/PlayServicesUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.location.Location 4 | 5 | interface PlayServicesUtil { 6 | fun isPlayServicesAvailable(): Boolean 7 | 8 | suspend fun getLocation(): Location? 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/Extensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | import okhttp3.Request 4 | 5 | fun buildRequest(method: String, url: String, builderAction: RequestBuilder.() -> Unit): Request = 6 | RequestBuilder(method, url).apply(builderAction).build() 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/grabbers/Grabber.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.grabbers 2 | 3 | import ch.rmy.favicongrabber.models.IconResult 4 | import okhttp3.HttpUrl 5 | 6 | interface Grabber { 7 | suspend fun grabIconsFrom(pageUrl: HttpUrl, preferredSize: Int): List 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/ScriptingException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | class ScriptingException 4 | internal constructor( 5 | override val cause: Exception?, 6 | override val message: String? = null, 7 | val lineNumber: Int? = null, 8 | ) : Exception(message, cause) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/extensions/StringExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.extensions 2 | 3 | private val CERTIFICATE_FINGERPRINT_REGEX = "([0-9A-Fa-f]{40}|[0-9A-Fa-f]{64})".toRegex() 4 | 5 | fun String.isValidCertificateFingerprint() = 6 | matches(CERTIFICATE_FINGERPRINT_REGEX) 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/extensions/ActivityExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Activity 4 | 5 | fun Activity.finishWithoutAnimation() { 6 | overridePendingTransition(0, 0) 7 | finish() 8 | overridePendingTransition(0, 0) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/DocumentationViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation 2 | 3 | import android.net.Uri 4 | import androidx.compose.runtime.Stable 5 | 6 | @Stable 7 | data class DocumentationViewState( 8 | val url: Uri, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ExportEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ExportEvent : ViewModelEvent() { 6 | object OpenFilePickerForExport : ExportEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/utils/localization/StaticLocalizable.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.utils.localization 2 | 3 | import android.content.Context 4 | 5 | data class StaticLocalizable(val string: String) : Localizable { 6 | override fun localize(context: Context): CharSequence = 7 | string 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/models/CodeFieldType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class CodeFieldType { 7 | PREPARE, 8 | SUCCESS, 9 | FAILURE, 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ConstantTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ConstantTypeViewState( 7 | val value: String, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/ShortcutEditorEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ShortcutEditorEvent : ViewModelEvent() { 6 | object FocusNameInputField : ShortcutEditorEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class GlobalScriptingDialogState { 7 | data object DiscardWarning : GlobalScriptingDialogState() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/second_launcher/SecondLauncherViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.second_launcher 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class SecondLauncherViewState( 7 | val dialogState: SecondLauncherDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/models/TableData.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TableData( 7 | val columns: List, 8 | val rows: List>, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ColorTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ColorTypeViewState( 7 | val rememberValue: Boolean, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/IncrementTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class IncrementTypeViewState( 7 | val value: String, 8 | ) : VariableTypeViewState 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/NoCloseInputStream.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import java.io.FilterInputStream 4 | import java.io.InputStream 5 | 6 | class NoCloseInputStream(inputStream: InputStream) : FilterInputStream(inputStream) { 7 | override fun close() { 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionSha256Sum=bd71102213493060956ec229d946beee57158dbd89d0e62b91bca0fa2c5f3531 4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip 5 | zipStoreBase=GRADLE_USER_HOME 6 | zipStorePath=wrapper/dists 7 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ImportExportEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ImportExportEvent : ViewModelEvent() { 6 | object OpenFilePickerForImport : ImportExportEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/troubleshooting/TroubleShootingDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.troubleshooting 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class TroubleShootingDialogState { 7 | data object ClearCookies : TroubleShootingDialogState() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/extensions/ViewModelExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import android.app.Application 4 | import android.content.Context 5 | import androidx.lifecycle.AndroidViewModel 6 | 7 | val AndroidViewModel.context: Context 8 | get() = getApplication().applicationContext 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/quick_settings_tile/QuickSettingsTileViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.quick_settings_tile 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class QuickSettingsTileViewState( 7 | val dialogState: QuickSettingsTileDialogState, 8 | ) 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/basicsettings/models/InstalledBrowser.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.basicsettings.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class InstalledBrowser( 7 | val packageName: String, 8 | val appName: String? = null, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/http/ProxyParams.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.http 2 | 3 | import ch.rmy.android.http_shortcuts.data.enums.ProxyType 4 | 5 | data class ProxyParams( 6 | val type: ProxyType, 7 | val host: String, 8 | val port: Int, 9 | val username: String, 10 | val password: String, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/ResultHandler.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting 2 | 3 | class ResultHandler { 4 | 5 | private var result: String? = null 6 | 7 | fun getResult(): String? = 8 | result 9 | 10 | fun setResult(result: String) { 11 | this.result = result 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/contact/MetaData.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.contact 2 | 3 | data class MetaData( 4 | val androidSdkVersion: Int, 5 | val appVersionCode: Long, 6 | val device: String, 7 | val language: String, 8 | val deviceId: String, 9 | val buildType: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ImportExportViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ImportExportViewState( 7 | val dialogState: ImportExportDialogState? = null, 8 | val exportEnabled: Boolean, 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/curl_import/CurlImportViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.curl_import 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class CurlImportViewState( 7 | val submitButtonEnabled: Boolean = false, 8 | val unsupportedOptions: List = emptyList(), 9 | ) 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/models/MqttMessagesListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class MqttMessagesListItem( 7 | val id: Int, 8 | val topic: String, 9 | val payload: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/SelectionMode.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class SelectionMode { 7 | NORMAL, 8 | HOME_SCREEN_SHORTCUT_PLACEMENT, 9 | SHORTCUT_WIDGET_PLACEMENT, 10 | VARIABLE_WIDGET_PLACEMENT, 11 | PLUGIN, 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/mipmap/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/quickjs/QuickJsObject.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting.quickjs 2 | 3 | import ch.rmy.android.scripting.JsObject 4 | import com.whl.quickjs.wrapper.JSObject 5 | 6 | internal class QuickJsObject( 7 | private val jsObject: JSObject, 8 | ) : JsObject { 9 | fun toJSObject(): JSObject = 10 | jsObject 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/GlobalVariableEditorEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class GlobalVariableEditorEvent : ViewModelEvent() { 6 | object FocusGlobalVariableKeyInput : GlobalVariableEditorEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/documentation/DocumentationEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.documentation 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | 6 | abstract class DocumentationEvent : ViewModelEvent() { 7 | data class OpenInBrowser(val url: Uri) : DocumentationEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class IconPickerListItem( 8 | val icon: ShortcutIcon.CustomIcon, 9 | val isUnused: Boolean, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/executionsettings/ExecutionSettingsEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.executionsettings 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ExecutionSettingsEvent : ViewModelEvent() { 6 | object RequestNotificationPermission : ExecutionSettingsEvent() 7 | } 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/GlobalVariableEditorDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class GlobalVariableEditorDialogState { 7 | @Stable 8 | data object DiscardWarning : GlobalVariableEditorDialogState() 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/models/MenuEntry.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class MenuEntry( 8 | val key: T, 9 | val name: String, 10 | val icon: ShortcutIcon? = null, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TimestampTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TimestampTypeViewState( 7 | val timeFormat: String, 8 | val invalidFormat: Boolean = false, 9 | ) : VariableTypeViewState 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ActionException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | 5 | class ActionException(private val messageProvider: Context.() -> String) : UserException() { 6 | 7 | override fun getLocalizedMessage(context: Context): String = 8 | messageProvider.invoke(context) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/main/MainEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.main 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | import ch.rmy.android.http_shortcuts.data.domains.categories.CategoryId 5 | 6 | abstract class MainEvent : ViewModelEvent() { 7 | data class Restart(val activeCategoryId: CategoryId) : MainEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/LauncherShortcut.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 4 | 5 | data class LauncherShortcut( 6 | val id: String, 7 | val name: String, 8 | val icon: ShortcutIcon, 9 | val isTextShareTarget: Boolean, 10 | val isFileShareTarget: Boolean, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/VariableType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 4 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 5 | 6 | interface VariableType { 7 | suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle): String 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | run $shortcutName 5 | start $shortcutName 6 | execute $shortcutName 7 | launch $shortcutName 8 | trigger $shortcutName 9 | 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/DateTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class DateTypeViewState( 7 | val dateFormat: String, 8 | val rememberValue: Boolean, 9 | val invalidFormat: Boolean = false, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TimeTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TimeTypeViewState( 7 | val timeFormat: String, 8 | val rememberValue: Boolean, 9 | val invalidFormat: Boolean = false, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/ShortcutPlaceholder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | data class ShortcutPlaceholder( 8 | val id: String, 9 | val name: String, 10 | val description: String?, 11 | val icon: ShortcutIcon, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ClientCertException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class ClientCertException : UserException() { 7 | override fun getLocalizedMessage(context: Context): String = 8 | context.getString(R.string.error_failed_to_use_client_cert) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/DisplayResponseEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class DisplayResponseEvent : ViewModelEvent() { 6 | data class PickFileForSaving(val mimeType: String?) : DisplayResponseEvent() 7 | object SuppressAutoFinish : DisplayResponseEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/TextTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class TextTypeViewState( 7 | val rememberValue: Boolean, 8 | val isMultilineCheckboxVisible: Boolean, 9 | val isMultiline: Boolean, 10 | ) : VariableTypeViewState 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/models/CategorySectionListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.sections.SectionId 5 | 6 | @Stable 7 | data class CategorySectionListItem( 8 | val id: SectionId, 9 | val name: String, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/WorkingDirectoriesEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | 6 | abstract class WorkingDirectoriesEvent : ViewModelEvent() { 7 | data class OpenDirectoryPicker(val initialDirectory: Uri? = null) : WorkingDirectoriesEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/favicon_grabber/src/main/kotlin/ch/rmy/favicongrabber/models/ManifestIcon.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.favicongrabber.models 2 | 3 | data class ManifestIcon( 4 | val src: String, 5 | val type: String? = null, 6 | val sizes: String? = null, 7 | val purpose: String? = null, 8 | ) { 9 | val size: Int? 10 | get() = sizes 11 | ?.split('x') 12 | ?.get(0) 13 | ?.toIntOrNull() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/editor/CategoryEditorDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.editor 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class CategoryEditorDialogState { 7 | data class ColorPicker(val initialColor: Int) : CategoryEditorDialogState() 8 | data object DiscardWarning : CategoryEditorDialogState() 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/models/ShareSupport.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.models 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ShareSupport(val text: Boolean = false, val title: Boolean = false) { 7 | TEXT(text = true), 8 | TITLE(title = true), 9 | TITLE_AND_TEXT(text = true, title = true), 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/IpVersion.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class IpVersion(val version: String) { 4 | V4("4"), 5 | V6("6"), 6 | ; 7 | 8 | override fun toString() = 9 | version 10 | 11 | companion object { 12 | fun parse(version: String): IpVersion? = 13 | entries.find { it.version == version } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/CertPinningViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.certpinning.models.Pin 5 | 6 | @Stable 7 | data class CertPinningViewState( 8 | val dialogState: CertPinningDialogState? = null, 9 | val pins: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/ScriptingEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class ScriptingEvent : ViewModelEvent() { 6 | data class InsertCodeSnippet( 7 | val textBeforeCursor: String, 8 | val textAfterCursor: String, 9 | ) : ScriptingEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidProxyException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidProxyException(val error: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_proxy, error) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/headers/models/HeaderListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.headers.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.request_headers.RequestHeaderId 5 | 6 | @Stable 7 | data class HeaderListItem( 8 | val id: RequestHeaderId, 9 | val key: String, 10 | val value: String, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/CodeSnippetPickerEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class CodeSnippetPickerEvent : ViewModelEvent() { 6 | object OpenRingtonePicker : CodeSnippetPickerEvent() 7 | object OpenTaskerTaskPicker : CodeSnippetPickerEvent() 8 | } 9 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 4 | 5 | abstract class GlobalScriptingEvent : ViewModelEvent() { 6 | data class InsertCodeSnippet( 7 | val textBeforeCursor: String, 8 | val textAfterCursor: String, 9 | ) : GlobalScriptingEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidHeaderException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidHeaderException(val header: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_header, header) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/CategoriesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.categories.models.CategoryListItem 5 | 6 | @Stable 7 | data class CategoriesViewState( 8 | val dialogState: CategoriesDialogState? = null, 9 | val categories: List, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class IconPickerViewState( 7 | val dialogState: IconPickerDialogState? = null, 8 | val icons: List, 9 | ) { 10 | val isDeleteButtonEnabled: Boolean 11 | get() = icons.any { it.isUnused } 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/DigestAuthException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class DigestAuthException(private val detail: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_digest_auth_failed, detail) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/MissingLocationPermissionException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class MissingLocationPermissionException : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_missing_location_permission) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidBearerAuthException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidBearerAuthException(val token: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_bearer_auth, token) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_files.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/extensions/CoroutineExtensions.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.extensions 2 | 3 | import kotlin.coroutines.Continuation 4 | import kotlin.coroutines.resume 5 | import kotlinx.coroutines.flow.Flow 6 | import kotlinx.coroutines.flow.first 7 | 8 | fun Continuation.resume() { 9 | resume(Unit) 10 | } 11 | 12 | suspend fun Flow.awaitNonNull(): T = 13 | first { it != null }!! 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/CameraUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.content.Context 4 | import android.content.pm.PackageManager 5 | import javax.inject.Inject 6 | 7 | class CameraUtil 8 | @Inject 9 | constructor( 10 | private val context: Context, 11 | ) { 12 | fun hasCamera(): Boolean = 13 | context.packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_launcher_monochrome.xml: -------------------------------------------------------------------------------- 1 | 6 | 10 | 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/FailedToAccessFileException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class FailedToAccessFileException(private val fileName: String) : UserException() { 7 | override fun getLocalizedMessage(context: Context): String = 8 | context.getString(R.string.error_failed_to_access_file, fileName) 9 | } 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/advancedsettings/AdvancedSettingsDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.advancedsettings 2 | 3 | import androidx.compose.runtime.Stable 4 | import kotlin.time.Duration 5 | 6 | @Stable 7 | sealed class AdvancedSettingsDialogState { 8 | @Stable 9 | data class TimeoutPicker( 10 | val initialTimeout: Duration, 11 | ) : AdvancedSettingsDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExecuteViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ExecuteViewState( 7 | val dialogState: ExecuteDialogState<*>? = null, 8 | val executionInProgress: Boolean = false, 9 | ) { 10 | val progressSpinnerVisible: Boolean 11 | get() = executionInProgress && dialogState == null 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/BrowserNotFoundException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class BrowserNotFoundException(private val packageName: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_browser_not_found, packageName) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidContentTypeException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidContentTypeException(val contentType: String) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_content_type, contentType) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_handle_response.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/PendingExecutionType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class PendingExecutionType { 4 | UNKNOWN, 5 | INITIAL_DELAY, 6 | RETRY_LATER, 7 | REPEAT, 8 | EXPLICITLY_SCHEDULED, 9 | NEW_INTENT, 10 | ; 11 | 12 | companion object { 13 | fun parse(name: String): PendingExecutionType? = 14 | entries.find { it.name == name } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/InvalidUrlException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.R 5 | 6 | class InvalidUrlException(val url: String, private val detail: String? = null) : UserException() { 7 | 8 | override fun getLocalizedMessage(context: Context): String = 9 | context.getString(R.string.error_invalid_url, detail ?: url) 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/plugin/Output.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.plugin 2 | 3 | import com.joaomgcd.taskerpluginlibrary.output.TaskerOutputObject 4 | import com.joaomgcd.taskerpluginlibrary.output.TaskerOutputVariable 5 | 6 | @TaskerOutputObject 7 | class Output( 8 | @get:TaskerOutputVariable("result", labelResIdName = "label_plugin_result", htmlLabelResIdName = "label_plugin_result_detail") 9 | val result: String = "", 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/globalcode/GlobalScriptingViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.globalcode 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class GlobalScriptingViewState( 7 | val dialogState: GlobalScriptingDialogState? = null, 8 | val globalCode: String = "", 9 | val hasChanges: Boolean = false, 10 | ) { 11 | val saveButtonEnabled 12 | get() = hasChanges 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/headers/RequestHeadersViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.headers 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.headers.models.HeaderListItem 5 | 6 | @Stable 7 | data class RequestHeadersViewState( 8 | val dialogState: RequestHeadersDialogState? = null, 9 | val headerItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ConfirmationType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class ConfirmationType( 4 | val type: String, 5 | ) { 6 | SIMPLE("simple"), 7 | BIOMETRIC("biometric"), 8 | ; 9 | 10 | override fun toString() = 11 | type 12 | 13 | companion object { 14 | fun parse(type: String): ConfirmationType? = 15 | entries.find { it.type == type } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_modify_shortcuts.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/withoutGoogleServices/kotlin/ch/rmy/android/http_shortcuts/utils/PlayServicesUtilImpl.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.content.Context 4 | import android.location.Location 5 | 6 | class PlayServicesUtilImpl(@Suppress("UNUSED_PARAMETER") context: Context) : PlayServicesUtil { 7 | override fun isPlayServicesAvailable(): Boolean = 8 | false 9 | 10 | override suspend fun getLocation(): Location? = throw NotImplementedError() 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/about/AboutViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.about 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class AboutViewState( 7 | val versionNumber: String, 8 | val fDroidVisible: Boolean, 9 | val changeLogDialogPermanentlyHidden: Boolean, 10 | val changeLogDialogVisible: Boolean = false, 11 | val deviceId: String, 12 | val crashReportingAllowed: Boolean, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/response/ResponseDisplayDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.response 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.enums.ResponseDisplayAction 5 | 6 | @Stable 7 | sealed class ResponseDisplayDialogState { 8 | data class SelectActions( 9 | val actions: Collection, 10 | ) : ResponseDisplayDialogState() 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/shortcuts/TriggerShortcutsViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.shortcuts 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.shortcuts.models.ShortcutListItem 5 | 6 | @Stable 7 | data class TriggerShortcutsViewState( 8 | val dialogState: TriggerShortcutsDialogState? = null, 9 | val shortcuts: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/authentication/AuthenticationDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.authentication 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class AuthenticationDialogState { 7 | @Stable 8 | data object SelectClientCertType : AuthenticationDialogState() 9 | 10 | @Stable 11 | data class PasswordPromptForCertFile(val fileName: String) : AuthenticationDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/MqttMessagesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.mqttmessages.models.MqttMessagesListItem 5 | 6 | @Stable 7 | data class MqttMessagesViewState( 8 | val dialogState: MqttMessagesDialogState? = null, 9 | val messageItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/shortcuts/models/ShortcutListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.shortcuts.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 6 | 7 | @Stable 8 | data class ShortcutListItem( 9 | val id: ShortcutListItemId, 10 | val name: Localizable, 11 | val icon: ShortcutIcon, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/main/models/RecoveryInfo.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.main.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.categories.CategoryId 5 | import ch.rmy.android.http_shortcuts.data.domains.shortcuts.ShortcutId 6 | 7 | @Stable 8 | data class RecoveryInfo( 9 | val shortcutName: String, 10 | val shortcutId: ShortcutId?, 11 | val categoryId: CategoryId, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/response/models/DetailInfo.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.response.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import kotlin.time.Duration 5 | 6 | @Stable 7 | data class DetailInfo( 8 | val url: String?, 9 | val status: String?, 10 | val timing: Duration?, 11 | val headers: List>, 12 | ) { 13 | val hasGeneralInfo = url != null || status != null || timing != null 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/UUIDAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.framework.utils.UUIDUtils 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class UUIDAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Unit.execute(executionContext: ExecutionContext): String = 11 | UUIDUtils.newUUID() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/framework/viewmodel/ViewModelScope.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.viewmodel 2 | 3 | import kotlinx.coroutines.CoroutineScope 4 | 5 | interface ViewModelScope : CoroutineScope { 6 | 7 | val viewState: ViewState 8 | 9 | suspend fun withProgressTracking(operation: suspend () -> Unit) 10 | 11 | suspend fun updateViewState(mutation: ViewState.() -> ViewState) 12 | 13 | fun skipAction(): Nothing = throw ViewModelCancellationException() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/second_launcher/SecondLauncherDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.second_launcher 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class SecondLauncherDialogState { 8 | @Stable 9 | data class PickShortcut( 10 | val shortcuts: List, 11 | ) : SecondLauncherDialogState() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ParameterType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ParameterType(val type: String) { 7 | STRING("string"), 8 | FILE("file"), 9 | ; 10 | 11 | override fun toString() = 12 | type 13 | 14 | companion object { 15 | fun parse(type: String): ParameterType? = 16 | entries.find { it.type == type } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseFailureOutput.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseFailureOutput(val type: String) { 7 | DETAILED("detailed"), 8 | SIMPLE("simple"), 9 | NONE("none"), 10 | ; 11 | 12 | companion object { 13 | fun parse(value: String): ResponseFailureOutput? = 14 | entries.find { it.type == value } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseSuccessOutput.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseSuccessOutput(val type: String) { 7 | RESPONSE("response"), 8 | MESSAGE("message"), 9 | NONE("none"), 10 | ; 11 | 12 | companion object { 13 | fun parse(value: String): ResponseSuccessOutput? = 14 | entries.find { it.type == value } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/utils/WebViewChecker.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.utils 2 | 3 | import android.webkit.CookieManager 4 | 5 | object WebViewChecker { 6 | fun isWebViewAvailable(): Boolean = 7 | try { 8 | // Try to access a harmless method on the WebView. This will fail if no WebView is installed. 9 | CookieManager.getInstance() 10 | true 11 | } catch (_: Exception) { 12 | false 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variablewidget/models/SelectableVariable.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variablewidget.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.variables.GlobalVariableId 5 | import ch.rmy.android.http_shortcuts.data.domains.variables.VariableKey 6 | 7 | @Stable 8 | data class SelectableVariable( 9 | val variableId: GlobalVariableId, 10 | val variableKey: VariableKey, 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/dtos/GlobalVariablePlaceholder.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.dtos 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.variables.GlobalVariableId 5 | import ch.rmy.android.http_shortcuts.data.enums.VariableType 6 | 7 | @Stable 8 | data class GlobalVariablePlaceholder( 9 | val globalVariableId: GlobalVariableId, 10 | val variableKey: String, 11 | val variableType: VariableType, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/ClientCertUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.app.Activity 4 | import android.security.KeyChain 5 | 6 | object ClientCertUtil { 7 | fun promptForAlias(activity: Activity, callback: (String) -> Unit) { 8 | KeyChain.choosePrivateKeyAlias(activity, { alias -> 9 | if (alias != null) { 10 | callback(alias) 11 | } 12 | }, null, null, null, -1, null) 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExternalResult.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.net.Uri 4 | 5 | sealed interface ExternalResult { 6 | data class Files(val fileUris: List) : ExternalResult 7 | data class File(val fileUri: Uri) : ExternalResult 8 | data class BarcodeScanned(val content: String) : ExternalResult 9 | data object AppNotAvailable : ExternalResult 10 | data object Cancelled : ExternalResult 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerEvent.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import android.net.Uri 4 | import ch.rmy.android.framework.viewmodel.ViewModelEvent 5 | import ch.rmy.android.http_shortcuts.activities.icons.models.IconShape 6 | 7 | abstract class IconPickerEvent : ViewModelEvent() { 8 | object ShowImagePicker : IconPickerEvent() 9 | data class ShowImageCropper(val imageUri: Uri, val shape: IconShape) : IconPickerEvent() 10 | } 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/WorkingDirectoriesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.workingdirectories.models.WorkingDirectoryListItem 5 | 6 | @Stable 7 | data class WorkingDirectoriesViewState( 8 | val dialogState: WorkingDirectoriesDialogState? = null, 9 | val workingDirectories: List, 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseContentType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseContentType(val key: String) { 7 | PLAIN_TEXT("plain_text"), 8 | JSON("json"), 9 | XML("xml"), 10 | HTML("html"), 11 | ; 12 | 13 | companion object { 14 | fun parse(key: String): ResponseContentType? = 15 | entries.find { it.key == key } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseDisplayAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseDisplayAction(val key: String) { 7 | RERUN("rerun"), 8 | SHARE("share"), 9 | COPY("copy"), 10 | SAVE("save"), 11 | ; 12 | 13 | companion object { 14 | fun parse(key: String): ResponseDisplayAction? = 15 | entries.find { it.key == key } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/PendingExecutionWithVariablesModel.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.Embedded 4 | import androidx.room.Relation 5 | 6 | data class PendingExecutionWithVariablesModel( 7 | @Embedded val pendingExecution: PendingExecutionModel, 8 | @Relation( 9 | parentColumn = "id", 10 | entityColumn = "pending_execution_id", 11 | ) 12 | val resolvedVariables: List, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/CategorySectionsViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.categories.sections.models.CategorySectionListItem 5 | 6 | @Stable 7 | data class CategorySectionsViewState( 8 | val dialogState: CategorySectionsDialogState? = null, 9 | val sectionItems: List = emptyList(), 10 | ) 11 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/ToggleTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class ToggleTypeViewState( 7 | val options: List, 8 | val tooFewOptionsError: Boolean = false, 9 | ) : VariableTypeViewState { 10 | @Stable 11 | data class OptionItem( 12 | val id: String, 13 | val text: String, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/AppConfig.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity(tableName = "app_config") 8 | data class AppConfig( 9 | @PrimaryKey 10 | @ColumnInfo(name = "id") 11 | val id: Int = 1, 12 | @ColumnInfo(name = "title") 13 | val title: String, 14 | @ColumnInfo(name = "global_code") 15 | val globalCode: String, 16 | ) 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/Action.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | 5 | interface Action { 6 | suspend fun executeWithParams(params: Params, executionContext: ExecutionContext): Any? = 7 | params.run { 8 | execute(executionContext) 9 | } 10 | 11 | suspend fun Params.execute(executionContext: ExecutionContext): Any? 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/ConstantType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 4 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 5 | import javax.inject.Inject 6 | 7 | class ConstantType 8 | @Inject 9 | constructor() : VariableType { 10 | override suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle) = 11 | variable.value.orEmpty() 12 | } 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/layout/image_editor.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/models/Pin.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.certificate_pins.CertificatePinId 5 | 6 | @Stable 7 | data class Pin( 8 | val id: CertificatePinId, 9 | val pattern: String, 10 | val hash: String, 11 | ) { 12 | @Stable 13 | fun formatted(): String = 14 | hash.chunked(2).joinToString(":") 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/models/SectionItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models 2 | 3 | import androidx.annotation.DrawableRes 4 | import androidx.compose.runtime.Stable 5 | import ch.rmy.android.framework.utils.localization.Localizable 6 | 7 | @Stable 8 | data class SectionItem( 9 | val title: Localizable, 10 | @DrawableRes val icon: Int, 11 | val codeSnippetItems: List, 12 | ) 13 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/history/HistoryViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.history 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class HistoryViewState( 7 | val historyItems: List, 8 | val useRelativeTimes: Boolean, 9 | ) { 10 | val isTimeModeButtonEnabled: Boolean 11 | get() = historyItems.isNotEmpty() 12 | 13 | val isClearButtonEnabled: Boolean 14 | get() = historyItems.isNotEmpty() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ActionType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ActionAlias 4 | import ch.rmy.android.http_shortcuts.scripting.actions.ActionRunnable 5 | import ch.rmy.android.scripting.JsFunctionArgs 6 | 7 | interface ActionType { 8 | val type: String 9 | 10 | fun getActionRunnable(args: JsFunctionArgs): ActionRunnable<*> 11 | 12 | fun getAlias(): ActionAlias? = null 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_quick_settings_tile.xml: -------------------------------------------------------------------------------- 1 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/HelpText.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components 2 | 3 | import androidx.compose.material3.Text 4 | import androidx.compose.runtime.Composable 5 | import androidx.compose.ui.Modifier 6 | 7 | @Composable 8 | fun HelpText( 9 | text: String, 10 | modifier: Modifier = Modifier, 11 | ) { 12 | Text( 13 | modifier = modifier, 14 | text = text, 15 | fontSize = FontSize.TINY, 16 | lineHeight = FontSize.SMALL, 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExternalRequest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.graphics.Bitmap 4 | import android.net.Uri 5 | 6 | sealed interface ExternalRequest { 7 | data class PickFiles(val multiple: Boolean) : ExternalRequest 8 | data object OpenCamera : ExternalRequest 9 | data class CropImage(val imageUri: Uri, val compressFormat: Bitmap.CompressFormat) : ExternalRequest 10 | data object ScanBarcode : ExternalRequest 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/ResponseTooLargeException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | import android.text.format.Formatter 5 | import ch.rmy.android.http_shortcuts.R 6 | 7 | class ResponseTooLargeException(private val limit: Long) : UserException() { 8 | 9 | override fun getLocalizedMessage(context: Context): String = 10 | context.getString(R.string.error_response_too_large, Formatter.formatShortFileSize(context, limit)) 11 | } 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_info.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/models/AppLock.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.models 2 | 3 | import androidx.room.ColumnInfo 4 | import androidx.room.Entity 5 | import androidx.room.PrimaryKey 6 | 7 | @Entity(tableName = "app_lock") 8 | data class AppLock( 9 | @PrimaryKey 10 | @ColumnInfo(name = "id") 11 | val id: Int = 1, 12 | @ColumnInfo(name = "password_hash") 13 | val passwordHash: String, 14 | @ColumnInfo(name = "use_biometrics") 15 | val useBiometrics: Boolean, 16 | ) 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/mqttmessages/MqttMessagesDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.mqttmessages 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class MqttMessagesDialogState { 7 | @Stable 8 | data object AddMessage : MqttMessagesDialogState() 9 | 10 | @Stable 11 | data class EditMessage( 12 | val id: Int, 13 | val topic: String, 14 | val payload: String, 15 | ) : MqttMessagesDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/RequestBodyType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class RequestBodyType(val type: String) { 4 | CUSTOM_TEXT("custom_text"), 5 | FORM_DATA("form_data"), 6 | X_WWW_FORM_URLENCODE("x_www_form_urlencode"), 7 | FILE("file"), 8 | ; 9 | 10 | override fun toString() = 11 | type 12 | 13 | companion object { 14 | fun parse(type: String): RequestBodyType? = 15 | entries.find { it.type == type } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ShortcutClickBehavior.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ShortcutClickBehavior(val type: String) { 7 | RUN("run"), 8 | EDIT("edit"), 9 | MENU("menu"), 10 | ; 11 | 12 | override fun toString() = 13 | type 14 | 15 | companion object { 16 | fun parse(type: String): ShortcutClickBehavior? = 17 | entries.find { it.type == type } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ToStringAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class ToStringAction 7 | @Inject 8 | constructor() : Action { 9 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 10 | String(data) 11 | 12 | data class Params( 13 | val data: ByteArray, 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/models/CodeSnippetItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | data class CodeSnippetItem( 8 | val title: Localizable, 9 | val description: Localizable?, 10 | val docRef: String?, 11 | val keywords: Set = emptySet(), 12 | val action: () -> Unit, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/VariablesViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.variables.models.GlobalVariableListItem 5 | 6 | @Stable 7 | data class VariablesViewState( 8 | val dialogState: GlobalVariablesDialogState? = null, 9 | val variables: List = emptyList(), 10 | ) { 11 | val isSortButtonEnabled 12 | get() = variables.size > 1 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/execute/ExecutionFactory.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.execute 2 | 3 | import android.content.Context 4 | import ch.rmy.android.http_shortcuts.activities.execute.models.ExecutionParams 5 | import javax.inject.Inject 6 | 7 | class ExecutionFactory 8 | @Inject 9 | constructor( 10 | private val context: Context, 11 | ) { 12 | fun createExecution(params: ExecutionParams, dialogHandle: DialogHandle): Execution = 13 | Execution(context, params, dialogHandle) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/remote_edit/RemoteEditViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.remote_edit 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class RemoteEditViewState( 7 | val dialogState: RemoteEditDialogState? = null, 8 | val deviceId: String, 9 | val password: String, 10 | val hostAddress: String, 11 | ) { 12 | val canUpload 13 | get() = password.isNotEmpty() 14 | 15 | val canDownload 16 | get() = password.isNotEmpty() 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/FileTypeUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | object FileTypeUtil { 4 | const val TYPE_XML = "text/xml" 5 | const val TYPE_XML_ALT = "application/xml" 6 | const val TYPE_JSON = "application/json" 7 | const val TYPE_HTML = "text/html" 8 | const val TYPE_YAML = "text/yaml" 9 | const val TYPE_YAML_ALT = "application/x-yaml" 10 | const val TYPE_PLAIN_TEXT = "text/plain" 11 | 12 | fun isImage(type: String?) = type?.startsWith("image/") == true 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/scripting/codesnippets/CodeSnippetPickerViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.activities.editor.scripting.codesnippets.models.ItemWrapper 5 | 6 | @Stable 7 | data class CodeSnippetPickerViewState( 8 | val dialogState: CodeSnippetPickerDialogState? = null, 9 | val items: List = emptyList(), 10 | val searchQuery: String = "", 11 | ) 12 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/workingdirectories/models/WorkingDirectoryListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.workingdirectories.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.working_directories.WorkingDirectoryId 5 | import java.time.LocalDateTime 6 | 7 | @Stable 8 | data class WorkingDirectoryListItem( 9 | val id: WorkingDirectoryId, 10 | val name: String, 11 | val lastAccessed: LocalDateTime?, 12 | val unmounted: Boolean, 13 | ) 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ProxyType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class ProxyType( 4 | val type: String, 5 | val supportsAuthentication: Boolean, 6 | ) { 7 | 8 | HTTP("HTTP", supportsAuthentication = false), 9 | SOCKS("SOCKS", supportsAuthentication = true), 10 | ; 11 | 12 | override fun toString() = 13 | type 14 | 15 | companion object { 16 | fun parse(type: String): ProxyType? = 17 | entries.find { it.type == type } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/GetDeviceIdAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.data.settings.Settings 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class GetDeviceIdAction 8 | @Inject 9 | constructor( 10 | private val settings: Settings, 11 | ) : Action { 12 | override suspend fun Unit.execute(executionContext: ExecutionContext) = 13 | settings.deviceId 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/variables/types/UUIDType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.variables.types 2 | 3 | import ch.rmy.android.framework.utils.UUIDUtils 4 | import ch.rmy.android.http_shortcuts.activities.execute.DialogHandle 5 | import ch.rmy.android.http_shortcuts.data.models.GlobalVariable 6 | import javax.inject.Inject 7 | 8 | class UUIDType 9 | @Inject 10 | constructor() : VariableType { 11 | override suspend fun resolve(variable: GlobalVariable, dialogHandle: DialogHandle) = 12 | UUIDUtils.newUUID() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/importexport/ExportDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.importexport 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | sealed class ExportDialogState { 8 | data class Progress(val text: Localizable) : ExportDialogState() 9 | 10 | data class Error(val message: Localizable) : ExportDialogState() 11 | 12 | data class ExportPasswordPrompt(val password: String) : ExportDialogState() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/deeplink/DeepLinkDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.deeplink 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.shortcuts.ShortcutNameOrId 5 | 6 | @Stable 7 | sealed class DeepLinkDialogState { 8 | @Stable 9 | data object Instructions : DeepLinkDialogState() 10 | 11 | @Stable 12 | data class ShortcutNotFound( 13 | val shortcutNameOrId: ShortcutNameOrId, 14 | ) : DeepLinkDialogState() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/components/VerticalSpacer.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.components 2 | 3 | import androidx.compose.foundation.layout.Spacer 4 | import androidx.compose.foundation.layout.height 5 | import androidx.compose.runtime.Composable 6 | import androidx.compose.runtime.NonRestartableComposable 7 | import androidx.compose.ui.Modifier 8 | import androidx.compose.ui.unit.Dp 9 | 10 | @Composable 11 | @NonRestartableComposable 12 | fun VerticalSpacer(height: Dp) { 13 | Spacer(modifier = Modifier.height(height)) 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/exceptions/UserException.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.exceptions 2 | 3 | import android.content.Context 4 | 5 | abstract class UserException : Exception() { 6 | 7 | abstract fun getLocalizedMessage(context: Context): String 8 | 9 | companion object { 10 | fun create(messageFactory: Context.() -> String) = object : UserException() { 11 | override fun getLocalizedMessage(context: Context): String = 12 | messageFactory(context) 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_control_flow.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/JsValue.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | interface JsValue { 4 | fun asString(): String? 5 | 6 | fun asInt(): Int? = 7 | asString()?.toIntOrNull() 8 | 9 | fun asBoolean(): Boolean? = 10 | asString()?.toBoolean() 11 | 12 | fun asObject(): Map? 13 | 14 | fun asByteArray(): ByteArray? 15 | 16 | fun asListOfStrings(): List? 17 | 18 | fun asListOfObjects(): List>? 19 | 20 | fun asJsFunctionArgs(): JsFunctionArgs? 21 | } 22 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ResponseUiType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ResponseUiType(val type: String) { 7 | TOAST("toast"), 8 | NOTIFICATION("notification"), 9 | DIALOG("dialog"), 10 | WINDOW("window"), 11 | ; 12 | 13 | override fun toString() = 14 | type 15 | 16 | companion object { 17 | fun parse(type: String): ResponseUiType? = 18 | entries.find { it.type == type } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/WifiIPAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import ch.rmy.android.http_shortcuts.utils.NetworkUtil 5 | import javax.inject.Inject 6 | 7 | class WifiIPAction 8 | @Inject 9 | constructor( 10 | private val networkUtil: NetworkUtil, 11 | ) : Action { 12 | override suspend fun Unit.execute(executionContext: ExecutionContext): String? = 13 | networkUtil.getIPV4Address() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/FileUploadType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | enum class FileUploadType(val type: String) { 4 | FILE_PICKER("file_picker"), 5 | FILE_PICKER_MULTI("file_picker_multi"), 6 | CAMERA("camera"), 7 | FILE("stored_file"), 8 | STATIC_VALUE("static_value"), 9 | ; 10 | 11 | override fun toString() = 12 | type 13 | 14 | companion object { 15 | fun parse(type: String): FileUploadType? = 16 | entries.find { it.type == type } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | include(":app") 2 | include(":framework") 3 | include(":curl_command") 4 | include(":favicon_grabber") 5 | include(":scripting") 6 | 7 | dependencyResolutionManagement { 8 | repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) 9 | repositories { 10 | // Only include repos allowed by F-Droid 11 | // see https://f-droid.org/docs/Inclusion_Policy/ 12 | mavenCentral() 13 | maven("https://jitpack.io") 14 | maven("https://oss.sonatype.org/content/repositories/snapshots/") 15 | google() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/SetResultAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class SetResultAction 7 | @Inject 8 | constructor() : Action { 9 | override suspend fun Params.execute(executionContext: ExecutionContext) { 10 | executionContext.resultHandler.setResult(value) 11 | } 12 | 13 | data class Params( 14 | val value: String, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/HttpMethod.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class HttpMethod(val method: String) { 7 | GET("GET"), 8 | POST("POST"), 9 | PUT("PUT"), 10 | DELETE("DELETE"), 11 | PATCH("PATCH"), 12 | HEAD("HEAD"), 13 | OPTIONS("OPTIONS"), 14 | TRACE("TRACE"), 15 | ; 16 | 17 | companion object { 18 | fun parse(value: String): HttpMethod? = 19 | entries.find { it.method == value } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_variables.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/splash_screen.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/certpinning/CertPinningDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.certpinning 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class CertPinningDialogState { 7 | @Stable 8 | data object ContextMenu : CertPinningDialogState() 9 | 10 | @Stable 11 | data object ConfirmDeletion : CertPinningDialogState() 12 | 13 | @Stable 14 | data class Editor( 15 | val initialHash: String, 16 | val initialPattern: String, 17 | ) : CertPinningDialogState() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/domains/variables/VariableKeyOrId.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.domains.variables 2 | 3 | import ch.rmy.android.http_shortcuts.variables.Variables 4 | 5 | @JvmInline 6 | value class VariableKeyOrId(val value: String) { 7 | val globalVariableId: GlobalVariableId? 8 | get() = value.takeIf { Variables.isValidGlobalVariableId(value) } 9 | val variableKey: VariableKey? 10 | get() = value.takeIf { Variables.isValidVariableKey(it) } 11 | 12 | override fun toString(): String = 13 | value 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/plugin/TaskerTaskPickerContract.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.plugin 2 | 3 | import android.content.Context 4 | import android.content.Intent 5 | import androidx.activity.result.contract.ActivityResultContract 6 | 7 | object TaskerTaskPickerContract : ActivityResultContract() { 8 | override fun createIntent(context: Context, input: Unit): Intent = 9 | TaskerIntent.getTaskSelectIntent() 10 | 11 | override fun parseResult(resultCode: Int, intent: Intent?): String? = 12 | intent?.dataString 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/ActionRunnable.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import ch.rmy.android.http_shortcuts.scripting.actions.types.Action 5 | 6 | class ActionRunnable( 7 | private val action: Action, 8 | private val params: Params, 9 | ) { 10 | suspend fun run(executionContext: ExecutionContext): Any? = 11 | action.executeWithParams(params, executionContext) 12 | .takeUnless { it == Unit } 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/HtmlEncodeAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import androidx.core.text.htmlEncode 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class HtmlEncodeAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | text.htmlEncode() 12 | 13 | data class Params( 14 | val text: String, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/curl_command/src/test/kotlin/ch/rmy/curlcommand/CommandParserTest.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.curlcommand 2 | 3 | import kotlin.test.Test 4 | import kotlin.test.assertEquals 5 | 6 | class CommandParserTest { 7 | 8 | @Test 9 | fun testParser() { 10 | val target = "curl -X \"Hello 'World'\" \"escaped \\\" quotes and backslashes \\\\\" --bla 'foo'" 11 | val expected = listOf("curl", "-X", "Hello 'World'", "escaped \" quotes and backslashes \\", "--bla", "foo") 12 | val actual = CommandParser.parseCommand(target) 13 | assertEquals(expected, actual) 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/icons/IconPickerDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.icons 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.icons.ShortcutIcon 5 | 6 | @Stable 7 | sealed class IconPickerDialogState { 8 | data object SelectShape : IconPickerDialogState() 9 | 10 | data class DeleteIcon( 11 | val icon: ShortcutIcon.CustomIcon, 12 | val stillInUseWarning: Boolean, 13 | ) : IconPickerDialogState() 14 | 15 | data object BulkDelete : IconPickerDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/categories/sections/CategorySectionsDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.categories.sections 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.sections.SectionId 5 | 6 | @Stable 7 | sealed class CategorySectionsDialogState { 8 | @Stable 9 | data object AddSection : CategorySectionsDialogState() 10 | 11 | @Stable 12 | data class EditSection( 13 | val id: SectionId, 14 | val name: String, 15 | ) : CategorySectionsDialogState() 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/remote_edit/RemoteEditDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.remote_edit 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | 6 | @Stable 7 | sealed class RemoteEditDialogState { 8 | data class Progress(val text: Localizable) : RemoteEditDialogState() 9 | data class Error(val message: Localizable) : RemoteEditDialogState() 10 | data class EditServerUrl( 11 | val currentServerAddress: String, 12 | ) : RemoteEditDialogState() 13 | } 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ToHexStringAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | 6 | class ToHexStringAction 7 | @Inject 8 | constructor() : Action { 9 | @OptIn(ExperimentalStdlibApi::class) 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | data.toHexString() 12 | 13 | data class Params( 14 | val data: ByteArray, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/utils/ColorUtil.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.utils 2 | 3 | import android.graphics.Color 4 | import androidx.annotation.ColorInt 5 | 6 | object ColorUtil { 7 | @ColorInt 8 | fun String.hexStringToColorInt(): Int = 9 | if (length == 6) { 10 | val color = toIntOrNull(16) ?: Color.WHITE 11 | color + 0xff000000.toInt() 12 | } else { 13 | Color.WHITE 14 | } 15 | 16 | fun Int.colorIntToHexString(): String = 17 | String.format("%06x", this and 0xffffff).uppercase() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/quick_settings_tile/QuickSettingsTileDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.quick_settings_tile 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class QuickSettingsTileDialogState { 8 | @Stable 9 | data object Instructions : QuickSettingsTileDialogState() 10 | 11 | @Stable 12 | data class PickShortcut( 13 | val shortcuts: List, 14 | ) : QuickSettingsTileDialogState() 15 | } 16 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/share/ShareDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.share 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.dtos.ShortcutPlaceholder 5 | 6 | @Stable 7 | sealed class ShareDialogState { 8 | @Stable 9 | data object Progress : ShareDialogState() 10 | 11 | @Stable 12 | data object Instructions : ShareDialogState() 13 | 14 | @Stable 15 | data class PickShortcut( 16 | val shortcuts: List, 17 | ) : ShareDialogState() 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/WaitAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 4 | import javax.inject.Inject 5 | import kotlin.time.Duration 6 | import kotlinx.coroutines.delay 7 | 8 | class WaitAction 9 | @Inject 10 | constructor() : Action { 11 | override suspend fun Params.execute(executionContext: ExecutionContext) { 12 | delay(duration) 13 | } 14 | 15 | data class Params( 16 | val duration: Duration, 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/CategoryLayoutType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class CategoryLayoutType(val type: String) { 7 | LINEAR_LIST("linear_list"), 8 | DENSE_GRID("dense_grid"), 9 | MEDIUM_GRID("medium_grid"), 10 | WIDE_GRID("wide_grid"), 11 | ; 12 | 13 | override fun toString() = 14 | type 15 | 16 | companion object { 17 | fun parse(type: String): CategoryLayoutType? = 18 | entries.find { it.type == type } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/CleanupHandler.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting 2 | 3 | class CleanupHandler { 4 | private val cleanupActions = mutableListOf<() -> Unit>() 5 | 6 | fun doFinally(action: () -> Unit) { 7 | synchronized(cleanupActions) { 8 | cleanupActions.add(action) 9 | } 10 | } 11 | 12 | fun finally() { 13 | synchronized(cleanupActions) { 14 | cleanupActions.forEach { 15 | it.invoke() 16 | } 17 | cleanupActions.clear() 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/ScanBarcodeAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import ch.rmy.android.http_shortcuts.activities.execute.ExternalRequests 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class ScanBarcodeAction 8 | @Inject 9 | constructor( 10 | private val externalRequests: ExternalRequests, 11 | ) : Action { 12 | override suspend fun Unit.execute(executionContext: ExecutionContext): String? = 13 | externalRequests.scanBarcode() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/settings/SettingsDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.settings 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | sealed class SettingsDialogState { 7 | data class ChangeTitle(val oldTitle: String) : SettingsDialogState() 8 | data class ChangeUserAgent( 9 | val oldUserAgent: String, 10 | val placeholder: String, 11 | ) : SettingsDialogState() 12 | data class LockApp(val canUseBiometrics: Boolean) : SettingsDialogState() 13 | data object ClearCookies : SettingsDialogState() 14 | } 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/editor/types/SelectTypeViewState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.editor.types 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | data class SelectTypeViewState( 7 | val options: List, 8 | val tooFewOptionsError: Boolean = false, 9 | val isMultiSelect: Boolean, 10 | val separator: String, 11 | ) : VariableTypeViewState { 12 | @Stable 13 | data class OptionItem( 14 | val id: String, 15 | val label: String, 16 | val text: String, 17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/Base64EncodeAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import android.util.Base64 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class Base64EncodeAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | Base64.encodeToString(text, Base64.NO_WRAP) 12 | 13 | data class Params( 14 | val text: ByteArray, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/second_launcher/SecondLauncherActivity.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.second_launcher 2 | 3 | import androidx.compose.runtime.Composable 4 | import ch.rmy.android.http_shortcuts.activities.BaseComposeActivity 5 | import dagger.hilt.android.AndroidEntryPoint 6 | 7 | @AndroidEntryPoint 8 | class SecondLauncherActivity : BaseComposeActivity() { 9 | 10 | override val initializeWithTheme: Boolean 11 | get() = false 12 | 13 | @Composable 14 | override fun Content() { 15 | SecondLauncherScreen() 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/variables/models/GlobalVariableListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.variables.models 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | import ch.rmy.android.http_shortcuts.data.domains.variables.GlobalVariableId 6 | import ch.rmy.android.http_shortcuts.data.domains.variables.VariableKey 7 | 8 | @Stable 9 | data class GlobalVariableListItem( 10 | val id: GlobalVariableId, 11 | val key: VariableKey, 12 | val type: Localizable, 13 | val isUnused: Boolean, 14 | ) 15 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/scripting/actions/types/HtmlDecodeAction.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.scripting.actions.types 2 | 3 | import android.text.Html 4 | import ch.rmy.android.http_shortcuts.scripting.ExecutionContext 5 | import javax.inject.Inject 6 | 7 | class HtmlDecodeAction 8 | @Inject 9 | constructor() : Action { 10 | override suspend fun Params.execute(executionContext: ExecutionContext): String = 11 | Html.fromHtml(text, Html.FROM_HTML_MODE_LEGACY).toString() 12 | 13 | data class Params( 14 | val text: String, 15 | ) 16 | } 17 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/res/drawable/ic_google_play.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /HTTPShortcuts/.editorconfig: -------------------------------------------------------------------------------- 1 | [*.{kt,kts}] 2 | ktlint_code_style = android_studio 3 | indent_size = 4 4 | insert_final_newline = true 5 | max_line_length = 150 6 | ktlint_function_naming_ignore_when_annotated_with = Composable 7 | ktlint_class_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 3 8 | ktlint_function_signature_rule_force_multiline_when_parameter_count_greater_or_equal_than = 3 9 | ktlint_standard_package-name = disabled 10 | ktlint_standard_function-signature = disabled 11 | ktlint_standard_class-signature = disabled 12 | ij_kotlin_allow_trailing_comma_on_call_site = true 13 | ij_kotlin_allow_trailing_comma = true 14 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/editor/headers/RequestHeadersDialogState.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.editor.headers 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.http_shortcuts.data.domains.request_headers.RequestHeaderId 5 | 6 | @Stable 7 | sealed class RequestHeadersDialogState { 8 | @Stable 9 | data object AddHeader : RequestHeadersDialogState() 10 | 11 | @Stable 12 | data class EditHeader( 13 | val id: RequestHeaderId, 14 | val key: String, 15 | val value: String, 16 | ) : RequestHeadersDialogState() 17 | } 18 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/history/HistoryListItem.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.history 2 | 3 | import androidx.compose.runtime.Stable 4 | import ch.rmy.android.framework.utils.localization.Localizable 5 | import java.time.LocalDateTime 6 | 7 | @Stable 8 | data class HistoryListItem( 9 | val id: Int, 10 | val time: LocalDateTime, 11 | val epochMillis: Long, 12 | val title: Localizable, 13 | val detail: Localizable?, 14 | val displayType: DisplayType?, 15 | ) { 16 | enum class DisplayType { 17 | SUCCESS, 18 | FAILURE, 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/data/enums/ShortcutExecutionType.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.data.enums 2 | 3 | import androidx.compose.runtime.Stable 4 | 5 | @Stable 6 | enum class ShortcutExecutionType( 7 | val type: String, 8 | ) { 9 | 10 | HTTP("app"), 11 | BROWSER("browser"), 12 | SCRIPTING("scripting"), 13 | TRIGGER("trigger"), // AKA "Multi Shortcut" 14 | MQTT("mqtt"), 15 | WAKE_ON_LAN("wol"), 16 | ; 17 | 18 | companion object { 19 | fun parse(type: String): ShortcutExecutionType? = 20 | entries.find { it.type == type } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /HTTPShortcuts/app/src/main/kotlin/ch/rmy/android/http_shortcuts/activities/misc/deeplink/DeepLinkActivity.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.http_shortcuts.activities.misc.deeplink 2 | 3 | import androidx.compose.runtime.Composable 4 | import ch.rmy.android.http_shortcuts.activities.BaseComposeActivity 5 | import dagger.hilt.android.AndroidEntryPoint 6 | 7 | @AndroidEntryPoint 8 | class DeepLinkActivity : BaseComposeActivity() { 9 | 10 | override val initializeWithTheme: Boolean 11 | get() = false 12 | 13 | @Composable 14 | override fun Content() { 15 | DeepLinkScreen( 16 | url = intent.data, 17 | ) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /HTTPShortcuts/framework/src/main/kotlin/ch/rmy/android/framework/utils/UUIDUtils.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.framework.utils 2 | 3 | import java.util.UUID 4 | 5 | object UUIDUtils { 6 | 7 | const val UUID_REGEX = "[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-4[0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}" 8 | 9 | fun newUUID() = UUID.randomUUID().toString() 10 | 11 | fun isUUID(input: String): Boolean = 12 | try { 13 | UUID.fromString(input) 14 | true 15 | } catch (_: IllegalArgumentException) { 16 | false 17 | } catch (_: NumberFormatException) { 18 | false 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /HTTPShortcuts/scripting/src/main/kotlin/ch/rmy/android/scripting/ScriptingEngine.kt: -------------------------------------------------------------------------------- 1 | package ch.rmy.android.scripting 2 | 3 | interface ScriptingEngine { 4 | fun setExceptionHandler(onException: (ScriptingException) -> Unit) 5 | 6 | fun evaluateScript(script: String) 7 | 8 | fun registerFunction(name: String, function: JsFunction) 9 | 10 | fun registerObject(name: String, obj: JsObject?) 11 | 12 | fun registerString(name: String, string: String?) 13 | 14 | fun registerListOfObjects(name: String, list: List) 15 | 16 | fun buildJsObject(builder: JsObjectBuilder.() -> Unit): JsObject 17 | 18 | fun destroy() 19 | } 20 | --------------------------------------------------------------------------------