All Projects → ekristen → Node Github Cache

ekristen / Node Github Cache

Licence: mit
Provides transparent caching for node-github api calls

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Node Github Cache

Lazycache
An easy to use thread safe in-memory caching service with a simple developer friendly API for c#
Stars: ✭ 901 (+5906.67%)
Mutual labels:  cache
Go Cache Demo
Demo repository on how to use server side cache in Go
Stars: ✭ 26 (+73.33%)
Mutual labels:  cache
Outputcache
Cache api responses using Redis, Memcached or any cache provider for NodeJS
Stars: ✭ 9 (-40%)
Mutual labels:  cache
Httpcache
Get a working HTTP Cache in Go (Golang) with only 3 lines of code!!!!
Stars: ✭ 17 (+13.33%)
Mutual labels:  cache
Hazelcast Hibernate
A distributed second-level cache for Hibernate
Stars: ✭ 24 (+60%)
Mutual labels:  cache
Key Cache
Storing data in the form of key into the file
Stars: ✭ 8 (-46.67%)
Mutual labels:  cache
React Native Cached Image
CachedImage component for react-native
Stars: ✭ 890 (+5833.33%)
Mutual labels:  cache
Easy Cache
a cache trait for Laravel to do cache eaily
Stars: ✭ 12 (-20%)
Mutual labels:  cache
Cache Chunk Store
In-memory LRU (least-recently-used) cache for abstract-chunk-store compliant stores
Stars: ✭ 24 (+60%)
Mutual labels:  cache
Mlcache
A library make cache easily
Stars: ✭ 9 (-40%)
Mutual labels:  cache
Deepcache
Cache design for CNN on mobile
Stars: ✭ 22 (+46.67%)
Mutual labels:  cache
Cache Service Provider
A Cache Service Provider for Silex, using the doctrine/cache package
Stars: ✭ 23 (+53.33%)
Mutual labels:  cache
Gparticlesio
Simple IO transfer particles cache in DCC application
Stars: ✭ 8 (-46.67%)
Mutual labels:  cache
Simple Cache
An easy to use Caching trait for Laravel's Eloquent Models.
Stars: ✭ 19 (+26.67%)
Mutual labels:  cache
Cachep2p
"More users = More capacity"
Stars: ✭ 855 (+5600%)
Mutual labels:  cache
Go Reflectx
Go reflection library to find struct field by its tag
Stars: ✭ 19 (+26.67%)
Mutual labels:  cache
Wordpress Rest Cache
WordPress Plugin to lazy cache HTTP requests in database and update via cron.
Stars: ✭ 8 (-46.67%)
Mutual labels:  cache
Go Cache
Go in-memory cache library
Stars: ✭ 15 (+0%)
Mutual labels:  cache
Rw File Cache
🗄️ PHP File-based Caching Library
Stars: ✭ 10 (-33.33%)
Mutual labels:  cache
Weixinmpsdk
微信全平台 SDK Senparc.Weixin for C#,支持 .NET Framework 及 .NET Core、.NET 6.0。已支持微信公众号、小程序、小游戏、企业号、企业微信、开放平台、微信支付、JSSDK、微信周边等全平台。 WeChat SDK for C#.
Stars: ✭ 7,098 (+47220%)
Mutual labels:  cache

Build Status Dependency Status devDependency Status npm version Greenkeeper badge

Caching Layer for Node-GitHub

This is a Node.JS module that transparently adds caching for the node-github project. This library makes use of node-libkv for providing a consistent API layer for multiple different key/value storage backends.

By default if no cachedb is setup, a local leveldb instance will be created.

NPM

Changelog

2.2.0

Thank you to @jdanyow, he put together the PR and commits to make this possible.

  • You can use callbacks or promises just like you can with node-github.
  • You can use just about ANY version of node-github with this now too, however you must use 0.13.1 if you are going to use 0.13.x branch, as 0.13.1 has a fix to expose 304 http error codes.

2.0.0

  • github is no longer a dependency of github-cache, this should allow this library to work with whatever version of github you need to work with now.
  • You must instantiate an instance of node-github and then pass it into the constructor for the caching library.
  • github-cache now uses libkv to provide access to key/value backends, the default still being leveldb
  • The default separator is now /, this allows more key/value backends to be used by default

Installation

Install with Node.JS package manager

$ npm install github-cache

Documentation

You use this class just like you would use node-github.

If you want to not use the cache at any time, add cache: false to your API call.

Settings

  1. cachedb - this is a value passed to the creation of the API object Default: level:///./github-cachedb
  • this can be a string in the format of a URI that is understood by libkv
  • this can be an object with a uri property as well as other options understood by libkv
  • this can be a custom cache object (explained below)
  1. cache - this is a value that can be passed to any API function with a boolean value to disable or enable the cache. Default: true
  2. validateCache - Default: true - Check cached etag using If-None-Match with GitHub API before using the cached data. Ensures you have the latest data at all times. Setting to false allows you to use cached data without making the API call, results in quicker lookups. Especially useful if you are making dozens of API calls or more.
  3. prefix - Default: '' - this will prefix all keys in the key/value storage system
  4. separator - Default: / - this will separate the various layers of key

Example

Using libkv + redis

Redis must be running on the localhost in this example.

var GitHubApi = require('github')
var GitHubCache = require('github-cache')

var github_api = new GitHubApi({
  version: '3.0.0',
  validateCache: true
})

var github = new GitHubCache(github_api, {
  cachedb: 'redis://'
})

github.user.getFollowingFromUser({
  user: 'ekristen',
  cache: false
}, function(err, res) {
  console.log(JSON.stringify(res))
})

github.orgs.getTeams({
  org: 'private',
  validateCache: false
}, function (err, teams) {
  console.log(teams)
})

Using consul library directly

var GitHubCache = require('github-cache')

var consul = require('consul')({
  host: '127.0.0.1'
})

// Need to make the set function available as `put` for the cache library to work.
consul.kv.put = consul.kv.set

// You will want to use a prefix and a `/` separator so that they keys get separated out better in consul.
var github_api = new GitHubAPI({
  version: '3.0.0'
})

var github = new GitHubCache({
  cachedb: consul.kv,
  prefix: 'github-cache',
  separator: '/'
})

github.authenticate({
  type: 'oauth',
  token: process.env.GHTOKEN
})

github.user.getFollowingFromUser({
  user: 'ekristen',
}, function (err, data) {
  console.log(data)
})

Custom CacheDB Instance

You may pass in your own custom cachedb instance to github-cache to be valid and to work you will need the following function available: put, get, del, and batch. For more information see https://github.com/Level/levelup#api

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].