{"id":13413828,"url":"https://github.com/sinhashubham95/moxy","last_synced_at":"2026-01-26T06:31:24.127Z","repository":{"id":40262174,"uuid":"386844789","full_name":"sinhashubham95/moxy","owner":"sinhashubham95","description":"Mocker + Proxy Application","archived":false,"fork":false,"pushed_at":"2022-05-17T14:36:53.000Z","size":95,"stargazers_count":12,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-07-31T20:52:54.129Z","etag":null,"topics":["docker","go","golang","heroku"],"latest_commit_sha":null,"homepage":"https://mocker-proxy.herokuapp.com/","language":"Go","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/sinhashubham95.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":"2021-07-17T05:21:41.000Z","updated_at":"2023-11-14T12:20:11.000Z","dependencies_parsed_at":"2022-08-17T21:45:17.744Z","dependency_job_id":null,"html_url":"https://github.com/sinhashubham95/moxy","commit_stats":null,"previous_names":[],"tags_count":23,"template":false,"template_full_name":null,"purl":"pkg:github/sinhashubham95/moxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinhashubham95%2Fmoxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinhashubham95%2Fmoxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinhashubham95%2Fmoxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinhashubham95%2Fmoxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinhashubham95","download_url":"https://codeload.github.com/sinhashubham95/moxy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinhashubham95%2Fmoxy/sbom","scorecard":{"id":827185,"data":{"date":"2025-08-11","repo":{"name":"github.com/sinhashubham95/moxy","commit":"d0dd21806ff735611432b0539853ead1858fa01e"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/17 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Pinned-Dependencies","score":4,"reason":"dependency not pinned by hash detected -- score normalized to 4","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:20: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:32: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:44: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:54: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:28: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:38: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:48: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:51: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/release.yml:56: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:59: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/release.yml:64: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/release.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/test.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/test.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/sinhashubham95/moxy/test.yml/master?enable=pin","Warn: containerImage not pinned by hash: Dockerfile:2","Info:   0 out of  11 GitHub-owned GitHubAction dependencies pinned","Info:   3 out of   8 third-party GitHubAction dependencies pinned","Info:   0 out of   1 containerImage dependencies pinned","Info:   4 out of   4 goCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Warn: no topLevel permission defined: .github/workflows/release.yml:1","Warn: no topLevel permission defined: .github/workflows/test.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.4 not signed: https://api.github.com/repos/sinhashubham95/moxy/releases/55160829","Warn: release artifact v1.0.3 not signed: https://api.github.com/repos/sinhashubham95/moxy/releases/47762758","Warn: release artifact v1.0.2 not signed: https://api.github.com/repos/sinhashubham95/moxy/releases/46901013","Warn: release artifact v1.0.1 not signed: https://api.github.com/repos/sinhashubham95/moxy/releases/46895400","Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/sinhashubham95/moxy/releases/46881817","Warn: release artifact v1.0.4 does not have provenance: https://api.github.com/repos/sinhashubham95/moxy/releases/55160829","Warn: release artifact v1.0.3 does not have provenance: https://api.github.com/repos/sinhashubham95/moxy/releases/47762758","Warn: release artifact v1.0.2 does not have provenance: https://api.github.com/repos/sinhashubham95/moxy/releases/46901013","Warn: release artifact v1.0.1 does not have provenance: https://api.github.com/repos/sinhashubham95/moxy/releases/46895400","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/sinhashubham95/moxy/releases/46881817"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 24 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":9,"reason":"1 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GO-2022-0355 / GHSA-fx95-883v-4q4h"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-23T16:50:37.526Z","repository_id":40262174,"created_at":"2025-08-23T16:50:37.526Z","updated_at":"2025-08-23T16:50:37.526Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28768335,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-26T03:54:34.369Z","status":"ssl_error","status_checked_at":"2026-01-26T03:54:33.031Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["docker","go","golang","heroku"],"created_at":"2024-07-30T20:01:50.521Z","updated_at":"2026-01-26T06:31:24.092Z","avatar_url":"https://github.com/sinhashubham95.png","language":"Go","readme":"# Moxy\n\n[![GoDoc](https://godoc.org/github.com/sinhashubham95/moxy?status.svg)](https://pkg.go.dev/github.com/sinhashubham95/moxy)\n[![Release](https://img.shields.io/github/v/release/sinhashubham95/moxy?sort=semver)](https://github.com/sinhashubham95/moxy/releases)\n[![Report](https://goreportcard.com/badge/github.com/sinhashubham95/moxy)](https://goreportcard.com/report/github.com/sinhashubham95/moxy)\n[![Coverage Status](https://coveralls.io/repos/github/sinhashubham95/moxy/badge.svg?branch=master)](https://coveralls.io/github/sinhashubham95/moxy?branch=master)\n[![Mentioned in Awesome Go](https://awesome.re/mentioned-badge.svg)](https://github.com/avelino/awesome-go#server-applications)\n\nMoxy is a simple mocker and proxy application server. Here you can create mock endpoints as well as proxy requests in case no mock exists for the endpoint.\n\n## How it works\n\n![Moxy Architecture Diagram](./moxy.png)\n\n## Features\n\n### Small, Pragmatic and Easy to Use\n\n- Dockerized\n\n- Compiled\n\n- Easily configurable via Environment Variables\n\n- Self-contained, does not require Go or any other dependency, just run the binary or the container\n\n### File-based Persistence\n\n- No heavy database involved.\n\n- Saves the mock endpoints in files.\n\n### Security\n\n- TLS can be enabled by providing your own SSL/TLS Certificates.\n\n### Reliability\n\n- Uses [Go Actuator](https://github.com/sinhashubham95/go-actuator)\n\n- Fully Tested, Unit, Functional \u0026 Linted \u0026 0 Race Conditions Detected.\n\n### Customizations\n\n- Mock endpoints created are highly customizable.\n\n- Application port can be configured via the environment variable.\n\n- Database file path can be configured via the environment variable.\n\n## Project Versioning\n\nMoxy uses [semantic versioning](http://semver.org/). No API changes will be introduced in the minor and patch version changes. New minor versions might add additional features to the API.\n\n## Getting Started(standalone application)\n\nYou can download a pre-compiled package for Linux or MAC OSX [here](https://github.com/sinhashubham95/moxy/releases/latest).\n\nYou can also pull the latest docker image for Moxy from [Docker Hub](https://github.com/sinhashubham95/moxy/pkgs/container/moxy).\n\n```shell\ndocker pull ghcr.io/sinhashubham95/moxy:latest\n```\n\nCreate an empty directory, change into it and run the following to start Moxy:\n\n```shell\ndocker run --rm --user $(id -u):$(id -g) -v $PWD:/data -p 9091:9091 sinhashubham95/moxy -host 0.0.0.0\n```\n\nThe container will have access to the current local directory and all sub-folders.\n\n## Usage\n\n### Mock - POST /moxy/mock\n\nThis is used to create a new mock endpoint. Each mock endpoint created can be tagged, which means you can create multiple mocks for the same endpoint.\n\n```http request\nPOST /moxy/mock\n\n{\n    \"tag\": \"\",\n    \"method\": \"\",\n    \"path\": \"\",\n    \"responseDelayInMillis\": 0,\n    \"responseStatus\": 0,\n    \"responseBody\": {}\n}\n```\n\n1. **Tag**: This is used to tag the created mock endpoint. It is used to set the context for this endpoint. You can have many instances of the same endpoint.\n\n2. **Method**: This is the request method for this endpoint. It can either be `GET`, `POST`, `PUT ` or `DELETE`.\n\n3. **Path**: This is the request path for this endpoint. Note that the request path should not start with either `/actuator` or `/moxy`.\n\n4. **Response Delay In Millis**: This is the delay added before actually returned the mocked response. Note that this delay is over and above the delay added over the network. In other words, this is the server side delay. It can be useful in testing the resiliency of the applications using this endpoint and testing the timeout functionality.\n\n5. **Response Status**: This is the status code for the mocked response. It should be in the range of a valid HTTP status code which is `\u003e=100` and `\u003c= 599`.\n\n6. **Response Body**: This is the response body for the mocked response. If it is a JSON, it can be provided as a JSON body itself, but anything apart from JSON has to be converted to a string and sent. Don't worry the mocked response will be returned with the correct type, that will be taken care of automatically. \n\n### Remove Mock - DELETE /moxy/unMock\n\nThis is used to remove the existing mock endpoint.\n\n```http request\nDELETE /moxy/unMock\n\n{\n    \"tag\": \"\",\n    \"method\": \"\",\n    \"path\": \"\"\n}\n```\n\n1. **Tag**: This is used to tag the created mock endpoint. It is used to set the context for this endpoint. You can have many instances of the same endpoint.\n\n2. **Method**: This is the request method for this endpoint. It can either be `GET`, `POST`, `PUT ` or `DELETE`.\n\n3. **Path**: This is the request path for this endpoint. Note that the request path should not start with either `/actuator` or `/moxy`.\n\n### Calling any Endpoint\n\nThis is used to call any endpoint. If any mock exists for that endpoint, then the mocked response will be returned, otherwise the actual endpoint will be called.\n\nThe following 2 mandatory headers should be passed with any such request.\n\n1. **Tag(X-Tag)**: This is the tag used while creating the mock endpoint, to query the mock for the current context.\n\n2. **Actual Base Url(X-Url)**: This is the actual url that will be used to call the actual endpoint, or basically proxy to the actual server, in case no mock exists.\n\n## Example(Using the following actual endpoint - https://www.google.co.in/imghp)\n\nCreate a mock endpoint as follows.\n\n```http request\nPOST /moxy/mock\n\n{\n    \"tag\": \"1234\",\n    \"method\": \"GET\",\n    \"path\": \"/imghp\",\n    \"responseDelayInMillis\": 200,\n    \"responseStatus\": 200,\n    \"responseBody\": {\n        \"naruto\": \"rocks\"\n    }\n}\n```\n\nCreate another mock endpoint with the same request method and path but a different context(tag).\n\n```http request\nPOST /moxy/mock\n\n{\n    \"tag\": \"5678\",\n    \"method\": \"GET\",\n    \"path\": \"/imghp\",\n    \"responseDelayInMillis\": 200,\n    \"responseStatus\": 200,\n    \"responseBody\": \"naruto always rocks\"\n}\n```\n\nTry calling this endpoint with the first tag.\n\n```http request\nGET /naruto\n\nX-Tag 1234\nX-Url https://www.google.co.in\n```\n\nYou will get the following response.\n\n```json\n{\n  \"naruto\": \"rocks\"\n}\n```\n\nNow if you call this with the second tag.\n\n```http request\nGET /naruto\n\nX-Tag 5678\nX-Url https://www.google.co.in\n```\n\nYou will get the following response.\n\n```text\nnaruto always rocks\n```\n\nNow try deleting the mock for the first tag.\n\n```http request\nDELETE /moxy/unMock\n\n{\n    \"tag\": \"1234\",\n    \"method\": \"GET\",\n    \"path\": \"/imghp\"\n}\n```\n\nNow again try calling the endpoint with the first tag.\n\n```http request\nGET /naruto\n\nX-Tag 1234\nX-Url https://www.google.co.in\n```\n\nThe actual endpoint will be called, and the following response you could see.\n\n```html\n\u003c!doctype html\u003e\u003chtml itemscope=\"\" itemtype=\"http://schema.org/WebPage\" lang=\"en-IN\"\u003e\u003chead\u003e\u003cmeta content=\"Google Images. The most comprehensive image search on the web.\" name=\"description\"\u003e\u003cmeta content=\"text/html; charset=UTF-8\" http-equiv=\"Content-Type\"\u003e\u003cmeta content=\"/images/branding/googleg/1x/googleg_standard_color_128dp.png\" itemprop=\"image\"\u003e\u003ctitle\u003eGoogle Images\u003c/title\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){window.google={kEI:'Lh_9YKabNIOI-Abk-5CoCg',kEXPI:'0,772215,1,530320,56873,954,755,4350,206,4804,926,1390,383,246,5,1354,5251,1122515,1197765,518,328984,51224,16114,28684,17572,4859,1361,3472,5819,3023,3894,13691,4020,978,13228,3847,4192,6430,1141,7512,5875,234,4282,2778,919,5081,1593,1279,2212,239,291,149,1943,1987,210,4100,108,3406,606,2025,2295,14670,604,2623,2845,7,5599,6755,5096,7876,5037,3407,908,2,941,2614,13142,3,576,1014,1,5444,149,11323,2652,4,1528,2304,1236,5226,577,74,1983,2626,2015,4067,7434,2110,1714,3050,2658,4242,3114,31,13628,2305,639,7079,3772,3494,3269,665,2522,3287,2320,228,992,3102,20,3118,8,906,3,1324,2217,2,8994,5715,1816,281,38,874,5998,12520,2,1394,1525,8,1273,1715,2,3057,723,2,1813,2,1,3,3004,20,1214,3,33,3,5388,3,90,594,784,310,3,435,2379,2422,1274,4578,1576,3,471,578,3,1066,172,3412,2039,101,2,1040,1160,1266,3,3426,2,1712,290,2381,1575,1144,3482,1063,3,123,24,724,3857,758,1447,86,2370,12,2,1458,72,223,2130,408,2,2,5,1858,442,117,394,1996,6,54,70,899,1513,335,87,172,383,51,275,894,158,190,141,427,47,281,85,3,832,280,83,266,1387,523,1258,296,612,1290,332,558,462,123,658,233,635,1609,696,158,434,153,209,1265,103,231,8,316,5609465,99,91,36,220,58,2,69,5996740,2800696,882,444,1,2,80,1,1796,1,9,2,2551,1,748,141,795,563,1,4265,1,1,2,1331,3299,843,2609,155,17,13,72,139,4,2,20,2,169,13,19,46,5,39,96,548,29,2,2,1,2,1,2,2,7,4,1,2,2,2,2,2,2,312,41,513,186,1,1,158,3,2,2,2,2,2,4,2,3,3,236,22,6,5,10,40,2,15,23654791,299865,2867254,1171783,7,2307,277,61,3,2340,74,538,542,5,1701,772339',kBL:'k8M4'};google.sn='imghp';google.kHL='en-IN';})();(function(){\nvar f=this||self;var h,k=[];function l(a){for(var b;a\u0026\u0026(!a.getAttribute||!(b=a.getAttribute(\"eid\")));)a=a.parentNode;return b||h}function m(a){for(var b=null;a\u0026\u0026(!a.getAttribute||!(b=a.getAttribute(\"leid\")));)a=a.parentNode;return b}\nfunction n(a,b,c,d,g){var e=\"\";c||-1!==b.search(\"\u0026ei=\")||(e=\"\u0026ei=\"+l(d),-1===b.search(\"\u0026lei=\")\u0026\u0026(d=m(d))\u0026\u0026(e+=\"\u0026lei=\"+d));d=\"\";!c\u0026\u0026f._cshid\u0026\u0026-1===b.search(\"\u0026cshid=\")\u0026\u0026\"slh\"!==a\u0026\u0026(d=\"\u0026cshid=\"+f._cshid);c=c||\"/\"+(g||\"gen_204\")+\"?atyp=i\u0026ct=\"+a+\"\u0026cad=\"+b+e+\"\u0026zx=\"+Date.now()+d;/^http:/i.test(c)\u0026\u0026\"https:\"===window.location.protocol\u0026\u0026(google.ml\u0026\u0026google.ml(Error(\"a\"),!1,{src:c,glmm:1}),c=\"\");return c};h=google.kEI;google.getEI=l;google.getLEI=m;google.ml=function(){return null};google.log=function(a,b,c,d,g){if(c=n(a,b,c,d,g)){a=new Image;var e=k.length;k[e]=a;a.onerror=a.onload=a.onabort=function(){delete k[e]};a.src=c}};google.logUrl=n;}).call(this);(function(){\ngoogle.y={};google.sy=[];google.x=function(a,b){if(a)var c=a.id;else{do c=Math.random();while(google.y[c])}google.y[c]=[a,b];return!1};google.sx=function(a){google.sy.push(a)};google.lm=[];google.plm=function(a){google.lm.push.apply(google.lm,a)};google.lq=[];google.load=function(a,b,c){google.lq.push([[a],b,c])};google.loadAll=function(a,b){google.lq.push([a,b])};google.bx=!1;google.lx=function(){};}).call(this);google.f={};(function(){\ndocument.documentElement.addEventListener(\"submit\",function(b){var a;if(a=b.target){var c=a.getAttribute(\"data-submitfalse\");a=\"1\"==c||\"q\"==c\u0026\u0026!a.elements.q.value?!0:!1}else a=!1;a\u0026\u0026(b.preventDefault(),b.stopPropagation())},!0);document.documentElement.addEventListener(\"click\",function(b){var a;a:{for(a=b.target;a\u0026\u0026a!=document.documentElement;a=a.parentElement)if(\"A\"==a.tagName){a=\"1\"==a.getAttribute(\"data-nohref\");break a}a=!1}a\u0026\u0026b.preventDefault()},!0);}).call(this);\u003c/script\u003e\u003cstyle\u003e#gbar,#guser{font-size:13px;padding-top:1px !important;}#gbar{height:22px}#guser{padding-bottom:7px !important;text-align:right}.gbh,.gbd{border-top:1px solid #c9d7f1;font-size:1px}.gbh{height:0;position:absolute;top:24px;width:100%}@media all{.gb1{height:22px;margin-right:.5em;vertical-align:top}#gbar{float:left}}a.gb1,a.gb4{text-decoration:underline !important}a.gb1,a.gb4{color:#00c !important}.gbi .gb4{color:#dd8e27 !important}.gbf .gb4{color:#900 !important}\n\u003c/style\u003e\u003cstyle\u003ebody,td,a,p,.h{font-family:arial,sans-serif}body{margin:0;overflow-y:scroll}#gog{padding:3px 8px 0}td{line-height:.8em}.gac_m td{line-height:17px}form{margin-bottom:20px}.h{color:#1558d6}em{font-weight:bold;font-style:normal}.lst{height:25px;width:496px}.gsfi,.lst{font:18px arial,sans-serif}.gsfs{font:17px arial,sans-serif}.ds{display:inline-box;display:inline-block;margin:3px 0 4px;margin-left:4px}input{font-family:inherit}body{background:#fff;color:#000}a{color:#4b11a8;text-decoration:none}a:hover,a:active{text-decoration:underline}.fl a{color:#1558d6}a:visited{color:#4b11a8}.sblc{padding-top:5px}.sblc a{display:block;margin:2px 0;margin-left:13px;font-size:11px}.lsbb{background:#f8f9fa;border:solid 1px;border-color:#dadce0 #70757a #70757a #dadce0;height:30px}.lsbb{display:block}#WqQANb a{display:inline-block;margin:0 12px}.lsb{background:url(/images/nav_logo229.png) 0 -261px repeat-x;border:none;color:#000;cursor:pointer;height:30px;margin:0;outline:0;font:15px arial,sans-serif;vertical-align:top}.lsb:active{background:#dadce0}.lst:focus{outline:none}.prms{color:#c5221f;font-size:13px}.sshppd{font-size:13px;margin:32px 0 26px}.sshpplo span{color:#c5221f}.sshpplt{margin:15px 0 30px}\u003c/style\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e\u003c/script\u003e\u003c/head\u003e\u003cbody bgcolor=\"#fff\"\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){var src='/images/nav_logo229.png';var iesg=false;document.body.onload = function(){window.n \u0026\u0026 window.n();if (document.images){new Image().src=src;}\nif (!iesg){document.f\u0026\u0026document.f.q.focus();document.gbqf\u0026\u0026document.gbqf.q.focus();}\n}\n})();\u003c/script\u003e\u003cdiv id=\"mngb\"\u003e\u003cdiv id=gbar\u003e\u003cnobr\u003e\u003ca class=gb1 href=\"https://www.google.co.in/webhp?tab=iw\"\u003eSearch\u003c/a\u003e\u003cb class=gb1\u003eImages\u003c/b\u003e\u003ca class=gb1 href=\"https://maps.google.co.in/maps?hl=en\u0026tab=il\"\u003eMaps\u003c/a\u003e\u003ca class=gb1 href=\"https://play.google.com/?hl=en\u0026tab=i8\"\u003ePlay\u003c/a\u003e\u003ca class=gb1 href=\"https://www.youtube.com/?gl=IN\u0026tab=i1\"\u003eYouTube\u003c/a\u003e\u003ca class=gb1 href=\"https://news.google.com/?tab=in\"\u003eNews\u003c/a\u003e\u003ca class=gb1 href=\"https://mail.google.com/mail/?tab=im\"\u003eGmail\u003c/a\u003e\u003ca class=gb1 href=\"https://drive.google.com/?tab=io\"\u003eDrive\u003c/a\u003e\u003ca class=gb1 style=\"text-decoration:none\" href=\"https://www.google.co.in/intl/en/about/products?tab=ih\"\u003e\u003cu\u003eMore\u003c/u\u003e \u0026raquo;\u003c/a\u003e\u003c/nobr\u003e\u003c/div\u003e\u003cdiv id=guser width=100%\u003e\u003cnobr\u003e\u003cspan id=gbn class=gbi\u003e\u003c/span\u003e\u003cspan id=gbf class=gbf\u003e\u003c/span\u003e\u003cspan id=gbe\u003e\u003c/span\u003e\u003ca href=\"http://www.google.co.in/history/optout?hl=en\" class=gb4\u003eWeb History\u003c/a\u003e |\u003ca  href=\"/preferences?hl=en\" class=gb4\u003eSettings\u003c/a\u003e |\u003ca target=_top id=gb_70 href=\"https://accounts.google.com/ServiceLogin?hl=en\u0026passive=true\u0026continue=https://www.google.co.in/imghp\u0026ec=GAZAAg\" class=gb4\u003eSign in\u003c/a\u003e\u003c/nobr\u003e\u003c/div\u003e\u003cdiv class=gbh style=left:0\u003e\u003c/div\u003e\u003cdiv class=gbh style=right:0\u003e\u003c/div\u003e\u003c/div\u003e\u003ccenter\u003e\u003cbr clear=\"all\" id=\"lgpd\"\u003e\u003cdiv id=\"lga\"\u003e\u003cdiv style=\"padding:28px 0 3px\"\u003e\u003cdiv style=\"height:110px;width:276px;background:url(/intl/en_ALL/images/branding/googlelogo/1x/googlelogo_white_background_color_272x92dp.png) no-repeat\" title=\"Google Images\" align=\"left\" id=\"hplogo\"\u003e\u003cdiv style=\"font-size:16px;font-weight:bold;position:relative;top:70px;color:#1a73e8;right:115px;float:right\" nowrap=\"\"\u003e\u003cspan\u003eimages\u003c/span\u003e\u003c/div\u003e\u003c/div\u003e\u003c/div\u003e\u003cbr\u003e\u003c/div\u003e\u003cform action=\"https://www.google.co.in/search\" name=\"f\"\u003e\u003ctable cellpadding=\"0\" cellspacing=\"0\"\u003e\u003ctr valign=\"top\"\u003e\u003ctd width=\"25%\"\u003e\u0026nbsp;\u003c/td\u003e\u003ctd align=\"center\" nowrap=\"\"\u003e\u003cinput name=\"tbm\" value=\"isch\" type=\"hidden\"\u003e\u003cinput name=\"ie\" value=\"ISO-8859-1\" type=\"hidden\"\u003e\u003cinput value=\"en-IN\" name=\"hl\" type=\"hidden\"\u003e\u003cinput name=\"source\" type=\"hidden\" value=\"hp\"\u003e\u003cinput name=\"biw\" type=\"hidden\"\u003e\u003cinput name=\"bih\" type=\"hidden\"\u003e\u003cdiv class=\"ds\" style=\"height:32px;margin:4px 0\"\u003e\u003cinput class=\"lst\" style=\"margin:0;padding:5px 8px 0 6px;vertical-align:top;color:#000\" autocomplete=\"off\" value=\"\" title=\"Search Images\" maxlength=\"2048\" name=\"q\" size=\"57\"\u003e\u003c/div\u003e\u003cspan class=\"ds\"\u003e\u003cspan class=\"lsbb\"\u003e\u003cinput class=\"lsb\" value=\"Search Images\" name=\"btnG\" type=\"submit\"\u003e\u003c/span\u003e\u003c/span\u003e\u003c/td\u003e\u003ctd class=\"fl sblc\" align=\"left\" valign=\"middle\" nowrap=\"\" width=\"25%\"\u003e\u003ca href=\"/advanced_image_search?hl=en-IN\u0026amp;authuser=0\"\u003eAdvanced\u0026nbsp;Image\u0026nbsp;Search\u003c/a\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\u003cinput id=\"gbv\" name=\"gbv\" type=\"hidden\" value=\"1\"\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){\nvar a,b=\"1\";if(document\u0026\u0026document.getElementById)if(\"undefined\"!=typeof XMLHttpRequest)b=\"2\";else if(\"undefined\"!=typeof ActiveXObject){var c,d,e=[\"MSXML2.XMLHTTP.6.0\",\"MSXML2.XMLHTTP.3.0\",\"MSXML2.XMLHTTP\",\"Microsoft.XMLHTTP\"];for(c=0;d=e[c++];)try{new ActiveXObject(d),b=\"2\"}catch(h){}}a=b;if(\"2\"==a\u0026\u0026-1==location.search.indexOf(\"\u0026gbv=2\")){var f=google.gbvu,g=document.getElementById(\"gbv\");g\u0026\u0026(g.value=a);f\u0026\u0026window.setTimeout(function(){location.href=f},0)};}).call(this);\u003c/script\u003e\u003c/form\u003e\u003cdiv id=\"gac_scont\"\u003e\u003c/div\u003e\u003cdiv style=\"font-size:83%;min-height:3.5em\"\u003e\u003cbr\u003e\u003c/div\u003e\u003cspan id=\"footer\"\u003e\u003cdiv style=\"font-size:10pt\"\u003e\u003cdiv style=\"margin:19px auto;text-align:center\" id=\"WqQANb\"\u003e\u003ca href=\"/intl/en/ads/\"\u003eAdvertising Programs\u003c/a\u003e\u003ca href=\"http://www.google.co.in/services/\"\u003eBusiness Solutions\u003c/a\u003e\u003ca href=\"/intl/en/about.html\"\u003eAbout Google\u003c/a\u003e\u003c/div\u003e\u003c/div\u003e\u003cp style=\"font-size:8pt;color:#70757a\"\u003e\u0026copy; 2021 - \u003ca href=\"/intl/en/policies/privacy/\"\u003ePrivacy\u003c/a\u003e -\u003ca href=\"/intl/en/policies/terms/\"\u003eTerms\u003c/a\u003e\u003c/p\u003e\u003c/span\u003e\u003c/center\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){window.google.cdo={height:757,width:1440};(function(){\nvar a=window.innerWidth,b=window.innerHeight;if(!a||!b){var c=window.document,d=\"CSS1Compat\"==c.compatMode?c.documentElement:c.body;a=d.clientWidth;b=d.clientHeight}a\u0026\u0026b\u0026\u0026(a!=google.cdo.width||b!=google.cdo.height)\u0026\u0026google.log(\"\",\"\",\"/client_204?\u0026atyp=i\u0026biw=\"+a+\"\u0026bih=\"+b+\"\u0026ei=\"+google.kEI);}).call(this);})();\u003c/script\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){google.xjs={ck:'',cs:'',excm:[],pml:false};})();\u003c/script\u003e\u003cscript nonce=\"YYH7DCMo/2WXGV6FU3QJIw==\"\u003e(function(){var u='/xjs/_/js/k\\x3dxjs.hp.en.9gLGBHDOM4E.O/m\\x3dsb_he,d/am\\x3dAPgEWA/d\\x3d1/ed\\x3d1/rs\\x3dACT90oEXm9MrN4B8xXQY6N86St4ZoOKYHQ';\nvar e=this||self,f=function(a){return a};var g;var l=function(a,b){this.g=b===h?a:\"\"};l.prototype.toString=function(){return this.g+\"\"};var h={};function m(){var a=u;google.lx=function(){n(a);google.lx=function(){}};google.bx||google.lx()}\nfunction n(a){google.timers\u0026\u0026google.timers.load\u0026\u0026google.tick\u0026\u0026google.tick(\"load\",\"xjsls\");var b=document;var c=\"SCRIPT\";\"application/xhtml+xml\"===b.contentType\u0026\u0026(c=c.toLowerCase());c=b.createElement(c);if(void 0===g){b=null;var k=e.trustedTypes;if(k\u0026\u0026k.createPolicy){try{b=k.createPolicy(\"goog#html\",{createHTML:f,createScript:f,createScriptURL:f})}catch(p){e.console\u0026\u0026e.console.error(p.message)}g=b}else g=b}a=(b=g)?b.createScriptURL(a):a;a=new l(a,h);c.src=a instanceof l\u0026\u0026a.constructor===l?a.g:\"type_error:TrustedResourceUrl\";var d;a=(c.ownerDocument\u0026\u0026c.ownerDocument.defaultView||window).document;(d=(a=null===(d=a.querySelector)||void 0===d?void 0:d.call(a,\"script[nonce]\"))?a.nonce||a.getAttribute(\"nonce\")||\"\":\"\")\u0026\u0026c.setAttribute(\"nonce\",d);document.body.appendChild(c);google.psa=!0};setTimeout(function(){m()},0);})();(function(){window.google.xjsu='/xjs/_/js/k\\x3dxjs.hp.en.9gLGBHDOM4E.O/m\\x3dsb_he,d/am\\x3dAPgEWA/d\\x3d1/ed\\x3d1/rs\\x3dACT90oEXm9MrN4B8xXQY6N86St4ZoOKYHQ';})();function _DumpException(e){throw e;}\nfunction _F_installCss(c){}\n(function(){google.jl={attn:false,blt:'none',chnk:0,dw:false,emtn:0,end:0,ine:false,lls:'default',pdt:0,rep:0,sif:false,snet:true,strt:0,ubm:false,uwp:true};})();(function(){var pmc='{\\x22d\\x22:{},\\x22sb_he\\x22:{\\x22agen\\x22:true,\\x22cgen\\x22:true,\\x22client\\x22:\\x22img\\x22,\\x22dh\\x22:true,\\x22dhqt\\x22:true,\\x22ds\\x22:\\x22i\\x22,\\x22ffql\\x22:\\x22en\\x22,\\x22host\\x22:\\x22google.co.in\\x22,\\x22isbh\\x22:28,\\x22jsonp\\x22:true,\\x22msgs\\x22:{\\x22cibl\\x22:\\x22Clear Search\\x22,\\x22dym\\x22:\\x22Did you mean:\\x22,\\x22lcky\\x22:\\x22I\\\\u0026#39;m Feeling Lucky\\x22,\\x22lml\\x22:\\x22Learn more\\x22,\\x22oskt\\x22:\\x22Input tools\\x22,\\x22psrc\\x22:\\x22This search was removed from your \\\\u003Ca href\\x3d\\\\\\x22/history\\\\\\x22\\\\u003EWeb History\\\\u003C/a\\\\u003E\\x22,\\x22psrl\\x22:\\x22Remove\\x22,\\x22sbit\\x22:\\x22Search by image\\x22,\\x22srch\\x22:\\x22Google Search\\x22},\\x22ovr\\x22:{},\\x22pq\\x22:\\x22\\x22,\\x22sbas\\x22:\\x220 3px 8px 0 rgba(0,0,0,0.2),0 0 0 1px rgba(0,0,0,0.08)\\x22,\\x22sbpl\\x22:16,\\x22sbpr\\x22:16,\\x22scd\\x22:10,\\x22stok\\x22:\\x22qb6u1LJ3VhKtpclmepiiAm7jA9E\\x22,\\x22uhde\\x22:false}}';google.pmc=JSON.parse(pmc);})();\u003c/script\u003e\u003c/body\u003e\u003c/html\u003e\n```\n\n\n","funding_links":[],"categories":["Go","Server Applications","服务器应用程序","Relational Databases"],"sub_categories":["HTTP Clients","HTTP客户端"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinhashubham95%2Fmoxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinhashubham95%2Fmoxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinhashubham95%2Fmoxy/lists"}