dart_pkpass/lib/pkpass/models/pass_web_service.dart

38 lines
1.3 KiB
Dart

import 'package:punycode_converter/punycode_converter.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,
// URLs due to IDNA2008
webServiceURL: uri.punyEncoded,
);
}
}