Fix punycode webservice url

When the pkpass webservice URL is punycoded like https://my-äöü-domain.com it is not ascii encoded correctly and the update using this URL fails like in fwallet.

The expected punycoded URI is https://xn--my--domain-s5a0tyc.com or for my log xn--zgli-0ra.app.

This PR

  • adds the dart package punycode_converter, which adds Uri.pase(url).punyEncoded
  • adds a test for PassWebService.maybe for a normal url and an url that needs punyEncoding
  • solves f_wallet#35
E/flutter ( 8801): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: FormatException: z%C3%BCgli.app is not a valid link-local address but contains %. Scope id should be used as part of link-local address. (at character 2)
E/flutter ( 8801): z%C3%BCgli.app
E/flutter ( 8801):  ^
E/flutter ( 8801):
E/flutter ( 8801): #0      _NativeSocket.escapeLinkLocalAddress (dart:io-patch/socket_patch.dart:582:9)
E/flutter ( 8801): #1      _NativeSocket.startConnect (dart:io-patch/socket_patch.dart:696:14)
E/flutter ( 8801): #2      _RawSocket.startConnect (dart:io-patch/socket_patch.dart:1920:26)
E/flutter ( 8801): #3      RawSocket.startConnect (dart:io-patch/socket_patch.dart:27:23)
E/flutter ( 8801): #4      RawSecureSocket.startConnect (dart:io/secure_socket.dart:299:22)
E/flutter ( 8801): #5      SecureSocket.startConnect (dart:io/secure_socket.dart:77:28)
E/flutter ( 8801): #6      _ConnectionTarget.connect (dart:_http/http_impl.dart:2487:26)
E/flutter ( 8801): #7      _HttpClient._getConnection.connect (dart:_http/http_impl.dart:2930:12)
E/flutter ( 8801): #8      _HttpClient._getConnection (dart:_http/http_impl.dart:2935:12)
E/flutter ( 8801): #9      _HttpClient._openUrl (dart:_http/http_impl.dart:2790:12)
E/flutter ( 8801): #10     _HttpClient.openUrl (dart:_http/http_impl.dart:2627:7)
E/flutter ( 8801): #11     IOClient.send (package:http/src/io_client.dart:117:38)
E/flutter ( 8801): #12     BaseClient._sendUnstreamed (package:http/src/base_client.dart:93:38)
E/flutter ( 8801): #13     BaseClient.get (package:http/src/base_client.dart:27:7)
E/flutter ( 8801): #14     PkPassWebService.getLatestVersion (package:pkpass/pkpass_web_wervice/web_service.dart:50:39)
E/flutter ( 8801): #15     CachedWebService.getLatestVersion (package:f_wallet/src/utils/cached_web_service.dart:14:26)
E/flutter ( 8801): #16     PassManager.checkForUpdate (package:f_wallet/src/utils/pass_manager.dart:91:33)
E/flutter ( 8801): #17     PassManager._updatePasses (package:f_wallet/src/utils/pass_manager.dart:65:7)
E/flutter ( 8801): #18     new PassManager (package:f_wallet/src/utils/pass_manager.dart:20:5)
E/flutter ( 8801): #19     PassManager.init (package:f_wallet/src/utils/pass_manager.dart:40:17)
E/flutter ( 8801): <asynchronous suspension>
E/flutter ( 8801): #20     SplashScreen._initialize (package:f_wallet/src/splash_screen.dart:26:5)
E/flutter ( 8801): <asynchronous suspension>
E/flutter ( 8801): #21     _FutureBuilderState._subscribe.<anonymous closure> (package:flutter/src/widgets/async.dart:638:31)
E/flutter ( 8801): <asynchronous suspension>
E/flutter ( 8801):
Edited by Thea Tischbein

Merge request reports

Loading