-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuber_api.py
More file actions
92 lines (71 loc) · 3.42 KB
/
uber_api.py
File metadata and controls
92 lines (71 loc) · 3.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
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
"""Hello World API implemented using Google Cloud Endpoints.
Defined here are the ProtoRPC messages needed to define Schemas for methods
as well as those methods defined in an API.
"""
import endpoints
from protorpc import messages
from protorpc import message_types
from protorpc import remote
from datastore import UserRideDataBase
datastores = UserRideDataBase()
class NewRide(messages.Message):
pickLong = messages.FloatField(1, required=False)
pickLat = messages.FloatField(2, required=False)
dropLong = messages.FloatField(3, required=False)
dropLat = messages.FloatField(4, required=False)
timeSec = messages.IntegerField(5, required=False)
daysOfWeek = messages.StringField(6, required=False)
time = messages.StringField(7, required=False)
key = messages.IntegerField(9, required=False)
userID = messages.StringField(8, required=False)
date = messages.StringField(10, required=False)
image = messages.StringField(11, required=False)
pickUp = messages.StringField(12, required=False)
dropOff = messages.StringField(13, required=False)
class Key(messages.Message):
key = messages.StringField(1, required=False)
class user(messages.Message):
userID = messages.StringField(1, required=False)
rideID = messages.StringField(3, required=False)
message = messages.StringField(2)
class ReturnRides(messages.Message):
rides = messages.MessageField(NewRide, 1,repeated=True)
@endpoints.api(name='uberApi', version='v1')
class uberApi(remote.Service):
"""Uber API v1."""
@endpoints.method(NewRide, Key,
path='ride/create', http_method='POST',
name='ride.create') # defines url and type of request
def create_ride(self, request):
try:
key = int(request.key)
except TypeError:
key = False
key = datastores.create_ride_data(request.userID, request.pickLong, request.pickLat, request.dropLong, request.dropLat,
request.timeSec, request.daysOfWeek, request.time, request.date, request.image, key,request.pickUp, request.dropOff)
return Key(key=str(key.id()))
@endpoints.method(user, Key,
path='user/create', http_method='POST',
name='user.create') # defines url and type of request
def create_user(self, request):
key = datastores.creatUser(request.userID, request.message)
return Key(key=key)
@endpoints.method(user, Key,
path='ride/delete', http_method='POST',
name='ride.delete') # defines url and type of request
def delete_ride(self, request):
key = datastores.delete_ride(request.userID, request.rideID)
return Key(key=key)
@endpoints.method(user, Key,
path='user/create', http_method='POST',
name='user.create') # defines url and type of request
def create_user(self, request):
key = datastores.creatUser(request.userID, request.message)
return Key(key=key)
@endpoints.method(user, ReturnRides,
path='ride/return', http_method='POST',
name='ride.return') # defines url and type of request
def return_rides(self, request):
# key = datastores.creatUser(request.userID, request.message)
return datastores.return_rides(request.userID)
APPLICATION = endpoints.api_server([uberApi])