dart_pkpass/lib/pkpass/models/pass_web_service.dart
The one with the braid 08bfebb09e fix: handle trailing slash in web service
Signed-off-by: The one with the braid <info@braid.business>
2024-10-14 21:21:18 +02:00

35 lines
1.2 KiB
Dart

/// Metadata required for Pass Web Service
///
/// https://developer.apple.com/library/archive/documentation/PassKit/Reference/PassKit_WebService/WebService.html#//apple_ref/doc/uid/TP40011988
class PassWebService {
/// The authentication token to use with the web service.
/// The token must be 16 characters or longer.
final String authenticationToken;
/// The URL of a web service that conforms to the API described in PassKit Web Service Reference.
final Uri webServiceURL;
const PassWebService({
required this.authenticationToken,
required this.webServiceURL,
});
/// returns a [PassWebService] in case [authenticationToken] and
/// [webServiceURL] are both valid values.
static PassWebService? maybe({
String? authenticationToken,
String? webServiceURL,
}) {
if (authenticationToken == null || webServiceURL == null) return null;
// normalize the end of the URL
if (webServiceURL.endsWith('/')) {
webServiceURL = webServiceURL.substring(0, webServiceURL.length - 1);
}
final uri = Uri.tryParse(webServiceURL);
if (uri == null || uri.scheme != 'https') return null;
return PassWebService(
authenticationToken: authenticationToken,
webServiceURL: uri,
);
}
}