-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathserver.rb
60 lines (47 loc) · 1.21 KB
/
server.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
require_relative "authenticate"
authenticate()
require 'rubygems'
require 'sinatra'
require 'json'
require 'rack-cache'
require 'net/http'
require 'net/https'
require 'active_support'
require 'active_support/core_ext/hash'
require 'dotenv/load'
require "google/analytics/data/v1beta"
require_relative 'GA4_handlers/active_users'
require_relative 'GA4_handlers/popular_content'
require_relative 'GA4_handlers/live_searches'
autoload :Google, 'google-analytics-data-v1beta'
use Rack::Cache
set :public_folder, 'public'
set :bind, '0.0.0.0'
set :protection, :except => :frame_options
if ENV['USERNAME'] && ENV['PASSWORD']
use Rack::Auth::Basic, 'Demo area' do |user, pass|
user == ENV['USERNAME'] && pass == ENV['PASSWORD']
end
end
get '/' do
File.read(File.join('public', 'index.html'))
end
get '/live-searches' do
content_type :json
most_popular_search_terms
end
get '/popular-content' do
content_type :json
popular_content
end
get '/active-users' do
content_type :json
active_users
end
get '/recently-published' do
http = Net::HTTP.new('www.gov.uk', 443)
http.use_ssl = true
req = Net::HTTP::Get.new('/government/feed')
response = http.request(req)
JSON.generate Hash.from_xml(response.body)
end