/
github.js
89 lines (83 loc) · 1.95 KB
/
github.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
var path = require('path'),
request = require('./http-request'),
Settings = require('settings'),
config = new Settings(require('../config'));
module.exports = GitHub = {
getRepoIssues: function(user, repo, callback){
var url = path.join('repos', user, repo, 'issues') + '?state=open';
GitHub.makeRequest(url, function(err, json){
if (err){
callback("[github.getRepoIssues]" + err, null);
} else if (json){
var repoIssues = {
issues: {
count: 0
},
pull_request:{
count: 0
}
};
json = JSON.parse(json);
json.forEach(function(issue){
repoIssues.issues.count++;
if (issue.pull_request.patch_url){
repoIssues.pull_request.count++;
}
issue.labels.forEach(function(tag){
if (repoIssues[tag.name]){
repoIssues[tag.name].count++;
} else {
repoIssues[tag.name] = {
count: 1
};
}
});
});
callback(null, repoIssues);
} else {
callback("Errror", null);
}
});
},
getRepo: function(user, repo, callback){
GitHub.makeRequest(
path.join('repos', user, repo)
, function(err, json){
if (err){
callback("[getRepo]" + err, null);
} else {
callback(null, json);
}
});
},
getTree: function(user, repo, ref, callback){
GitHub.makeRequest(
path.join('repos', user, repo, 'git/trees', ref)
, function(err, json){
if (err){
callback("[getRepo]" + err, null);
} else {
callback(null, json);
}
});
},
getFile: function(user, repo, file, ref, callback){
GitHub.makeRequest(
path.join('repos', user, repo, 'contents', file) + "?ref=" + (ref || "master")
, function(err, file){
if (err){
callback("[getFile]" + err, null);
} else {
callback(null, file);
}
});
},
makeRequest: function(path, callback){
request.getFile({
https: true,
host: config.github.host,
path: path,
auth: config.github.username + ":" + config.github.password
}, callback);
}
}