{"id":2250,"name":null,"description":"Parse Accept and Accept-Language HTTP headers in Ruby.","url":"https://github.com/socketry/http-accept","last_synced_at":"2026-04-30T04:03:16.530Z","repository":{"id":46986551,"uuid":"51002118","full_name":"socketry/http-accept","owner":"socketry","description":"Parse Accept and Accept-Language HTTP headers in Ruby.","archived":false,"fork":false,"pushed_at":"2025-03-09T10:37:05.000Z","size":111,"stargazers_count":87,"open_issues_count":5,"forks_count":11,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-04-15T22:02:17.112Z","etag":null,"topics":["http","http-client","http-server","parsing"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/socketry.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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,"zenodo":null},"funding":{"custom":"https://github.com/socketry/community/#funding","github":"ioquatix"}},"created_at":"2016-02-03T13:41:56.000Z","updated_at":"2025-10-03T16:01:53.000Z","dependencies_parsed_at":"2024-06-18T14:08:01.019Z","dependency_job_id":"021f7e39-3b7e-44ba-b25c-bfec2970f402","html_url":"https://github.com/socketry/http-accept","commit_stats":{"total_commits":84,"total_committers":8,"mean_commits":10.5,"dds":"0.11904761904761907","last_synced_commit":"fb4fabbf2e95e097147c3580fe061638fc7bcb3f"},"previous_names":["ioquatix/http-accept","socketry/protocol-http-accept"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/socketry/http-accept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31987884,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T20:23:30.271Z","status":"ssl_error","status_checked_at":"2026-04-18T20:23:29.375Z","response_time":103,"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"}},"owner":{"login":"socketry","name":"Socketry","uuid":"22138037","kind":"organization","description":"Modern asynchronous and timeout-capable I/O for Ruby.","email":"contact@socketry.io","website":"https://socketry.io","location":null,"twitter":"ioquatix","company":null,"icon_url":"https://avatars.githubusercontent.com/u/22138037?v=4","repositories_count":149,"last_synced_at":"2025-10-21T07:56:11.543Z","metadata":{"has_sponsors_listing":false,"funding":{"custom":"https://github.com/socketry/community/#funding","github":"ioquatix"}},"html_url":"https://github.com/socketry","funding_links":["https://github.com/socketry/community/#funding","https://github.com/sponsors/ioquatix"],"total_stars":12727,"followers":196,"following":0,"created_at":"2022-11-02T16:17:22.458Z","updated_at":"2025-10-21T07:56:11.543Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry/repositories"},"packages":[{"id":8615989,"name":"github.com/socketry/http-accept","ecosystem":"go","description":null,"homepage":null,"licenses":"mit","normalized_licenses":["MIT"],"repository_url":"https://github.com/socketry/http-accept","keywords_array":[],"namespace":null,"versions_count":18,"first_release_published_at":"2016-02-03T15:01:07.000Z","latest_release_published_at":"2024-02-05T04:00:48.000Z","latest_release_number":"v2.2.1+incompatible","last_synced_at":"2026-04-23T01:00:58.881Z","created_at":"2023-12-03T01:56:22.608Z","updated_at":"2026-04-23T01:00:58.882Z","registry_url":"https://pkg.go.dev/github.com/socketry/http-accept","install_command":"go get github.com/socketry/http-accept","documentation_url":"https://pkg.go.dev/github.com/socketry/http-accept#section-documentation","metadata":{},"repo_metadata":{"id":46986551,"uuid":"51002118","full_name":"socketry/http-accept","owner":"socketry","description":"Parse Accept and Accept-Language HTTP headers in Ruby.","archived":false,"fork":false,"pushed_at":"2025-03-09T10:37:05.000Z","size":111,"stargazers_count":87,"open_issues_count":5,"forks_count":11,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-10-08T04:34:21.688Z","etag":null,"topics":["http","http-client","http-server","parsing"],"latest_commit_sha":null,"homepage":null,"language":"Ruby","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/socketry.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.md","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,"zenodo":null},"funding":{"custom":"https://github.com/socketry/community/#funding","github":"ioquatix"}},"created_at":"2016-02-03T13:41:56.000Z","updated_at":"2025-10-03T16:01:53.000Z","dependencies_parsed_at":"2024-06-18T14:08:01.019Z","dependency_job_id":"021f7e39-3b7e-44ba-b25c-bfec2970f402","html_url":"https://github.com/socketry/http-accept","commit_stats":{"total_commits":84,"total_committers":8,"mean_commits":10.5,"dds":"0.11904761904761907","last_synced_commit":"fb4fabbf2e95e097147c3580fe061638fc7bcb3f"},"previous_names":["ioquatix/http-accept","socketry/protocol-http-accept"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/socketry/http-accept","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000704,"owners_count":26082805,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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"},"owner_record":{"login":"socketry","name":"Socketry","uuid":"22138037","kind":"organization","description":"Modern asynchronous and timeout-capable I/O for Ruby.","email":"contact@socketry.io","website":"https://socketry.io","location":null,"twitter":"ioquatix","company":null,"icon_url":"https://avatars.githubusercontent.com/u/22138037?v=4","repositories_count":147,"last_synced_at":"2025-09-30T23:59:09.708Z","metadata":{"has_sponsors_listing":false,"funding":{"custom":"https://github.com/socketry/community/#funding","github":"ioquatix"}},"html_url":"https://github.com/socketry","funding_links":["https://github.com/socketry/community/#funding","https://github.com/sponsors/ioquatix"],"total_stars":12564,"followers":193,"following":0,"created_at":"2022-11-02T16:17:22.458Z","updated_at":"2025-09-30T23:59:09.708Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/socketry/repositories"},"tags":[{"name":"v2.2.1","sha":"fb4fabbf2e95e097147c3580fe061638fc7bcb3f","kind":"commit","published_at":"2024-02-05T04:00:48.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v2.2.1","html_url":"https://github.com/socketry/http-accept/releases/tag/v2.2.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v2.2.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.2.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.2.1/manifests"},{"name":"v2.2.0","sha":"5f2693a980ad99707b992fc416d82f54a78df253","kind":"commit","published_at":"2022-08-02T08:13:57.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v2.2.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v2.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v2.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.2.0/manifests"},{"name":"v2.1.1","sha":"98ff333d3dc692b644b41d68658a986515ff02f7","kind":"tag","published_at":"2019-09-01T21:50:59.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v2.1.1","html_url":"https://github.com/socketry/http-accept/releases/tag/v2.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v2.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.1.1/manifests"},{"name":"v2.1.0","sha":"dc4c8dfceccb03429fa90a55ca426af405a05050","kind":"tag","published_at":"2019-07-09T06:58:34.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v2.1.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v2.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v2.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v2.1.0/manifests"},{"name":"v1.7.0","sha":"79688d055fb411db17b7027bea61cbbbd52cfed4","kind":"tag","published_at":"2017-03-14T13:21:57.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.7.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.7.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.7.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.7.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.7.0/manifests"},{"name":"v1.6.0","sha":"b91b8bf84eef060b02e0d5df113500b997961e9e","kind":"tag","published_at":"2016-10-29T23:58:56.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.6.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.6.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.6.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.6.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.6.0/manifests"},{"name":"v1.4.2","sha":"5ce2b8a9442f8a5f92889ffb931f33230a4fad54","kind":"tag","published_at":"2016-10-29T21:43:03.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.4.2","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.4.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.4.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.2/manifests"},{"name":"v1.5.0","sha":"8c133c54df4e7b568767e3e0a81340315ce38d24","kind":"tag","published_at":"2016-10-29T13:30:49.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.5.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.5.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.5.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.5.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.5.0/manifests"},{"name":"v1.4.1","sha":"0b2cdf23132731a82aa6d24aed5af81010a05712","kind":"tag","published_at":"2016-10-29T13:14:47.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.4.1","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.4.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.4.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.1/manifests"},{"name":"v1.4.0","sha":"8274eb5d6375e44b892b4a979460170c0b9c5add","kind":"tag","published_at":"2016-02-19T01:41:56.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.4.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.4.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.4.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.4.0/manifests"},{"name":"v1.3.0","sha":"18a3e4933867667b26eeb334c71c5234b04da713","kind":"tag","published_at":"2016-02-18T00:59:13.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.3.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.3.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.3.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.3.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.3.0/manifests"},{"name":"v1.2.0","sha":"fe317c02a688e0e55ac4fa5d3c62f4091d5d71fa","kind":"tag","published_at":"2016-02-16T12:28:19.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.2.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.2.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.2.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.2.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.2.0/manifests"},{"name":"v1.1.3","sha":"9b0e33326d1467c819da4ef3198ea54a4a957eb1","kind":"tag","published_at":"2016-02-16T02:10:34.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.1.3","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.1.3","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.1.3","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.3","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.3/manifests"},{"name":"v1.1.2","sha":"5df3e887eeb8685276c96d9b90dc47b229f83268","kind":"tag","published_at":"2016-02-05T02:44:44.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.1.2","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.1.2","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.1.2","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.2","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.2/manifests"},{"name":"v1.1.1","sha":"b52326859203e281c267a06bba1f4db0b903da6f","kind":"tag","published_at":"2016-02-04T06:47:25.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.1.1","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.1.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.1.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.1/manifests"},{"name":"v1.1.0","sha":"fac48d359b71e1087176315f5316fa310ce297e9","kind":"tag","published_at":"2016-02-04T03:34:19.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.1.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.1.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.1.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.1.0/manifests"},{"name":"v1.0.1","sha":"02812e74f266603fcbe251c23f877a6995b8f1a1","kind":"tag","published_at":"2016-02-03T15:43:26.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.0.1","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.0.1","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.0.1","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.0.1","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.0.1/manifests"},{"name":"v1.0.0","sha":"13c0f241ca01483cacd480ade01c44311c8bd796","kind":"tag","published_at":"2016-02-03T15:01:21.000Z","download_url":"https://codeload.github.com/socketry/http-accept/tar.gz/v1.0.0","html_url":"https://github.com/socketry/http-accept/releases/tag/v1.0.0","dependencies_parsed_at":null,"dependency_job_id":null,"purl":"pkg:github/socketry/http-accept@v1.0.0","tag_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.0.0","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/tags/v1.0.0/manifests"}]},"repo_metadata_updated_at":"2025-10-09T17:09:14.707Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":10.77902998550931,"dependent_packages_count":9.55954712080186,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":10.169288553155585},"purl":"pkg:golang/github.com/socketry/http-accept","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/go/github.com/socketry/http-accept","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/go/github.com/socketry/http-accept","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/go/github.com/socketry/http-accept/dependencies","status":null,"funding_links":["https://github.com/socketry/community/#funding","https://github.com/sponsors/ioquatix"],"critical":null,"issue_metadata":{"last_synced_at":"2025-08-31T10:33:20.273Z","issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/issues","maintainers":[{"login":"ioquatix","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[]},"versions_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsocketry%2Fhttp-accept/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsocketry%2Fhttp-accept/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsocketry%2Fhttp-accept/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsocketry%2Fhttp-accept/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages/github.com%2Fsocketry%2Fhttp-accept/codemeta","maintainers":[],"registry":{"name":"proxy.golang.org","url":"https://proxy.golang.org","ecosystem":"go","default":true,"packages_count":2105370,"maintainers_count":0,"namespaces_count":782439,"keywords_count":112823,"github":"golang","metadata":{"funded_packages_count":53495},"icon_url":"https://github.com/golang.png","created_at":"2022-04-04T15:19:22.939Z","updated_at":"2026-04-19T05:14:45.920Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/proxy.golang.org/namespaces"}},{"id":13950522,"name":"ruby-http-accept","ecosystem":"guix","description":"Parse Accept and Accept-Language HTTP headers","homepage":"https://github.com/socketry/http-accept","licenses":"expat","normalized_licenses":["Other"],"repository_url":"https://github.com/socketry/http-accept","keywords_array":[],"namespace":null,"versions_count":2,"first_release_published_at":"2026-03-02T18:57:57.031Z","latest_release_published_at":"2026-03-02T18:57:57.031Z","latest_release_number":"2.2.0","last_synced_at":"2026-04-03T00:18:33.717Z","created_at":"2026-03-02T18:57:56.848Z","updated_at":"2026-04-03T00:24:27.975Z","registry_url":"https://packages.guix.gnu.org/packages/ruby-http-accept/1.7.0/","install_command":"guix install ruby-http-accept","documentation_url":"https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/ruby-xyz.scm#n11092","metadata":{"location":"gnu/packages/ruby-xyz.scm:11092","variable_name":"ruby-http-accept"},"repo_metadata":{},"repo_metadata_updated_at":"2026-04-03T00:24:27.954Z","dependent_packages_count":0,"downloads":null,"downloads_period":null,"dependent_repos_count":0,"rankings":{"downloads":null,"dependent_repos_count":0.0,"dependent_packages_count":0.0,"stargazers_count":null,"forks_count":null,"docker_downloads_count":null,"average":100},"purl":"pkg:guix/ruby-http-accept","advisories":[],"docker_usage_url":"https://docker.ecosyste.ms/usage/guix/ruby-http-accept","docker_dependents_count":null,"docker_downloads_count":null,"usage_url":"https://repos.ecosyste.ms/usage/guix/ruby-http-accept","dependent_repositories_url":"https://repos.ecosyste.ms/api/v1/usage/guix/ruby-http-accept/dependencies","status":null,"funding_links":[],"critical":null,"issue_metadata":null,"versions_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-http-accept/versions","version_numbers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-http-accept/version_numbers","dependent_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-http-accept/dependent_packages","related_packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-http-accept/related_packages","codemeta_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages/ruby-http-accept/codemeta","maintainers":[],"registry":{"name":"guix","url":"https://guix.gnu.org","ecosystem":"guix","default":true,"packages_count":31136,"maintainers_count":0,"namespaces_count":0,"keywords_count":0,"github":"guix-mirror","metadata":{"funded_packages_count":286},"icon_url":"https://github.com/guix-mirror.png","created_at":"2026-03-02T16:23:46.981Z","updated_at":"2026-04-03T06:23:21.396Z","packages_url":"https://packages.ecosyste.ms/api/v1/registries/guix/packages","maintainers_url":"https://packages.ecosyste.ms/api/v1/registries/guix/maintainers","namespaces_url":"https://packages.ecosyste.ms/api/v1/registries/guix/namespaces"}}],"commits":{"id":885358,"full_name":"socketry/http-accept","default_branch":"main","total_commits":88,"total_committers":9,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":9.777777777777779,"dds":0.15909090909090906,"past_year_total_commits":0,"past_year_total_committers":0,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":0.0,"past_year_dds":0.0,"last_synced_at":"2026-04-21T17:28:36.581Z","last_synced_commit":"92052111340ca087c74855fd02eec6a463a5f822","created_at":"2023-03-09T21:44:28.238Z","updated_at":"2026-04-21T17:28:31.743Z","committers":[{"name":"Samuel Williams","email":"samuel.williams@oriontransfer.co.nz","login":"ioquatix","count":74},{"name":"Matthew Kerwin","email":"matthew.kerwin@qut.edu.au","login":"phluid61","count":4},{"name":"Alexis Bernard","email":"alexis@basesecrete.com","login":"alexisbernard","count":4},{"name":"Olle Jonsson","email":"olle.jonsson@gmail.com","login":"olleolleolle","count":1},{"name":"Khaled Hassan Hussein","email":"khaledhassan9447@gmail.com","login":"Khaled9447","count":1},{"name":"Ian Oxley","email":"ian.oxley@sage.com","login":"ianoxley","count":1},{"name":"Andy Brody","email":"git@abrody.com","login":"ab","count":1},{"name":"Robert Pritzkow","email":"robert.pritzkow@aboutsource.net","login":null,"count":1},{"name":"Alif Rachmawadi","email":"code@subosito.com","login":null,"count":1}],"past_year_committers":[],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-23T00:00:09.178Z","repositories_count":6216503,"commits_count":899227643,"contributors_count":34909174,"owners_count":1144341,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"socketry/http-accept","html_url":"https://github.com/socketry/http-accept","last_synced_at":"2026-03-20T23:33:57.107Z","status":"error","issues_count":0,"pull_requests_count":0,"avg_time_to_close_issue":null,"avg_time_to_close_pull_request":null,"issues_closed_count":0,"pull_requests_closed_count":0,"pull_request_authors_count":0,"issue_authors_count":0,"avg_comments_per_issue":null,"avg_comments_per_pull_request":null,"merged_pull_requests_count":0,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":0,"past_year_pull_requests_count":0,"past_year_avg_time_to_close_issue":null,"past_year_avg_time_to_close_pull_request":null,"past_year_issues_closed_count":0,"past_year_pull_requests_closed_count":0,"past_year_pull_request_authors_count":0,"past_year_issue_authors_count":0,"past_year_avg_comments_per_issue":null,"past_year_avg_comments_per_pull_request":null,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":0,"created_at":"2023-05-12T12:05:57.709Z","updated_at":"2026-03-20T23:33:57.107Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/socketry%2Fhttp-accept/issues","issue_labels_count":{},"pull_request_labels_count":{"github_actions":1,"dependencies":1},"issue_author_associations_count":{"NONE":1},"pull_request_author_associations_count":{"NONE":2,"MEMBER":1,"CONTRIBUTOR":1},"issue_authors":{"pdoconnell":1},"pull_request_authors":{"alexisbernard":2,"ioquatix":1,"dependabot[bot]":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-09T00:00:10.509Z","repositories_count":14210836,"issues_count":34657220,"pull_requests_count":113242396,"authors_count":11232570,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{},"past_year_pull_request_author_associations_count":{},"past_year_issue_authors":{},"past_year_pull_request_authors":{},"maintainers":[{"login":"ioquatix","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ioquatix"}],"active_maintainers":[]},"events":{"total":{"MemberEvent":2,"PullRequestEvent":4,"ForkEvent":1,"WatchEvent":5,"IssueCommentEvent":2,"PushEvent":2,"PullRequestReviewEvent":2},"last_year":{"MemberEvent":2,"WatchEvent":3}},"keywords":["http","http-client","http-server","parsing"],"dependencies":[{"ecosystem":"rubygems","filepath":"gems.rb","sha":null,"kind":"manifest","created_at":"2022-09-07T17:51:34.027Z","updated_at":"2022-09-07T17:51:34.027Z","repository_link":"https://github.com/socketry/http-accept/blob/main/gems.rb","dependencies":[{"id":4124762400,"package_name":"bake-modernize","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false},{"id":4124762401,"package_name":"bake-gem","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"runtime","optional":false}]},{"ecosystem":"rubygems","filepath":"http-accept.gemspec","sha":null,"kind":"manifest","created_at":"2022-09-07T17:51:34.349Z","updated_at":"2022-09-07T17:51:34.349Z","repository_link":"https://github.com/socketry/http-accept/blob/main/http-accept.gemspec","dependencies":[{"id":4124765180,"package_name":"bundler","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":4124765181,"package_name":"covered","ecosystem":"rubygems","requirements":"\u003e= 0","direct":true,"kind":"development","optional":false},{"id":4124765182,"package_name":"rspec","ecosystem":"rubygems","requirements":"~\u003e 3.0","direct":true,"kind":"development","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/coverage.yaml","sha":null,"kind":"manifest","created_at":"2024-06-18T14:07:58.843Z","updated_at":"2024-06-18T14:07:58.843Z","repository_link":"https://github.com/socketry/http-accept/blob/main/.github/workflows/coverage.yaml","dependencies":[{"id":18677131139,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18677131140,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":18677131141,"package_name":"actions/upload-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":18677131142,"package_name":"actions/download-artifact","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/documentation.yaml","sha":null,"kind":"manifest","created_at":"2024-06-18T14:07:59.202Z","updated_at":"2024-06-18T14:07:59.202Z","repository_link":"https://github.com/socketry/http-accept/blob/main/.github/workflows/documentation.yaml","dependencies":[{"id":18677131145,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18677131146,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false},{"id":18677131147,"package_name":"actions/upload-pages-artifact","ecosystem":"actions","requirements":"v2","direct":true,"kind":"composite","optional":false},{"id":18677131148,"package_name":"actions/deploy-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test-external.yaml","sha":null,"kind":"manifest","created_at":"2024-06-18T14:07:59.449Z","updated_at":"2024-06-18T14:07:59.449Z","repository_link":"https://github.com/socketry/http-accept/blob/main/.github/workflows/test-external.yaml","dependencies":[{"id":18677131149,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18677131150,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yaml","sha":null,"kind":"manifest","created_at":"2024-06-18T14:07:59.886Z","updated_at":"2024-06-18T14:07:59.886Z","repository_link":"https://github.com/socketry/http-accept/blob/main/.github/workflows/test.yaml","dependencies":[{"id":18677131151,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false},{"id":18677131152,"package_name":"ruby/setup-ruby","ecosystem":"actions","requirements":"v1","direct":true,"kind":"composite","optional":false}]}],"score":null,"created_at":"2025-01-22T00:01:33.044Z","updated_at":"2026-04-30T04:03:16.532Z","avatar_url":"https://github.com/socketry.png","language":"Ruby","monthly_downloads":0,"readme":"# HTTP::Accept\n\nProvides a robust set of parsers for dealing with HTTP `Accept`, `Accept-Language`, `Accept-Encoding`, `Accept-Charset` headers.\n\n[![Development Status](https://github.com/socketry/http-accept/workflows/Test/badge.svg)](https://github.com/socketry/http-accept/actions?workflow=Test)\n\n## Motivation\n\nI've been [developing some tools for building RESTful endpoints](https://github.com/ioquatix/utopia/blob/master/lib/utopia/controller/respond.rb) and part of that involved versioning. After reviewing the options, I settled on using the `Accept: application/json;version=1` method [as outlined here](http://labs.qandidate.com/blog/2014/10/16/using-the-accept-header-to-version-your-api/).\n\nThe `version=1` part of the `media-type` is a `parameter` as defined by [RFC7231 Section 3.1.1.1](https://tools.ietf.org/html/rfc7231#section-3.1.1.1). After reviewing several existing different options for parsing the `Accept:` header, I noticed a disturbing trend: `header.split(',')`. Because parameters may contain quoted strings which contain commas, this is clearly not an appropriate way to parse the header.\n\nI am concerned about correctness, security and performance. As such, I implemented this gem to provide a simple high level interface for both parsing and correctly interpreting these headers.\n\n## Installation\n\nAdd this line to your application's Gemfile:\n\n``` ruby\ngem 'http-accept'\n```\n\nAnd then execute:\n\n    $ bundle\n\nOr install it yourself as:\n\n    $ gem install http-accept\n\nYou can then require it in your code like so:\n\n``` ruby\nrequire 'http/accept'\n```\n\n## Usage\n\nHere are some examples of how to parse various headers.\n\n### Parsing Accept: headers\n\nYou can parse the incoming `Accept:` header:\n\n``` ruby\nmedia_types = HTTP::Accept::MediaTypes.parse(\"text/html;q=0.5, application/json; version=1\")\n\nexpect(media_types[0].mime_type).to be == \"application/json\"\nexpect(media_types[0].parameters).to be == {'version' =\u003e '1'}\nexpect(media_types[1].mime_type).to be == \"text/html\"\nexpect(media_types[1].parameters).to be == {'q' =\u003e '0.5'}\n```\n\nNormally, you'd want to match the media types against some set of available mime types:\n\n``` ruby\nmodule ToJSON\n  def content_type\n    HTTP::Accept::ContentType.new(\"application\", \"json\", charset: 'utf-8')\n  end\n\n  # Used for inserting into map.\n  def split(*args)\n    content_type.split(*args)\n  end\n\n  def convert(object, options)\n    object.to_json\n  end\nend\n\nmodule ToXML\n  # Are you kidding?\nend\n\nmap = HTTP::Accept::MediaTypes::Map.new\nmap \u003c\u003c ToJSON\nmap \u003c\u003c ToXML\n\nobject, media_range = map.for(media_types)\ncontent = object.convert(model, media_range.parameters)\nresponse = [200, {'Content-Type' =\u003e object.content_type}, [content]]\n```\n\n### Parsing Accept-Language: headers\n\nYou can parse the incoming `Accept-Language:` header:\n\n``` ruby\nlanguages = HTTP::Accept::Languages.parse(\"da, en-gb;q=0.8, en;q=0.7\")\n\nexpect(languages[0].locale).to be == \"da\"\nexpect(languages[1].locale).to be == \"en-gb\"\nexpect(languages[2].locale).to be == \"en\"\n```\n\nNormally, you'd want to match the languages against some set of available localizations:\n\n``` ruby\navailable_localizations = HTTP::Accept::Languages::Locales.new([\"en-nz\", \"en-us\"])\n\n# Given the languages that the user wants, and the localizations available, compute the set of desired localizations.\ndesired_localizations = available_localizations \u0026 languages\n```\n\nThe `desired_localizations` in the example above is a subset of `available_localizations`.\n\n`HTTP::Accept::Languages::Locales` provides an efficient data-structure for matching the Accept-Languages header to set of available localizations according to \u003chttps://tools.ietf.org/html/rfc7231#section-5.3.5\u003e and \u003chttps://tools.ietf.org/html/rfc4647#section-2.3\u003e\n\n## Contributing\n\nWe welcome contributions to this project.\n\n1.  Fork it.\n2.  Create your feature branch (`git checkout -b my-new-feature`).\n3.  Commit your changes (`git commit -am 'Add some feature'`).\n4.  Push to the branch (`git push origin my-new-feature`).\n5.  Create new Pull Request.\n\n### Developer Certificate of Origin\n\nThis project uses the [Developer Certificate of Origin](https://developercertificate.org/). All contributors to this project must agree to this document to have their contributions accepted.\n\n### Contributor Covenant\n\nThis project is governed by the [Contributor Covenant](https://www.contributor-covenant.org/). All contributors and participants agree to abide by its terms.\n","funding_links":["https://github.com/socketry/community/#funding","https://github.com/sponsors/ioquatix"],"readme_doi_urls":[],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["documentation-tool","ruby-cli","ruby-gem","rubygems","feature-flag"],"project_url":"https://ruby.ecosyste.ms/api/v1/projects/2250","html_url":"https://ruby.ecosyste.ms/projects/2250"}