{"id":21353512,"url":"https://github.com/johnkimdev/skipper-proxy","last_synced_at":"2025-07-26T22:38:31.041Z","repository":{"id":57362419,"uuid":"164064957","full_name":"JohnKimDev/skipper-proxy","owner":"JohnKimDev","description":"Proxy skipper's upstream to other server","archived":false,"fork":false,"pushed_at":"2019-01-10T12:54:49.000Z","size":3498,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-02-22T21:35:37.486Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/JohnKimDev.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":"2019-01-04T06:01:47.000Z","updated_at":"2020-01-23T05:35:57.000Z","dependencies_parsed_at":"2022-09-13T21:11:00.491Z","dependency_job_id":null,"html_url":"https://github.com/JohnKimDev/skipper-proxy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnKimDev%2Fskipper-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnKimDev%2Fskipper-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnKimDev%2Fskipper-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JohnKimDev%2Fskipper-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JohnKimDev","download_url":"https://codeload.github.com/JohnKimDev/skipper-proxy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243826792,"owners_count":20354221,"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-11-22T03:18:11.394Z","updated_at":"2025-03-16T05:13:31.080Z","avatar_url":"https://github.com/JohnKimDev.png","language":"JavaScript","readme":"# [\u003cimg title=\"skipper-ftp - FTP filesystem adapter for Skipper\" src=\"http://i.imgur.com/P6gptnI.png\" width=\"200px\" alt=\"skipper emblem - face of a ship's captain\"/\u003e](https://github.com/JohnKimDev/skipper-proxy) Skipper Proxy Adapter\n[![npm](https://img.shields.io/npm/v/skipper-proxy.svg)](https://www.npmjs.com/package/skipper-proxy)\n[![npm](https://img.shields.io/npm/l/express.svg)]()\n\nProxy upload stream to another server using [skipper](https://github.com/balderdashy/skipper) and [got](https://github.com/sindresorhus/got)\n\nIf you want to proxy upload stream to other server on fly using Skipper, this is the Skipper adapter for you. \n\nThings you can do with `Skipper-Proxy` adater\n\n* Proxy upload stream without writing a file to a server.  \n[Browser]--(File Upload)--\u003e[Server 1]--(Proxy File Upload)--\u003e[Server 2]\n* Change the request method (PUT, POST, PATCH, HEAD) \u0026 form field name when proxy to the remote server.\n* Add additional headers to the upload streams \n\nFrom the proxy server, you can treat the upload stream as if the upload is directly from a browser.\n\n## Installation\n\n```\n$ npm install skipper-proxy --save\n```\n\nAlso make sure you have skipper [installed as your body parser](http://beta.sailsjs.org/#/documentation/concepts/Middleware?q=adding-or-overriding-http-middleware).\n\n\u003e Skipper is installed by default in [Sails](https://github.com/balderdashy/sails) v0.10 and above.\n\n\n## Usage\n\n```javascript\nreq.file('file') // \u003c-- the fieldname from a browser upload\n.upload({\n  adapter: require('skipper-proxy'),\n  url: 'https://example.com',   // REQUIRED: Proxy server URL\n  method: 'put',                // OPTIONAL: Default = 'put'\n  maxBytes: 1000 * 1000 * 5,    // OPTIONAL: Maximum bytes to upload\n  fieldName: 'file',            // OPTIONAL: Form data field name for the proxy server. Default = 'file'\n  retries: 2,                   // OPTIONAL: Number of request retries on failure. Defeault = 2\n  headers: { \u003ckey\u003e : \u003cvalue\u003e }  // OPTIONAL: Request headers to the proxy server\n}, function whenDone(err, uploadedFiles) {\n  if (err) {\n     return res.negotiate(err); \n  }\n  else {\n    return res.ok({\n      files: uploadedFiles\n    });\n  }\n});\n```\n\n| Option        | Type       | Details |\n|-----------    |:----------:|---------|\n| `url`         | ((string)) | A `REQUIRED` parameter of the host or domain/IP.|\n| `method`      | ((string)) | An optional parameter for request method. Default value : `'put'`|\n| `maxBytes`    | ((number)) | An optional parameter for maximum bytes to upload.|\n| `fieldName`   | ((string)) | An optional parameter for proxy form data field name. Default value :`'file'`|\n| `retries`     | ((number)) | An optional parameter for number of request retries on failure. Default value : `2`|\n| `headers`     | ((object)) | An optional parameter for header objects|\n\n\n## License\n\nMIT License (MIT)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnkimdev%2Fskipper-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnkimdev%2Fskipper-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnkimdev%2Fskipper-proxy/lists"}