-
Notifications
You must be signed in to change notification settings - Fork 4
/
app.rb
82 lines (61 loc) · 1.91 KB
/
app.rb
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
require 'rubygems'
require 'sinatra'
require 'mechanize'
require 'unicode_utils/downcase'
require 'unicode_utils/titlecase'
require 'json'
require_relative 'transliterator'
def searchOTE(phoneNo)
athensNo = /^(2\d{9}|69\d{8})/
greekNo = /^30(\d*)/
match = athensNo.match phoneNo
match = greekNo.match phoneNo if match.nil?
return if match.nil?
pageurl = 'https://www.11888.gr'
a = Mechanize.new
a.user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.101 Safari/537.36'
page = a.get(pageurl)
cookies = page.header['Set-Cookie']
# Get the CSRF token.
tokenRE = /csrftoken=(.*?);/
csrftoken = '1'
csrftokenMatches = tokenRE.match cookies
csrftoken = csrftokenMatches[1] unless csrftokenMatches.nil?
a.pre_connect_hooks << lambda do |_agent, request|
request['X-Requested-With'] = 'XMLHttpRequest'
request['Cookie'] = 'csrftoken=' + csrftoken + ';'
request['Accept'] = 'Accept: application/json, text/javascript, */*; q=0.01'
request['Referer'] = 'https://www.11888.gr'
end
pageurl = 'https://www.11888.gr/search/reverse/?phone=' + match[1]
# Second call for the actual data (returned in JSON)
page = a.get(pageurl)
if page.code != '200'
return ''
end
begin
parsed = JSON.parse(page.content)
unless parsed['data']['wp'].empty?
nameComps = parsed['data']['wp'][0]['name']
fullName = "#{nameComps['first'] || ''} #{nameComps['last']}"
fullName.strip!
end
rescue JSON::ParserError
fullName = nil
end
Transliterator.gr_to_lat(CGI.escapeHTML(fullName)).gsub(/\n/, ' - ') unless fullName.nil?
end
def searchAll(phoneNumber)
content_type 'text/plain'
return if phoneNumber == 'Anonymous'
res = searchOTE(phoneNumber)
res.to_s
end
get '/' do
res = searchAll(params[:phone])
if res == nil or res.to_s == ''
Array[404, '']
else
Array[200,res.to_s]
end
end