{"id":16476371,"url":"https://github.com/softprops/hubcat","last_synced_at":"2025-10-13T03:47:33.852Z","repository":{"id":5763745,"uuid":"6976815","full_name":"softprops/hubcat","owner":"softprops","description":"hip cats and git hubs","archived":false,"fork":false,"pushed_at":"2022-03-12T04:22:51.000Z","size":99,"stargazers_count":50,"open_issues_count":7,"forks_count":24,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-17T11:59:56.143Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/softprops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-12-03T04:53:06.000Z","updated_at":"2025-02-17T18:46:16.000Z","dependencies_parsed_at":"2022-09-26T21:51:27.991Z","dependency_job_id":null,"html_url":"https://github.com/softprops/hubcat","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softprops%2Fhubcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softprops%2Fhubcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softprops%2Fhubcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/softprops%2Fhubcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/softprops","download_url":"https://codeload.github.com/softprops/hubcat/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244757011,"owners_count":20505301,"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":"2024-10-11T12:42:15.300Z","updated_at":"2025-10-13T03:47:28.800Z","avatar_url":"https://github.com/softprops.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hubcat\n\n[![Build Status](https://travis-ci.org/softprops/hubcat.png?branch=master)](https://travis-ci.org/softprops/hubcat)\n\nhip cats, git hubs, good times. asynchronous vvip client of the github enterprises\n\n## install\n\nIn sbt...\n\n    libraryDependencies += \"me.lessis\" %% \"hubcat\" % \"0.1.1\"\n\n## goals\n\n- do as __little__ as possible while providing much of what you __need__.\n\n## what it does\n\n- handle authentication (basic \u0026 oauth)\n\nMost HTTP APIs are composed of REST-style endpoints which have little need for API wrappers. Dispatch's path building interface is sufficient and down-right ideal to suit most of these cases. Authenticated APIs incur some extra complexity for clients which makes using a library more worth your while to avoid writing extra code for handling API specific authentication. This library provides an interface that supports github basic and oauth(2) credentials. How you choose to store those credentials is up to your application.\n\n- provide a fluent interface for composing api requests\n\nThe choice of design is modeled after the library dispatch is based on which provides low-level builder interface for composing HTTP requests. This library provides a builder interface at the level of the github API.\n\n## what it doesn't\n\n- make assumptions about what you want to do with responses\n\nIn the spirit of dispatch, your interface for responses is a just function. It just happens to have\nthe same function signature dispatch uses for handlers of responses: `com.ning.http.client.AsyncResponse[T]`\n\nAll builder methods define a method `apply[T](hand: Client.Handler[T]): Promise[T]` so, at any point,\nyou can provide a handler function and get back a dispatch Promise to compose with other promises to process a chain of responses.\n\n- provide a modeling of responses\n\nMany applications may already define their own representation of github api objects.\nThis library does not intend to replace those. This library allows you to directly adapt them to standard\ndispatch interfaces.\n\n- parse responses\n\nMost of the time you will wish to query a github server for a single piece of information. Github serves most services in JSON.\nThere are alot of great JSON parsers out there. You are probably already using one. This library doesn't assume which one you will use.\nThere is probably already a dispatch interface out there for the one you are using. You should use those instead. If not, contribute to dispatch!\n\n## usage \n\nGet a list of contributors for repo ranked by contribution\n\n```scala\nimport hubcat._; import dispatch._; import org.json4s._\nval (login, pass) = (\"yrlogin\", \"yrpass\")\nval (user, repo) = (\"dispatch\", \"reboot\")\nval auth = new AuthorizationClient(login, pass).\n                 authorize.\n                 scopes(\"repo\").\n                 note(\"just for fun\")\nfor {\n  JObject(fields)           \u003c- auth(as.json4s.Json)()\n  (\"token\", JString(token)) \u003c- fields\n} yield {\n  val contrib = new Client(token).\n                     repo(user, repo).\n                     contributors\n  (for {\n    JObject(cfields)               \u003c- contrib(as.json4s.Json)()\n    (\"login\", JString(login))      \u003c- cfields\n    (\"contributions\", JInt(count)) \u003c- cfields\n  } yield (login, count)).sortBy(_._2).reverse\n}.foreach {\n  case (l, c) =\u003e println(\"%-15s - %s\" format(l, c))\n}\n```\n\n### Changelog\n\nYou can find a list of notable changes on [implicit.ly](http://notes.implicit.ly/search/hubcat)\n\n### Resources\n\n- Github [api docs](http://developer.github.com/)\n- Your Github [oauth clients](https://github.com/settings/applications)\n\nDoug Tangren (softprops) 2012\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftprops%2Fhubcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftprops%2Fhubcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftprops%2Fhubcat/lists"}