{"id":28963772,"url":"https://github.com/crowdcode-de/lbds-android-messaging","last_synced_at":"2025-06-24T04:12:36.381Z","repository":{"id":43264501,"uuid":"303731953","full_name":"crowdcode-de/lbds-android-messaging","owner":"crowdcode-de","description":null,"archived":false,"fork":false,"pushed_at":"2022-07-12T07:30:22.000Z","size":86,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":5,"default_branch":"develop","last_synced_at":"2024-04-18T03:22:53.601Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/crowdcode-de.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-10-13T14:34:16.000Z","updated_at":"2022-07-06T15:00:07.000Z","dependencies_parsed_at":"2022-09-04T00:02:06.688Z","dependency_job_id":null,"html_url":"https://github.com/crowdcode-de/lbds-android-messaging","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/crowdcode-de/lbds-android-messaging","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdcode-de%2Flbds-android-messaging","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdcode-de%2Flbds-android-messaging/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdcode-de%2Flbds-android-messaging/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdcode-de%2Flbds-android-messaging/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/crowdcode-de","download_url":"https://codeload.github.com/crowdcode-de/lbds-android-messaging/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/crowdcode-de%2Flbds-android-messaging/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261601533,"owners_count":23183099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-24T04:12:35.795Z","updated_at":"2025-06-24T04:12:36.357Z","avatar_url":"https://github.com/crowdcode-de.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# LBDS ANDROID MESSAGING\n\nSet of Android objects to have a Intent based asynchronous communication between SORMAS and LBDS \n\n## Requirements\n\n* java 8 +\n* maven 3.6 +\n* Android platform level 24\n\n## Build\n\nThe component is built with maven\n\n### AAR build to make use in android\n'mvn clean install -PyourProfile'\n\n### Location of your SDK\n\nThere is a profile for each operating system in the pom.xml. You may add a profile for your needs.\nOr you modify the path matching the exact location of your Android SDK\n\n# Using Messaging Lib to communicate with LBDS\n\n## Configuration steps needed\n\nTODO: verify client side configuration\n\n## Program steps needed\n\nInside an Activity or Service\n\n### Instantiate your http call\n\n`HttpMethod method = new HttpMethod(HttpMethod.MethodType.GET, \"http://www.google.com\");`\n\n A very simple abstraction of the HttpMethods can be found in the lbds-http module. \n See https://github.com/crowdcode-de/lbds-http for details. \n\n### Create a send intent\n\n`LbdsSendIntent sendIntent = new LbdsSendIntent(method);`\n\n### Fire the intent\n`startService(sendIntent);`\n\n\n# Receiving Data from LBDS \n\nAfter a request has been processed, the LBDS-Subsystem will emit an Intent for Sormas.\nThis intent is named LbdsResponseIntent and it is also the location where the phsyical receiver configuration -\n like package and app name - is configured.\n\n## Preconfiguration\n\n### android-manifest.xml\n\nA receiver for the intent must be implemented.\n\n`        \u003cservice\n             android:name=\".LbdsRecevierComponent\"\n             android:enabled=\"true\"\n             android:exported=\"true\"\u003e\n             \u003cintent-filter\u003e\n                 \u003caction android:name=\"android.intent.action.SEND\" /\u003e\n                 \u003ccategory android:name=\"android.intent.category.DEFAULT\" /\u003e\n             \u003c/intent-filter\u003e\n         \u003cservice\u003e `  \n         \nThe current package for SORMAS has been taken from github and was set to _de.symeda.sormas.app_ - this may be subject to change\nThe current Receiver Component was set to _de.symeda.sormas.app.LbdsRecevierComponent_ - this also may be subject of a change\n\n\n### Receiver implementation\n\nA receiver implementation must be located in the a.m. package and it must implement an IntentService\n\n`public class LbdsRecevierComponent extends IntentService ...`\n\n# Key Exchange Functionality\n\nIn order to exchange public Keys for encrypting transport data between SORMAS and LBDS \nthere is a key exchange functionality (kex). \n\n* Every KEX Intent will contain ONE key when emitted towards a partner\n* Every KEX Reply intent will containt BOTH keys when sent by the requested partner\n\nExample:\n\n* SORMAS emits a LbdsPropagateKexToLbdsIntent will soleley contain the SORMAS public key\n* This intent is consumed by LBDS, the current public key will be replaced\n* LBDS emits a LbdsPropagateKexToSormasIntent, which will contain both keys; the new SORMAS key plus the current LBDS key\n\n_A response intent always has both keys!_\n\n## Useful to know\n\n* You may use the Constants package to differ the Intent Type\n\n```\nfinal String intentType = intent.getStringExtra(Constants.INTENT_TYPE);\n   if (intentType != null \u0026\u0026 !intentType.trim().isEmpty()) {\n     IntentType type = IntentType.valueOf(intentType);\n       switch (type) {\n         case HTTP_SEND_INTENT:\n           final String httpContainer = intent.getStringExtra(Constants.HTTP_CONTAINER);\n             HttpContainer container = HttpContainer.deserializePackedHttpContainer(httpContainer);\n             final HighLevelService highLevelService = ApplicationContext.getBean(HighLevelService.class);\n             final String responder = \"192.168.178.23:8080\";\n             final TransmissionSession session = highLevelService.submitHttpMethod(container.getMethod(), responder);\n             // ...\n             break;\n         case KEX_TO_LBDS_INTENT:\n           final String publicKey = intent.getStringExtra(Constants.SORMAS_KEY);\n           final PublicKey key = KeySerializationUtil.deserializePublicKey(publicKey);\n           //....\n           break;\n                  case HTTP_RESPONSE_INTENT:\n                      break;\n                  case KEX_TO_SORMAS_INTENT:\n                      break;\n              }\n          }\n        ....\n```\n\n## To be done\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdcode-de%2Flbds-android-messaging","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcrowdcode-de%2Flbds-android-messaging","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcrowdcode-de%2Flbds-android-messaging/lists"}