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