This repository was archived by the owner on Nov 21, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.rb
More file actions
51 lines (44 loc) · 1.16 KB
/
Copy pathapp.rb
File metadata and controls
51 lines (44 loc) · 1.16 KB
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
require 'rubygems'
require 'sinatra'
require 'httparty'
require 'ruby-debug'
require 'base64'
require 'openssl'
require 'crack/json'
enable :sessions
APP_CONFIG = YAML.load_file("config.yml")
class Signed
def initialize(encoded_request, json_request, signed_request)
@encoded_request = encoded_request
@json_request = json_request
@signed_request = signed_request
end
end
helpers do
def base64_url_decode str
encoded_str = str.gsub('-','+').gsub('_','/')
encoded_str += '=' while !(encoded_str.size % 4).zero?
Base64.decode64(encoded_str)
end
def decode_data(signed_request)
encoded_sig, payload = signed_request.split('.')
data = base64_url_decode(payload)
end
end
post '/' do
@encoded_request = params[:signed_request]
@json_request = decode_data(@encoded_request)
@signed_request = Crack::JSON.parse(@json_request)
erb :index
end
# Detect Fan status and redirect
post '/pathfinder' do
@encoded_request = params[:signed_request]
@json_request = decode_data(@encoded_request)
@signed_request = Crack::JSON.parse(@json_request)
if @signed_request['page']['liked']
erb :unlocked
else
erb :locked
end
end