/
index.js
93 lines (68 loc) · 1.74 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
var dotenv = require('dotenv').config();
var request = require('superagent');
var News = function() {};
var apiKey = '';
var apiEndpint = {};
var language = '';
function getApiKey() {
return apiKey;
}
News.prototype.getSources = function(callback) {
if (!callback || typeof callback !== 'function') {
return;
}
var source = apiEndpint.source || process.env.NEWS_SOURCES;
if(!source) {
callback({error: 'Api endpoint is needed'});
}
request
.get(process.env.NEWS_SOURCES + '?language'+ language)
.end(callback);
};
News.prototype.getArticles = function(params, callback) {
if(typeof params === 'function') {
// throw error
callback = params;
callback(new Error('Missing the params object'));
return;
}
var articles = apiEndpint.articles || process.env.NEWS_SOURCES;
if(!articles) {
callback({error: 'Api endpoint is needed'});
}
if(getApiKey() === '') {
// throw error
callback(new Error('Api Key is a required'));
return;
}
if(!params.source) {
// throw error
callback(new Error('source is a required'));
return;
}
param = '?source='+ params.source;
if(params.sortBy) {
param += '&sortBy=' + params.sortBy;
}
param += '&apiKey='+ getApiKey();
request
.get(process.env.NEWS_ARTICLES + param)
.end(callback);
};
News.prototype.setAPIKey= function(key) {
apiKey = key || process.env.API_KEY;
};
News.prototype.getLanguage = function() {
return language;
};
News.prototype.setLanguage = function(language) {
language = language || 'en';
};
News.prototype.setApiEndpints= function(routes) {
if(typeof routes !== 'object') {
return 'Must be an object';
}
if(routes.hasProperty('source') && routes.hasProperty('articles'))
apiEndpint = routes;
};
module.exports = News;