• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ekristen/node-github-cache: Provides transparent caching for node-github api cal ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

ekristen/node-github-cache

开源软件地址:

https://github.com/ekristen/node-github-cache

开源编程语言:

JavaScript 100.0%

开源软件介绍:

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




鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
jez/stargaze: Gaze at repos you've starred发布时间:2022-06-13
下一篇:
reupen/aiogithub: asyncio-based GitHub API client发布时间:2022-06-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap