{"id":20597366,"url":"https://github.com/rk0cc/jogu","last_synced_at":"2026-05-08T06:03:04.370Z","repository":{"id":40546686,"uuid":"443088855","full_name":"rk0cc/jogu","owner":"rk0cc","description":"A Java object which holding Git repository URL address","archived":false,"fork":false,"pushed_at":"2023-07-01T07:07:01.000Z","size":143,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-17T01:08:50.368Z","etag":null,"topics":["alternative-ssh","git","git-repository","git-url","https","java","maven","maven-jo","parser","remote-repository","repository","ssh","uri","url"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"wtfpl","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rk0cc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"rk0cc","patreon":"rk0cc","custom":["https://www.buymeacoffee.com/rk0cc"]}},"created_at":"2021-12-30T13:51:31.000Z","updated_at":"2024-02-21T11:10:39.000Z","dependencies_parsed_at":"2024-11-16T08:33:25.201Z","dependency_job_id":null,"html_url":"https://github.com/rk0cc/jogu","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rk0cc%2Fjogu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rk0cc%2Fjogu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rk0cc%2Fjogu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rk0cc%2Fjogu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rk0cc","download_url":"https://codeload.github.com/rk0cc/jogu/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242231442,"owners_count":20093636,"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":["alternative-ssh","git","git-repository","git-url","https","java","maven","maven-jo","parser","remote-repository","repository","ssh","uri","url"],"created_at":"2024-11-16T08:22:09.281Z","updated_at":"2026-05-08T06:03:04.106Z","avatar_url":"https://github.com/rk0cc.png","language":"Java","funding_links":["https://github.com/sponsors/rk0cc","https://patreon.com/rk0cc","https://www.buymeacoffee.com/rk0cc"],"categories":[],"sub_categories":[],"readme":"# Java Object of Git (Repository) URL - JOGU\n\n[![Test](https://github.com/rk0cc/jogu/actions/workflows/test.yml/badge.svg?branch=main)](https://github.com/rk0cc/jogu/actions/workflows/test.yml)\n[![CodeQL](https://github.com/rk0cc/jogu/actions/workflows/codeql.yml/badge.svg?branch=main)](https://github.com/rk0cc/jogu/actions/workflows/codeql.yml)\n[![Maven Central](https://img.shields.io/maven-central/v/xyz.rk0cc.jogu/jogu.svg?label=Maven%20Central)](https://search.maven.org/search?q=g:%22xyz.rk0cc.jogu%22%20AND%20a:%22jogu%22)\n[![Official Javadoc](https://img.shields.io/badge/Official%20Javadoc-in%20osp.rk0cc.xyz-green)](https://osp.rk0cc.xyz/javadoc/jogu/jogu/1.1.0/)\n[![Alternate Javadoc](https://javadoc.io/badge2/xyz.rk0cc.jogu/jogu/javadoc.svg)](https://javadoc.io/doc/xyz.rk0cc.jogu/jogu)\n![GitHub Sponsors](https://img.shields.io/github/sponsors/rk0cc)\n\nThis Java library allows parsing Git repository URL addresses to an actual\nobject with validation included.\n\n## Java provides URL and URI to handle these URL already, why create this package?\n\nYes, most Git repository URL can be parse URL or URI without issue. However, alternative form of SSH URL not.\n\nAlternative SSH address is reference as \"SSH\" in public git repository which supposed to be invalid technically since it missed protocol and\nnot a port number after the colon. Thus, inheriting URL or URI is disallowed since they are marked as final class. As a result, create new object\nwhich replicate how original URL or URI did with incompatable format supported.\n\n## Supported protocol of Git repository URL\n\nMost remote protocol are supported in this library.\n\n| Protocol format name       |             Example             | Supported in this library |\n|:---------------------------|:-------------------------------:|:-------------------------:|\n| HTTPS protocol             |  `https://example.com/foo.git`  |    :white_check_mark:     |\n| Git protocol               |   `git://example.com/foo.git`   |    :white_check_mark:     |\n| SSH protocol (Legit)       | `ssh://git@example.com/foo.git` |    :white_check_mark:     |\n| SSH protocol (Alternative) |    `git@example.com:foo.git`    |    :white_check_mark:     |\n| File protocol              |    `file:///path/to/foo.git`    |            :x:            |\n\nJogu does not support file protocol since it rarely uses and worthless when making actual request under local directory.\n\n## Install\n\nUsing Maven 3:\n\n```xml\n\u003cdependencies\u003e\n    \u003cdependency\u003e\n        \u003cgroupId\u003exyz.rk0cc.jogu\u003c/groupId\u003e\n        \u003cartifactId\u003ejogu\u003c/artifactId\u003e\n        \u003cversion\u003e1.1.2\u003c/version\u003e\n    \u003c/dependency\u003e\n\u003c/dependencies\u003e\n```\n\n## Usage\n\nGet `GitRepositoryURL` without specific implemented type uses:\n\n```java\nGitRepositoryURL gurl = GitRepositoryURL.parse(\"git://example.com/foo.git\");\n```\n\nGet `GitRepositoryURL` with specific implemented type uses:\n\n```java\nGitGitRepositoryURL gurl = GitRepositoryURL.parse(\"git://example.com/foo.git\", GitGitRepositoryURL.class);\n```\n\n## Setup\n\n* JDK 17 (or above)\n* Maven\n\n## License\n\nWTFPL 2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frk0cc%2Fjogu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frk0cc%2Fjogu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frk0cc%2Fjogu/lists"}