diff --git a/src/edutap/wallet_google/api.py b/src/edutap/wallet_google/api.py index 4150e03..cd894e9 100644 --- a/src/edutap/wallet_google/api.py +++ b/src/edutap/wallet_google/api.py @@ -376,13 +376,19 @@ def save_link( if isinstance(obj, dict) and "id" in obj and len(obj.keys()) <= 2: obj = GoogleWalletObjectWithClassReference.model_validate(obj) if isinstance(obj, GoogleWalletObjectWithClassReference): - payload[name].append(obj.model_dump(exclude_none=True, mode="json")) + payload[name].append( + obj.model_dump_json( + exclude_none=True, + exclude_unset=True, + exclude_defaults=True, + ) + ) continue # otherwise it must be a registered model model = lookup_model_by_plural_name(name) obj = _validate_data(model, obj) - obj_json = obj.model_dump(exclude_none=True, mode="json") + obj_json = obj.model_dump_json(exclude_none=True) payload[name].append(obj_json) claims = { "iat": "", @@ -394,9 +400,9 @@ def save_link( } signer = crypt.RSASigner.from_service_account_file(session_manager.credentials_file) jwt_string = jwt.encode(signer, claims).decode("utf-8") - logger.debug( - "JWT-Length: %d, is less than recommenden 1800: %s", + logger.warning( + "JWT-Length: %d, is larger than recommenden 1800: %s", len(jwt_string), - len(jwt_string) <= 1800, + len(jwt_string) >= 1800, ) return f"{session_manager.save_url}/{jwt_string}" diff --git a/src/edutap/wallet_google/modelbase.py b/src/edutap/wallet_google/modelbase.py index 3d0939b..d787b71 100644 --- a/src/edutap/wallet_google/modelbase.py +++ b/src/edutap/wallet_google/modelbase.py @@ -18,27 +18,6 @@ from pydantic import Field -# class GoogleWalletModel(BaseModel): -# """ -# Base model for all Google Wallet models. -# """ - -# model_config = ConfigDict( -# extra="forbid", -# # extra="ignore", -# use_enum_values=True, -# ) - - -# class GoogleWalletWithIdModel(GoogleWalletModel): -# """ -# Base model for Google Wallet models with an identifier. -# """ - -# kind: str | None = Field(description="deprecated", exclude=True, default=None) -# id: str - - class GoogleWalletClassModel(GoogleWalletWithIdModel): """ Base model for all Google Wallet Class models. diff --git a/src/edutap/wallet_google/models/jwt.py b/src/edutap/wallet_google/models/jwt.py index 1a7c268..a9d5c95 100644 --- a/src/edutap/wallet_google/models/jwt.py +++ b/src/edutap/wallet_google/models/jwt.py @@ -19,7 +19,8 @@ ) class JwtResource(GoogleWalletModel): """ - see: https://developers.google.com/wallet/tickets/events/rest/v1/jwt + see: https://developers.google.com/wallet/reference/rest/v1/jwt + https://developers.google.com/wallet/tickets/events/rest/v1/jwt https://developers.google.com/wallet/generic/web/javascript-button#google-pay-api-for-passes-jwt """ @@ -28,7 +29,8 @@ class JwtResource(GoogleWalletModel): class Resources(GoogleWalletModel): """ - see: https://developers.google.com/wallet/tickets/events/rest/v1/jwt/insert#resources + see: https://developers.google.com/wallet/reference/rest/v1/jwt/insert + https://developers.google.com/wallet/tickets/events/rest/v1/jwt/insert#resources """ # the documentation says nothing about GenericClass/Object here diff --git a/src/edutap/wallet_google/models/retail.py b/src/edutap/wallet_google/models/retail.py index 23b9fdc..eed6575 100644 --- a/src/edutap/wallet_google/models/retail.py +++ b/src/edutap/wallet_google/models/retail.py @@ -25,8 +25,8 @@ from .primitives.enums import ViewUnlockRequirement from .primitives.localized_string import LocalizedString from .primitives.location import LatLongPoint +from .primitives.message import Message from .primitives.money import Money -from .primitives.notification import Message from .primitives.retail import DiscoverableProgram from .primitives.review import Review from pydantic import BaseModel diff --git a/src/edutap/wallet_google/models/tickets_and_transit.py b/src/edutap/wallet_google/models/tickets_and_transit.py index 66df63e..b751aa2 100644 --- a/src/edutap/wallet_google/models/tickets_and_transit.py +++ b/src/edutap/wallet_google/models/tickets_and_transit.py @@ -57,6 +57,17 @@ class EventDateTime(GoogleWalletWithKindModel): customDoorsOpenLabel: LocalizedString | None = None +class EventSeat(BaseModel): + seat: LocalizedString | None = None + row: LocalizedString | None = None + section: LocalizedString | None = None + gate: LocalizedString | None = None + + +class EventReservationInfo(BaseModel): + confirmationCode: str | None = None + + @register_model( "EventTicketClass", url_part="eventTicketClass", @@ -98,17 +109,6 @@ class EventTicketClass(GoogleWalletClassModel, GoogleWalletMessageable): countryCode: str | None = None -class EventSeat(BaseModel): - seat: LocalizedString | None = None - row: LocalizedString | None = None - section: LocalizedString | None = None - gate: LocalizedString | None = None - - -class EventReservationInfo(BaseModel): - confirmationCode: str | None = None - - @register_model( "EventTicketObject", url_part="eventTicketObject",