{"id":36890724,"url":"https://github.com/thewraven/cache","last_synced_at":"2026-01-12T15:36:20.559Z","repository":{"id":126156020,"uuid":"119483313","full_name":"thewraven/cache","owner":"thewraven","description":"A boring, dead simple http proxy.","archived":false,"fork":false,"pushed_at":"2020-05-19T21:36:01.000Z","size":8,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-06-20T15:45:10.740Z","etag":null,"topics":["go","http","http-mocking","http-proxy"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/thewraven.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":"2018-01-30T04:40:39.000Z","updated_at":"2020-05-19T21:25:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"b266e975-0c73-4d66-8b00-5f5f6608a71e","html_url":"https://github.com/thewraven/cache","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/thewraven/cache","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewraven%2Fcache","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewraven%2Fcache/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewraven%2Fcache/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewraven%2Fcache/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thewraven","download_url":"https://codeload.github.com/thewraven/cache/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thewraven%2Fcache/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28341050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["go","http","http-mocking","http-proxy"],"created_at":"2026-01-12T15:36:20.443Z","updated_at":"2026-01-12T15:36:20.549Z","avatar_url":"https://github.com/thewraven.png","language":"Go","readme":"# Cache\n\n## What exactly `cache` does?\n\nThe purpose of `cache` is to create N HTTP server proxies that intercept requests, make the request to the actual server and persists both request and response info (body + headers). Then the client receives the response transparently. If somebody requests the same resource again, it will get\nthe `cached` response.\n\n## Why?\n\nWith `cache`, you can make quick n' dirty integration tests. Sometimes you don't have the time to mock all your services, or you have to replicate an special scenario or play around with the header responses. `Cache` helps you to inspect your requests and responses.\n\n## Installation\n\nIf you have a `Go` installation you can get the development version:\n\n\u003e go get -u github.com/thewraven/cache\n\nthe fresh binary is in your `$GOPATH/bin` folder.\n\n\nIf you want a ready-to-use binary, you can grab'em [here](https://github.com/thewraven/cache/releases).\n\n## Usage\n\n\u003e cache -config yourservers.json\n\n`yourservers.json` defines the proxies that will be run.\n\nThis is an example of a simple server configuration.\n\n* Remote: the `ip:port` of the real server.\n* Local: the `ip:port` of the proxy.\n* Cache: if it is set to `true`, it'll reuse the latest response of the real server.\n* Timeout (minutes): After `x` minutes, the latest server response will be invalidated.\n* Cache_path: Folder when the requests and responses will be persisted.\n\nYou can define an array of configurations, `cache` will spawn as many servers as required.\n\n```json\n[\n    {\n        \"remote\": \"yourrealserver.com:8888\",\n        \"local\": \":9999\",\n        \"cache\": true,\n        \"timeout_minutes\": 10,\n        \"cache_path\": \"your_cache_folder\"\n    }\n]\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthewraven%2Fcache","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthewraven%2Fcache","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthewraven%2Fcache/lists"}