-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathbadgerAPI.rb
136 lines (110 loc) · 3.02 KB
/
badgerAPI.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
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
require 'sinatra'
require './SQLHelper'
require 'json'
# Entry point for Badger RESTful API. When executed, this file starts a web application
# that listens for requests on the following endpoints.
db = SQLHelper.new
FileUtils.cp("public/index.html", "README.md") # update the homepage with the README documentation
before do
content_type 'application/json'
end
# retrieve JSON arguments for every POST request
post '*' do
request.body.rewind
@args = JSON.parse request.body.read
pass
end
# show the documentation on home page
get '/' do
redirect '/index.html'
end
get '/testConnection' do
"Connected to Badger API!"
end
# search for user by id, /getUser?id=4
get '/readUser' do
if params['id'].nil?
response = db.getUserByUsername params['username']
else
response = db.getUserById params['id']
end
JSON.generate response
end
# authenticate the user's session
post '/login' do
username = @args['username']
password = @args['password']
response = db.login username, password
JSON.generate response
end
# create a new user
post '/createUser' do
username = @args['username']
password = @args['password']
passwordConfirmation = @args['password_confirmation']
email = @args['email']
response = db.createUser username, password, passwordConfirmation, email
JSON.generate response
end
# permanently delete a user's account
post '/deleteUser' do
id = @args['id'];
response = db.deleteUser id
JSON.generate response
end
# adds a friend to a user's friends list, and the user to the friend's friends list.
post '/addFriend' do
userId = @args['user_id']
friendId = @args['friend_id']
response = db.addFriend userId, friendId
JSON.generate response
end
# create a new badge
post '/createBadge' do
imageURL = @args['image_url']
badgeName = @args['badge_name']
badgeDescription = @args['badge_description']
authorId = @args['author_id']
response = db.createBadge imageURL, badgeName, badgeDescription, authorId
JSON.generate response
end
# updates a user with the given properties
post '/updateUser' do
response = db.updateUser(@args)
JSON.generate response
end
# updates a badge with the given properties
post '/updateBadge' do
response = db.updateBadge(@args)
JSON.generate response
end
# adds a non-admin user to a group
post '/addUserToGroup' do
userId = @args['user_id']
groupId = @args['group_id']
response = db.addUserToGroup(userId, groupId)
JSON.generate response
end
# remove a user from a group
post '/removeUserFromGroup' do
response = db.removeUserFromGroup(@args['user_id'], @args['group_id'])
JSON.generate response
end
# create a new group
post '/createGroup' do
name = @args['group_name']
desc = @args['group_description']
admin = @args['admin_id']
response = db.createGroup name, desc, admin
JSON.generate response
end
# get group details
get '/readGroup' do
response = db.getGroupById params['id']
JSON.generate response
end
# get badge details
get '/readBadge' do
response = db.getBadgeById params['id']
JSON.generate response
end