42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const _ = require('lodash')
 | |
| const file = require('./file')
 | |
| 
 | |
| const DATA_DIR = process.env.DATA_DIR || './scripts/data'
 | |
| 
 | |
| class API {
 | |
|   constructor(filepath) {
 | |
|     this.filepath = file.resolve(filepath)
 | |
|   }
 | |
| 
 | |
|   async load() {
 | |
|     const data = await file.read(this.filepath)
 | |
|     this.collection = JSON.parse(data)
 | |
|   }
 | |
| 
 | |
|   find(query) {
 | |
|     return _.find(this.collection, query)
 | |
|   }
 | |
| 
 | |
|   filter(query) {
 | |
|     return _.filter(this.collection, query)
 | |
|   }
 | |
| 
 | |
|   all() {
 | |
|     return this.collection
 | |
|   }
 | |
| }
 | |
| 
 | |
| const api = {}
 | |
| 
 | |
| api.channels = new API(`${DATA_DIR}/channels.json`)
 | |
| api.streams = new API(`${DATA_DIR}/streams.json`)
 | |
| api.countries = new API(`${DATA_DIR}/countries.json`)
 | |
| api.guides = new API(`${DATA_DIR}/guides.json`)
 | |
| api.categories = new API(`${DATA_DIR}/categories.json`)
 | |
| api.languages = new API(`${DATA_DIR}/languages.json`)
 | |
| api.regions = new API(`${DATA_DIR}/regions.json`)
 | |
| api.blocklist = new API(`${DATA_DIR}/blocklist.json`)
 | |
| api.subdivisions = new API(`${DATA_DIR}/subdivisions.json`)
 | |
| 
 | |
| module.exports = api
 |