Simple Web Image Resolving and Caching Utility NPM Module
Still in experimental state, please check back soon
This library was written originally to supply images for a secure chat client that interfaces with Hubot. The project itself was designed to be a framework for building good npm modules including testing and debugging. The library is written in CoffeeScript and published in JS for compatibility. CoffeeScript was selected not because of any particular preference, rather as Hubot itself is written in CS, we needed a good proof of concept for debugging and interacting with CoffeeScript for pure JS developers who may contribute to our more complex code. At least on our team, good JavaScript developers are much easier to find than good JavaScript developers who already know CoffeeScript.
$ npm install imgcache --saveAssumes you already have Node.js and npm installed.
clone the repo:$ git clone https://github.com/wheller/imgcacheOptionally install global tools (might need sudo depending upon your environment)
$ npm install -g grunt-cli coffee-scriptInstall all dependencies
$ cd imgcache $ npm install
imgcache = require("imgcache.js")({ "cachedir": "/home/user/mycachedir" });
// Get image by url, from cache if available, otherwise downloaded from the supplied URL and then added to cache.
imgcache.get("http://www.phirephly.com/someimage.jpeg", function(err,file,info){
... your code here ...
});
// Check to see if the supplied URL is an image
imgcache.isimage("http://www.phirephly.com/someimage.jpeg" function(err, urlisimage){
... boolen urlisimage based upon http headers, follows redirects ...
});
$ grunt testor
$ npm test
Build and Debug
$ grunt debugWhich equates to grunt build then...
$ node-debug --debug-brk $(which grunt) nodeunitthen load in chrome..
http://127.0.0.1:8080/?ws=127.0.0.1:8080&port=5858
The original code is written in CoffeeScript, please make your edits there and create appropriate tests if you would like any merge request to be considered.
Transpile CoffeeScript (./src/) to final JavaScript (./lib/)
$ grunt buildOr full build with tests and linting
$ grunt
- add options to listen to (or ignore) cache headers
- add callback to iscached
- add way to specify mimetypes we care about (currently: /image/i )
- add promise support