{"id":13610074,"url":"https://github.com/edgurgel/httparrot","last_synced_at":"2025-04-05T15:10:07.578Z","repository":{"id":12807784,"uuid":"15482672","full_name":"edgurgel/httparrot","owner":"edgurgel","description":"HTTP Request \u0026 Response Server. An incomplete clone of http://httpbin.org","archived":false,"fork":false,"pushed_at":"2024-06-26T09:55:19.000Z","size":205,"stargazers_count":86,"open_issues_count":1,"forks_count":27,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-03-29T14:12:31.551Z","etag":null,"topics":["http","httpbin","integration-testing"],"latest_commit_sha":null,"homepage":"https://httparrot.onrender.com/","language":"Elixir","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/edgurgel.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}},"created_at":"2013-12-27T21:59:00.000Z","updated_at":"2024-08-09T09:45:33.000Z","dependencies_parsed_at":"2024-06-26T11:01:53.689Z","dependency_job_id":null,"html_url":"https://github.com/edgurgel/httparrot","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgurgel%2Fhttparrot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgurgel%2Fhttparrot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgurgel%2Fhttparrot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/edgurgel%2Fhttparrot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/edgurgel","download_url":"https://codeload.github.com/edgurgel/httparrot/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247353749,"owners_count":20925329,"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":["http","httpbin","integration-testing"],"created_at":"2024-08-01T19:01:40.972Z","updated_at":"2025-04-05T15:10:07.537Z","avatar_url":"https://github.com/edgurgel.png","language":"Elixir","funding_links":[],"categories":["Elixir"],"sub_categories":[],"readme":"# HTTParrot\n\n[![Build Status](https://travis-ci.org/edgurgel/httparrot.png?branch=master)](https://travis-ci.org/edgurgel/httparrot)\n[![Module Version](https://img.shields.io/hexpm/v/httparrot.svg)](https://hex.pm/packages/httparrot)\n[![Hex Docs](https://img.shields.io/badge/hex-docs-lightgreen.svg)](https://hexdocs.pm/httparrot/)\n[![Total Download](https://img.shields.io/hexpm/dt/httparrot.svg)](https://hex.pm/packages/httparrot)\n[![License](https://img.shields.io/hexpm/l/httparrot.svg)](https://github.com/edgurgel/httparrot/blob/master/LICENSE.md)\n[![Last Updated](https://img.shields.io/github/last-commit/edgurgel/httparrot.svg)](https://github.com/edgurgel/httparrot/commits/master)\n\nHTTP server built on top of [Cowboy](https://hex.pm/packages/cowboy) using (mostly) `cowboy_rest` handlers to serve useful endpoints for testing purposes. Its goal is to be as close as possible to [HTTPBin](http://httpbin.org).\n\n## Endpoints\n\n* `/` This page.\n* `/ip` Returns Origin IP.\n* `/user-agent` Returns user-agent.\n* `/headers` Returns header dict.\n* `/get` Returns GET data.\n* `/post` Returns POST data.\n* `/put` Returns PUT data.\n* `/patch` Returns PATCH data.\n* `/delete` Returns DELETE data\n* `/gzip` Returns gzip-encoded data.\n* `/status/:code` Returns given HTTP Status code.\n* `/response-headers?key=val` Returns given response headers.\n* `/redirect/:n` 301 Redirects n times.\n* `/redirect-to?url=foo` 301 Redirects to the foo URL.\n* `/relative-redirect/:n` 301 Relative redirects n times.\n* `/cookies` Returns cookie data.\n* `/cookies/set?name=value` Sets one or more simple cookies.\n* `/cookies/set/name/value` Sets one cookie .\n* `/cookies/delete?name` Deletes one or more simple cookies.\n* `/basic-auth/:user/:passwd` Challenges HTTPBasic Auth.\n* `/hidden-basic-auth/:user/:passwd` 404'd BasicAuth.\n* `/digest-auth/:qop/:user/:passwd` Challenges HTTP Digest Auth.\n* `/stream/:n` Streams n–100 lines.\n* `/delay/:n` Delays responding for n–10 seconds.\n* `/html` Renders an HTML Page.\n* `/robots.txt` Returns some robots.txt rules.\n* `/deny` Denied by robots.txt file.\n* `/cache` Returns 200 unless an If-Modified-Since header is provided, when it returns a 304 Not Modified.\n* `/base64/:value` Decodes base64url-encoded string.\n* `/image` Return an image based on Accept header.\n* `/websocket` Echo message received through websocket\n\n## TODO\n\n* [ ] `/deflate` Returns deflate-encoded data.\n* [ ] `/digest-auth/:qop/:user/:passwd` Challenges HTTP Digest Auth.\n\n## Copyright and License\n\nCopyright (c) 2013 Eduardo Gurgel \u003ceduardo@gurgel.me\u003e\n\nThis work is free. You can redistribute it and/or modify it under the\nterms of the MIT License. See the [LICENSE.md](./LICENSE.md) file for more details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgurgel%2Fhttparrot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fedgurgel%2Fhttparrot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fedgurgel%2Fhttparrot/lists"}