38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| /*global Promise*/
 | |
| 
 | |
| var fs = require('fs').promises;
 | |
| var path = require('path');
 | |
| 
 | |
| module.exports.create = function (opts) {
 | |
|   var keyext = '.key';
 | |
|   return {
 | |
|     getPassword: function (service, name) {
 | |
|       var f = path.join(opts.configDir, name + keyext);
 | |
|       return fs.readFile(f, 'utf8').catch(function (err) {
 | |
|         if ('ENOEXIST' === err.code) {
 | |
|           return;
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|   , setPassword: function (service, name, key) {
 | |
|       var f = path.join(opts.configDir, name + keyext);
 | |
|       return fs.writeFile(f, key, 'utf8');
 | |
|     }
 | |
|   , deletePassword: function (service, name) {
 | |
|       var f = path.join(opts.configDir, name + keyext);
 | |
|       return fs.unlink(f);
 | |
|     }
 | |
|   , findCredentials: function (/*service*/) {
 | |
|       return fs.readDir(opts.configDir).then(function (nodes) {
 | |
|         return Promise.all(nodes.filter(function (node) {
 | |
|           return keyext === node.slice(-4);
 | |
|         }).map(function (node) {
 | |
|           return fs.readFile(path.join(opts.configDir, node + keyext));
 | |
|         }));
 | |
|       });
 | |
|     }
 | |
|   , insecure: true
 | |
|   };
 | |
| };
 |