-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.rb
More file actions
67 lines (50 loc) · 1.42 KB
/
app.rb
File metadata and controls
67 lines (50 loc) · 1.42 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# frozen_string_literal: true
require 'sinatra'
require_relative 'lib/controller/controller'
require_relative 'lib/models/video_game'
require_relative 'lib/services/video_games'
require_relative 'lib/storage/in_memory'
require_relative 'lib/utils/config'
# environments; DEV, TEST, PROD
environment = (ENV['API_ENV'] || 'DEV').upcase
config = Config.new environment
# configure host and port
set :bind, config.settings['bind']
set :port, config.settings['port']
storage = InMemory.new
service = VideoGames.new storage, VideoGame
controller = Controller.new service
get '/ping' do
'pong'
end
if %w[TEST DEV].include? environment
require_relative 'lib/controller/testing_controller'
require_relative 'lib/services/data_loader'
data_loader = DataLoader.new 'data.json', VideoGame
testing_controller = TestingController.new data_loader, storage
get '/api_tests/setup' do
testing_controller.setup
'Successfully loaded data.'
end
end
get '/video_games' do
controller.get_video_games
end
post '/video_games' do
controller.add_video_game request
end
get '/video_games/:id' do
get_params
controller.get_video_game request
end
put '/video_games/:id' do
get_params
controller.update_video_game request
end
delete '/video_games/:id' do
get_params
controller.delete_video_game request
end
def get_params
params.each { |key, value| request.params[key] = value }
end