-
Notifications
You must be signed in to change notification settings - Fork 1
/
app.js
140 lines (116 loc) · 3.78 KB
/
app.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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
const express = require('express');
const canvas = require('canvas');
var cheerio = require('cheerio');
var request = require('request-promise');
const app = express();
const port = process.env.PORT || 80
const { get } = require('request');
//const fetch = require("node-fetch");
//global.fetch = require("node-fetch");
global.fetch = require('node-fetch');
app.use(express.static('/app'));
app.get('/', function (req, res) {
// res.send('Hello World');
res.sendfile('index.html');
//res.send('hell');
});
app.listen(port, function(){
console.log("Listening port!")
});
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(require("body-parser").json());
/*
app.post('/fetch_external_image', async (req, res) => {
console.log("req.body başla");
console.log(req.body);
console.log(req);
console.log("req.body bitir");
const { imageUrl } = req.body
if (!imageUrl) {
return res.status(400).send('imageUrl param required')
}
try {
const externalResponse = await request(imageUrl)
res.set('content-type', externalResponse.headers['content-type'])
return res.status(202).send(Buffer.from(externalResponse.body))
} catch (err) {
return res.status(404).send(err.toString())
}
})
*/
function request2(url, returnBuffer = true, timeout = 10000) {
return new Promise(function(resolve, reject) {
console.log("req 1");
const options = Object.assign(
{},
{
url,
isBuffer: true,
timeout,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
},
returnBuffer ? { encoding: null } : {}
)
get(options, function(err, res) {
console.log("req opt");
if (err) return reject(err)
console.log(res)
return resolve(res)
})
})
}
app.post('/instagram', async function(req, res){
const { accountName } = req.body;
url = 'https://www.instagram.com/'+accountName;
console.log(url);
/*
var options = {
url: url,
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4'
}
};
*/
var imgLink = '';
var gErr = 0;
await request(url, function(error, response, html){
if(!error){
try {
console.log("await request");
var $ = cheerio.load(html);
imgLink = $('meta[property="og:image"]').attr('content');
//console.log(imgLink);
if(imgLink === undefined) { throw "imgLink is null" }
}
catch(err) {
console.log('await request catch err');
console.log(err.toString());
console.log('await request catch fin');
gErr = 1 ;
}
} else {console.log(error); gErr = 1;}
});
if (gErr == 0 ) {
try {
console.log("try");
const externalResponse = await request2(imgLink);
console.log("ext resp");
res.set('Content-Type', externalResponse.headers['Content-Type']);
return res.status(202).send(Buffer.from(externalResponse.body));
} catch (err) {
return res.status(404).send(err.toString());
console.log("try error");
console.log(err);
}
}
else {
return res.status(999).send('999 hatası');
console.log("else error");
}
})