0.0.4 • Published 11 years ago

iproxy v0.0.4

Weekly downloads
20
License
-
Repository
github
Last release
11 years ago

iproxy Build Status

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 iproxy

For the browser, we use component:

component install discore/iproxy

API

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

0.0.4

11 years ago

0.0.3

11 years ago

0.0.2

11 years ago

0.0.1

11 years ago