Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 4ee6dc3

Browse files
collected improvements by ROJ Italy (#33)
* Updates: - adapt sdk to do an unsecured onboarding for CU * Updates: - add support to send Image Message Format * Updates: - add metadata info when you send an image * Updates: - add push notification * Updates: - add EFDI Timelog and EFDI Device Description parameters/services * Updates: - add default value efdi_filename parameter * Updates: - set subscribe with QoS=2 in order to use a Persistent Session * Updates: - add metadata as optional parameter * Updates: - disable Persistent Session * Updates: - fix error in response.py * Updates: - customize setup.py to load "agrirouter-sdk-python" on PyPi * Updates: - add efdi_pb2 and gps_pb2 into roj-agrirouter-sdk-python * - update version package * - add pb2 files * - update version package * - remove cryptography dependency (this will generate runtime errors on iOS) * Updates: - add EfdiTimelogPublishService to send TimeLog in "PUBLISH" mode * Updates: - fix error after adding new service * Updates: - set version in setup.py * Updates: - add TaskParameters and TaskService * Updates: - add chunkcomponent parameters * Updates: - fix bug ChunkComponent --------- Co-authored-by: Stefano Gurrieri <[email protected]>
1 parent 6d6b266 commit 4ee6dc3

File tree

23 files changed

+6771
-124
lines changed

23 files changed

+6771
-124
lines changed

agrirouter/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
from agrirouter.messaging.parameters.service import MessageHeaderParameters, MessagePayloadParameters, \
1111
QueryMessageParameters, QueryHeaderParameters, CloudOffboardParameters, CloudOnboardParameters, \
1212
CapabilityParameters, FeedConfirmParameters, FeedDeleteParameters, ListEndpointsParameters, MessageParameters, \
13-
SubscriptionParameters
13+
SubscriptionParameters, ImageParameters, TaskParameters, EfdiParameters
1414
from agrirouter.messaging.services.cloud import CloudOnboardService, CloudOffboardService
1515
from agrirouter.messaging.services.messaging import SubscriptionService, CapabilityService, FeedConfirmService,\
16-
FeedDeleteService, QueryHeaderService, QueryMessagesService, ListEndpointsService
16+
FeedDeleteService, QueryHeaderService, QueryMessagesService, ListEndpointsService, ImageService, TaskService, EfdiTimelogService, EfdiTimelogPublishService, EfdiDeviceDscService
1717

agrirouter/auth/response.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@
33
from typing import Union
44
from urllib.parse import unquote
55

6-
from cryptography.exceptions import InvalidSignature
6+
#from cryptography.exceptions import InvalidSignature
77

88
from agrirouter.auth.dto import AuthorizationToken, AuthorizationResultUrl
9-
from agrirouter.onboarding.signature import verify_signature
9+
#from agrirouter.onboarding.signature import verify_signature
1010

1111

1212
class AuthResponse:
@@ -34,7 +34,7 @@ def is_valid(self):
3434

3535
return self._is_valid
3636

37-
def verify(self, public_key) -> None:
37+
# def verify(self, public_key) -> None:
3838
"""
3939
Validates signature according to docs:
4040
https://docs.my-agrirouter.com/agrirouter-interface-documentation/latest/integration/authorization.html#analyse-result
@@ -44,18 +44,18 @@ def verify(self, public_key) -> None:
4444
4545
:return:
4646
"""
47-
encoded_data = self.state + self.token
48-
unquoted_signature = unquote(self.signature)
49-
encoded_signature = base64.b64decode(unquoted_signature.encode("utf-8"))
50-
51-
self._is_valid = True
52-
try:
53-
verify_signature(encoded_data, encoded_signature, public_key)
54-
except InvalidSignature:
55-
print("Response is invalid: invalid signature.")
56-
self._is_valid = False
57-
finally:
58-
self._was_verified = True
47+
# encoded_data = self.state + self.token
48+
# unquoted_signature = unquote(self.signature)
49+
# encoded_signature = base64.b64decode(unquoted_signature.encode("utf-8"))
50+
51+
# self._is_valid = True
52+
# try:
53+
# verify_signature(encoded_data, encoded_signature, public_key)
54+
# except InvalidSignature:
55+
# print("Response is invalid: invalid signature.")
56+
# self._is_valid = False
57+
# finally:
58+
# self._was_verified = True
5959

6060
@staticmethod
6161
def decode_token(token: Union[str, bytes]) -> AuthorizationToken:

agrirouter/environments/environments.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class ProductionEnvironment(BaseEnvironment):
5858
_API_PREFIX = "/api/v1.0"
5959
_REGISTRATION_SERVICE_URL = "https://onboard.my-agrirouter.com"
6060

61-
AR_PUBLIC_KEY = AR_PROD_PUBLIC_KEY
61+
#AR_PUBLIC_KEY = AR_PROD_PUBLIC_KEY
6262

6363

6464
class QAEnvironment(BaseEnvironment):

agrirouter/generated/messaging/request/payload/efdi/__init__.py

Whitespace-only changes.

agrirouter/generated/messaging/request/payload/efdi/efdi_pb2.py

Lines changed: 6002 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agrirouter/generated/messaging/request/payload/gps/__init__.py

Whitespace-only changes.

agrirouter/generated/messaging/request/payload/gps/gps_pb2.py

Lines changed: 298 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

agrirouter/messaging/decode.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
from agrirouter.generated.messaging.response.payload.account.endpoints_pb2 import ListEndpointsResponse
88
from agrirouter.generated.messaging.response.payload.feed.feed_response_pb2 import HeaderQueryResponse, \
99
MessageQueryResponse
10+
from agrirouter.generated.messaging.response.payload.feed.push_notification_pb2 import PushNotification
1011
from agrirouter.generated.messaging.response.response_pb2 import ResponseEnvelope, ResponsePayloadWrapper
1112
from agrirouter.messaging.exceptions import DecodeMessageException
1213
from agrirouter.messaging.messages import DecodedMessage
@@ -58,5 +59,9 @@ def decode_details(details: Any):
5859
message_query_response = MessageQueryResponse()
5960
message_query_response.MergeFromString(details.value)
6061
return message_query_response
62+
elif details.type_url == TypeUrl.get_type_url(PushNotification):
63+
pushnotification = PushNotification()
64+
pushnotification.MergeFromString(details.value)
65+
return pushnotification
6166
else:
6267
raise DecodeMessageException(f"Could not handle type {details.type_url} while decoding details.")

0 commit comments

Comments
 (0)