{"id":24308744,"url":"https://github.com/herikerbeth/async-method","last_synced_at":"2026-04-13T18:01:33.669Z","repository":{"id":272224854,"uuid":"915869755","full_name":"herikerbeth/async-method","owner":"herikerbeth","description":"Spring Boot web application designed to asynchronously lookup GitHub user information. It queries GitHub's API to fetch data about users, and the lookup process is handled asynchronously using CompletableFuture, allowing for scalable service architecture.","archived":false,"fork":false,"pushed_at":"2025-01-13T03:04:12.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-09-05T17:01:14.092Z","etag":null,"topics":["java","junit","maven","mockito-junit","spring-boot","spring-web","test-driven-development","unit-testing"],"latest_commit_sha":null,"homepage":"","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/herikerbeth.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-13T02:03:05.000Z","updated_at":"2025-01-13T03:07:22.000Z","dependencies_parsed_at":"2025-01-13T04:19:29.635Z","dependency_job_id":"27d9d498-e433-411e-bd70-cb6191afbb77","html_url":"https://github.com/herikerbeth/async-method","commit_stats":null,"previous_names":["herikerbeth/async-method"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/herikerbeth/async-method","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herikerbeth%2Fasync-method","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herikerbeth%2Fasync-method/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herikerbeth%2Fasync-method/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herikerbeth%2Fasync-method/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/herikerbeth","download_url":"https://codeload.github.com/herikerbeth/async-method/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herikerbeth%2Fasync-method/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31764317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["java","junit","maven","mockito-junit","spring-boot","spring-web","test-driven-development","unit-testing"],"created_at":"2025-01-17T05:11:24.440Z","updated_at":"2026-04-13T18:01:33.651Z","avatar_url":"https://github.com/herikerbeth.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Async Method\n\nThis is a Spring Boot web application designed to asynchronously lookup GitHub user information. It queries GitHub's API to fetch data about users, and the lookup process is handled asynchronously using `CompletableFuture`, allowing for scalable service architecture.\n\n## Features\n\n- **Search for Users**: Users can search for other GitHub users' information, such as their name and blog URL.\n- **Asynchronous Search**: The user search is performed asynchronously, allowing the server to handle other requests while waiting for the search results.\n- **Feedback on Search**: The system provides feedback that the search is in progress and returns the user data once the lookup is complete.\n\n---\n\n## Technologies Used\n- **Java 17**\n- **Spring Boot**\n- **CompletableFuture for asynchronous operations**\n- **REST Template for GitHub API integration**\n- **JUnit 5 for unit testing**\n- **Mockito for mocking dependencies**\n- **SLF4J for logging**\n\n---\n\n## Architecture\n\nBelow is the UML Class Diagram that illustrates the structure and relationships of the core classes in this application:\n\n```mermaid\nclassDiagram\n    class User {\n        - String name\n        - String blog\n        + getName() String\n        + setName(name)\n        + getBlog() String\n        + setBlog(blog)\n        + toString() String\n    }\n\n    class LookupService {\n        \u003c\u003cinterface\u003e\u003e\n        + CompletableFuture~User~ findUser(user)\n    }\n\n    class GithubLookupService {\n        + CompletableFuture~User~ findUser(user)\n        - RestTemplate restTemplate\n    }\n\n    User \u003c-- GithubLookupService : uses\n    LookupService \u003c|-- GithubLookupService : implements\n\n```\n---\n\n## Getting Started\n\n### Prerequisites\n\nBefore running this application, ensure you have the following installed:\n\n- **Java 17** or later\n- **Maven**\n\n## Installing the project\n\nFirst you must clone the repository.\n```bash\n# clone repository\n$ git clone https://github.com/herikerbeth/async-method.git\n\n# enter the project folder\n$ cd async-method\n```\n\nNow, inside IntelliJ, we will install the dependencies with Maven\n\n\u003cimg width=\"300px\" src=\"https://github.com/herikerbeth/assets/blob/main/install-dependencies.png?raw=true\"\u003e\n\n## Starting\nFinally, navigate to the Application class file to run the project.\n\n\u003cimg width=\"300px\" src=\"https://github.com/herikerbeth/assets/blob/main/run-application.png?raw=true\"\u003e\n\n## Test the Service\nTo test the service's functionality, run the unit tests:\n```bash\n$ mvn test\n```\nThe tests will ensure that the asynchronous lookup service works correctly and that the integration with the GitHub API is functioning as expected.\n\n## Source\n\nBased on the official Spring documentation from [Spring.io](https://spring.io/guides/gs/async-method).","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherikerbeth%2Fasync-method","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fherikerbeth%2Fasync-method","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherikerbeth%2Fasync-method/lists"}