iproxy v0.0.4
iproxy 
This is an image proxy for node.js/browser. It is meant to be used as a connect/express middleware, but it can be used by itself.
Use Case
User images won't always show up on your site:
- Many image hosts, such as imgur, do not support HTTPS. If your site only uses HTTPS, you're going to get mixed message warnings.
- Some image hosts block hotlinking. That's fine - we'll proxy the images to our servers and serve it ourselves.
Generally speaking, you should put this proxy instance behind a cache as this module does not cache any images. If you use CloudFlare as a CDN, you can even prevent hotlinking.
Inspiration: camo.
Installation
In node.js:
npm install iproxyFor the browser, we use component:
component install discore/iproxyAPI
Node.js
You should mount the middleware to some prefix. For example, we'll use the prefix /proxy:
app.use('/proxy', require('iproxy'))URLs
Assume we use the prefix /proxy. Images are now proxied at the address '/proxy' + url where url is the URL of the image without the protocol. ex., /proxy/i.imgur.com/mFtyLGJ.gif would proxy the image http://i.imgur.com/mFtyLGJ.gif through your server.
Browser
We want to create an iproxy instance with the prefix /proxy:
var iproxy = require('iproxy')('/proxy')- `iproxy(url, callback)
.url- the image URL you want to proxy.callback(err, url)err- non-null, the image failed to load and proxy.url- the image URL that worked - either the original URL or the proxied URL.
iproxy('http://i.imgur.com/mFtyLGJ.gif', function (err, url) {
// Input URL will match the output URL
// because the image works
url === http://i.imgur.com/mFtyLGJ.gif
})
iproxy('https://i.imgur.com/mFtyLGJ.gif', function (err, url) {
// The output URL will be a proxied URL
// since imgur doesn't support HTTPS
url === /proxy/i.imgur.com/mFtyLGJ.gif
})Note: it's up to you what protocol you'd like to test. You may want to use //i.imgur.com/mFtyLGJ.gif protocol-less URLs.
License
WTFPL