This repository has been archived by the owner on Jul 7, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
alexa_request.py
128 lines (98 loc) · 4.29 KB
/
alexa_request.py
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
class GenericRequest(object):
# object represnting the generic request, do not use directly (unless on errors)!
# either use the EndpointRequest subclass for request invloving endpoint data or the DiscoveryRequest subclass for discovery requests
# do not use error responses for discovery requests, either return a success request with no endpoints data or do not return anything!
def __init__ (self, request, init_namespace, init_name):
self._rawRequest = request
self._namespace = init_namespace
self._name = init_name
self._payloadVersion = request['directive']['header']['payloadVersion']
self._messageId = request['directive']['header']['messageId']
@property
def rawRequest(self):
return self._rawRequest
@property
def namespace(self):
return self._namespace
@property
def name(self):
return self._name
@property
def payloadVersion(self):
return self._payloadVersion
@property
def messageId(self):
return self._messageId
class EndpointRequest(GenericRequest):
# object represnting requests containing endpoint data, use directly for report state requests only!
# for other types of requests use any of the subclassess AdjustThermostatTemperatureRequest, SetThermostatTemperatureRequest, SetThermostatModeRequest or PowerControlRequest
def __init__(self, request, init_namespace, init_name):
super(EndpointRequest, self).__init__(request, init_namespace, init_name)
self._correlationToken = request['directive']['header']['correlationToken']
self._endpointId = request['directive']['endpoint']['endpointId']
self._tokenType = request['directive']['endpoint']['scope']['type']
self._token = request['directive']['endpoint']['scope']['token']
@property
def correlationToken(self):
return self._correlationToken
@property
def endpointId(self):
return self._endpointId
@property
def tokenType(self):
return self._tokenType
@property
def token(self):
return self._token
class DiscoveryRequest(GenericRequest):
# object represnting discovery requests
def __init__(self, request, init_namespace, init_name):
super(DiscoveryRequest, self).__init__(request, init_namespace, init_name)
self._tokenlType = request['directive']['payload']['scope']['type']
self._token = request['directive']['payload']['scope']['token']
@property
def tokenlType(self):
return self._tokenlType
@property
def token(self):
return self._token
class AdjustThermostatTemperatureRequest(EndpointRequest):
# object represnting the adjust tempereture by delta request
def __init__(self, request, init_namespace, init_name):
super(AdjustThermostatTemperatureRequest, self).__init__(request, init_namespace, init_name)
self._value = request['directive']['payload']['targetSetpointDelta']['value']
self._scale = request['directive']['payload']['targetSetpointDelta']['scale']
@property
def value(self):
return self._value
@property
def scale(self):
return self._scale
class SetThermostatTemperatureRequest(EndpointRequest):
# object represnting the set the tempereture to x request
def __init__(self, request, init_namespace, init_name):
super(SetThermostatTemperatureRequest, self).__init__(request, init_namespace, init_name)
self._value = request['directive']['payload']['targetSetpoint']['value']
self._scale = request['directive']['payload']['targetSetpoint']['scale']
@property
def value(self):
return self._value
@property
def scale(self):
return self._scale
class SetThermostatModeRequest(EndpointRequest):
# object represnting the set the mode to to x request
def __init__(self, request, init_namespace, init_name):
super(SetThermostatModeRequest, self).__init__(request, init_namespace, init_name)
self._value = request['directive']['payload']['thermostatMode']['value']
@property
def value(self):
return self._value
class PowerControlRequest(EndpointRequest):
# object represnting the set the mode to to x request
def __init__(self, request, init_namespace, init_name):
super(PowerControlRequest, self).__init__(request, init_namespace, init_name)
self._powerState = True if self.name == 'TurnOn' else False
@property
def powerState(self):
return self._powerState