From b2396de494d61b827fa14ba913d209fe9c64a46b Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Thu, 7 Feb 2019 08:44:14 +0100 Subject: [PATCH 1/5] Add support for using a custom HttpClient. --- lib/parse.dart | 16 ++++++++++++---- lib/src/data/parse_core_data.dart | 10 +++++++++- lib/src/network/browser_clinet.dart | 9 +++++++++ lib/src/network/client_stub.dart | 9 +++++++++ lib/src/network/io_client.dart | 12 ++++++++++++ lib/src/network/parse_http_client.dart | 4 ++-- lib/src/objects/parse_config.dart | 8 +++++--- lib/src/objects/parse_file.dart | 7 +++++-- lib/src/objects/parse_geo_point.dart | 12 +++++++++--- lib/src/objects/parse_object.dart | 4 ++-- lib/src/objects/parse_user.dart | 8 +++++--- 11 files changed, 79 insertions(+), 20 deletions(-) create mode 100644 lib/src/network/browser_clinet.dart create mode 100644 lib/src/network/client_stub.dart create mode 100644 lib/src/network/io_client.dart diff --git a/lib/parse.dart b/lib/parse.dart index da52667f2..d7c61d7ed 100644 --- a/lib/parse.dart +++ b/lib/parse.dart @@ -11,6 +11,10 @@ import 'package:path/path.dart' as path; import 'package:shared_preferences/shared_preferences.dart'; import 'package:web_socket_channel/io.dart'; +import 'src/network/client_stub.dart' + if (dart.library.html) 'src/network/browser_client.dart' + if (dart.library.io) 'src/network/io_client.dart'; + part 'src/base/parse_constants.dart'; part 'src/data/parse_core_data.dart'; @@ -55,7 +59,7 @@ part 'src/utils/parse_utils.dart'; class Parse { ParseCoreData data; - final ParseHTTPClient client = new ParseHTTPClient(); + ParseHTTPClient _client; bool _hasBeenInitialised = false; /// To initialise Parse Server in your application @@ -76,17 +80,21 @@ class Parse { String liveQueryUrl, String clientKey, String masterKey, - String sessionId}) { + String sessionId, + HttpClient httpClient}) { ParseCoreData.init(appId, serverUrl, debug: debug, appName: appName, liveQueryUrl: liveQueryUrl, masterKey: masterKey, clientKey: clientKey, - sessionId: sessionId); + sessionId: sessionId, + httpClient: httpClient); ParseCoreData().initStorage(); + _client = ParseHTTPClient(httpClient); + _hasBeenInitialised = true; return Parse(); @@ -98,7 +106,7 @@ class Parse { ParseResponse parseResponse; try { - var response = await ParseHTTPClient() + var response = await ParseHTTPClient(ParseCoreData().httpClient) .get("${ParseCoreData().serverUrl}$keyEndPointHealth"); parseResponse = ParseResponse.handleResponse(this, response, returnAsResult: true); diff --git a/lib/src/data/parse_core_data.dart b/lib/src/data/parse_core_data.dart index 7ace885a3..2ef34f309 100644 --- a/lib/src/data/parse_core_data.dart +++ b/lib/src/data/parse_core_data.dart @@ -11,7 +11,13 @@ class ParseCoreData { /// This class should not be user unless switching servers during the app, /// which is odd. Should only be user by Parse.init static void init(appId, serverUrl, - {debug, appName, liveQueryUrl, masterKey, clientKey, sessionId}) { + {debug, + appName, + liveQueryUrl, + masterKey, + clientKey, + sessionId, + httpClient}) { _instance = ParseCoreData._init(appId, serverUrl); if (debug != null) _instance.debug = debug; @@ -20,6 +26,7 @@ class ParseCoreData { if (clientKey != null) _instance.clientKey = clientKey; if (masterKey != null) _instance.masterKey = masterKey; if (sessionId != null) _instance.sessionId = sessionId; + if (httpClient != null) _instance.httpClient = httpClient; } String appName; @@ -29,6 +36,7 @@ class ParseCoreData { String masterKey; String clientKey; String sessionId; + HttpClient httpClient; bool debug; SharedPreferences storage; diff --git a/lib/src/network/browser_clinet.dart b/lib/src/network/browser_clinet.dart new file mode 100644 index 000000000..d5384cead --- /dev/null +++ b/lib/src/network/browser_clinet.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:http/http.dart'; +import 'package:http/browser_client.dart'; + +/// Used from conditional imports, matches the definition in `client_stub.dart`. +BaseClient createClient(dynamic httpClient) => BrowserClient(); diff --git a/lib/src/network/client_stub.dart b/lib/src/network/client_stub.dart new file mode 100644 index 000000000..89592c2c3 --- /dev/null +++ b/lib/src/network/client_stub.dart @@ -0,0 +1,9 @@ +// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:http/http.dart'; + +/// Implemented in `browser_client.dart` and `io_client.dart`. +BaseClient createClient(dynamic httpClient) => throw UnsupportedError( + 'Cannot create a client without dart:html or dart:io.'); diff --git a/lib/src/network/io_client.dart b/lib/src/network/io_client.dart new file mode 100644 index 000000000..18a6c0d9e --- /dev/null +++ b/lib/src/network/io_client.dart @@ -0,0 +1,12 @@ +// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'dart:io'; + +import 'package:http/http.dart'; +import 'package:http/io_client.dart'; + +/// Used from conditional imports, matches the definition in `client_stub.dart`. +BaseClient createClient(HttpClient httpClient) => + httpClient != null ? IOClient(httpClient) : IOClient(); diff --git a/lib/src/network/parse_http_client.dart b/lib/src/network/parse_http_client.dart index 6101d09f6..bf46d141e 100644 --- a/lib/src/network/parse_http_client.dart +++ b/lib/src/network/parse_http_client.dart @@ -2,12 +2,12 @@ part of flutter_parse_sdk; /// Creates a custom version of HTTP Client that has Parse Data Preset class ParseHTTPClient extends BaseClient { - final Client _client = Client(); + final Client _client; final String _userAgent = "$keyLibraryName $keySdkVersion"; ParseCoreData data = ParseCoreData(); Map additionalHeaders; - ParseHTTPClient(); + ParseHTTPClient([HttpClient httpClient]) : _client = createClient(httpClient); /// Overrides the call method for HTTP Client and adds custom headers @override diff --git a/lib/src/objects/parse_config.dart b/lib/src/objects/parse_config.dart index 0d2f1f889..3dfe864c1 100644 --- a/lib/src/objects/parse_config.dart +++ b/lib/src/objects/parse_config.dart @@ -1,7 +1,7 @@ part of flutter_parse_sdk; class ParseConfig extends ParseObject { - var _client = ParseHTTPClient(); + var _client = ParseHTTPClient(ParseCoreData().httpClient); /// Creates an instance of ParseConfig so that you can grab all configs from the server ParseConfig({bool debug, ParseHTTPClient client}) : super('config') { @@ -14,7 +14,8 @@ class ParseConfig extends ParseObject { try { var uri = "${ParseCoreData().serverUrl}/config"; var result = await _client.get(uri); - return handleResponse(this, result, ParseApiRQ.getConfigs, _debug, className); + return handleResponse( + this, result, ParseApiRQ.getConfigs, _debug, className); } on Exception catch (e) { return handleException(e, ParseApiRQ.getConfigs, _debug, className); } @@ -26,7 +27,8 @@ class ParseConfig extends ParseObject { var uri = "${ParseCoreData().serverUrl}/config"; var body = "{\"params\":{\"$key\": \"${parseEncode(value)}\"}}"; var result = await _client.put(uri, body: body); - return handleResponse(this, result, ParseApiRQ.addConfig, _debug, className); + return handleResponse( + this, result, ParseApiRQ.addConfig, _debug, className); } on Exception catch (e) { return handleException(e, ParseApiRQ.addConfig, _debug, className); } diff --git a/lib/src/objects/parse_file.dart b/lib/src/objects/parse_file.dart index ee7db528d..ce8c32302 100644 --- a/lib/src/objects/parse_file.dart +++ b/lib/src/objects/parse_file.dart @@ -25,7 +25,9 @@ class ParseFile extends ParseObject { /// /// {https://docs.parseplatform.org/rest/guide/#files/} ParseFile(this._file, {bool debug, ParseHTTPClient client}) : super(keyFile) { - client == null ? _client = ParseHTTPClient() : _client = client; + client == null + ? _client = ParseHTTPClient(ParseCoreData().httpClient) + : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); this._fileName = path.basename(_file.path); @@ -46,6 +48,7 @@ class ParseFile extends ParseObject { var uri = _client.data.serverUrl + "$_path"; final body = await _file.readAsBytes(); final response = await _client.post(uri, headers: headers, body: body); - return handleResponse(this, response, ParseApiRQ.upload, _debug, className); + return handleResponse( + this, response, ParseApiRQ.upload, _debug, className); } } diff --git a/lib/src/objects/parse_geo_point.dart b/lib/src/objects/parse_geo_point.dart index 94f0f092c..f21234ad0 100644 --- a/lib/src/objects/parse_geo_point.dart +++ b/lib/src/objects/parse_geo_point.dart @@ -1,16 +1,22 @@ part of flutter_parse_sdk; class ParseGeoPoint extends ParseObject { - double _latitude; double _longitude; /// Creates a Parse Object of type GeoPoint - ParseGeoPoint({double latitude = 0.0, double longitude = 0.0, bool debug, ParseHTTPClient client}): super (keyGeoPoint) { + ParseGeoPoint( + {double latitude = 0.0, + double longitude = 0.0, + bool debug, + ParseHTTPClient client}) + : super(keyGeoPoint) { _latitude = latitude; _longitude = longitude; - client == null ? _client = ParseHTTPClient() : _client = client; + client == null + ? _client = ParseHTTPClient(ParseCoreData().httpClient) + : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); } diff --git a/lib/src/objects/parse_object.dart b/lib/src/objects/parse_object.dart index b9d2bed30..fd46816cb 100644 --- a/lib/src/objects/parse_object.dart +++ b/lib/src/objects/parse_object.dart @@ -18,7 +18,7 @@ class ParseObject extends ParseBase implements ParseCloneable { ParseObject(String className, {bool debug: false}) : super() { setClassName(className); _path = "$keyEndPointClasses$className"; - setClient(ParseHTTPClient()); + setClient(ParseHTTPClient(ParseCoreData().httpClient)); setDebug(isDebugEnabled(objectLevelDebug: debug)); } @@ -82,7 +82,7 @@ class ParseObject extends ParseBase implements ParseCloneable { } } - /// Removes an element from an Arary + /// Removes an element from an Array Future remove(String key, dynamic values) async { if (key != null) { return await _sortArrays(ParseApiRQ.remove, "Remove", key, [values]); diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index 8f80c509f..f68c1aa5b 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -43,7 +43,9 @@ class ParseUser extends ParseObject implements ParseCloneable { ParseUser(String username, String password, String emailAddress, {bool debug, ParseHTTPClient client}) : super(keyClassUser) { - client == null ? _client = ParseHTTPClient() : _client = client; + client == null + ? _client = ParseHTTPClient(ParseCoreData().httpClient) + : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); this.username = username; @@ -83,7 +85,7 @@ class ParseUser extends ParseObject implements ParseCloneable { host: tempUri.host, path: "${tempUri.path}$keyEndPointUserName"); - final response = await ParseHTTPClient() + final response = await ParseHTTPClient(ParseCoreData().httpClient) .get(uri, headers: {keyHeaderSessionToken: token}); return _handleResponse(_getEmptyUser(), response, ParseApiRQ.currentUser, _debug, _getEmptyUser().className); @@ -242,7 +244,7 @@ class ParseUser extends ParseObject implements ParseCloneable { try { final response = - await ParseHTTPClient().get("${ParseCoreData().serverUrl}/$path"); + await ParseHTTPClient(ParseCoreData().httpClient).get("${ParseCoreData().serverUrl}/$path"); ParseResponse parseResponse = ParseResponse.handleResponse(emptyUser, response); From bfdd6155f235765f65144007e07a584810ec4e3a Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Thu, 7 Feb 2019 11:56:38 +0100 Subject: [PATCH 2/5] Do not reuse HttpClient, store SecurityContext instead. --- lib/parse.dart | 8 ++++---- lib/src/data/parse_core_data.dart | 6 +++--- .../{browser_clinet.dart => browser_client.dart} | 2 +- lib/src/network/client_stub.dart | 2 +- lib/src/network/io_client.dart | 10 ++++++++-- lib/src/network/parse_http_client.dart | 2 +- lib/src/objects/parse_config.dart | 2 +- lib/src/objects/parse_file.dart | 2 +- lib/src/objects/parse_geo_point.dart | 2 +- lib/src/objects/parse_object.dart | 2 +- lib/src/objects/parse_user.dart | 8 ++++---- 11 files changed, 26 insertions(+), 20 deletions(-) rename lib/src/network/{browser_clinet.dart => browser_client.dart} (84%) diff --git a/lib/parse.dart b/lib/parse.dart index d7c61d7ed..435b250e3 100644 --- a/lib/parse.dart +++ b/lib/parse.dart @@ -81,7 +81,7 @@ class Parse { String clientKey, String masterKey, String sessionId, - HttpClient httpClient}) { + dynamic securityContext}) { ParseCoreData.init(appId, serverUrl, debug: debug, appName: appName, @@ -89,11 +89,11 @@ class Parse { masterKey: masterKey, clientKey: clientKey, sessionId: sessionId, - httpClient: httpClient); + securityContext: securityContext); ParseCoreData().initStorage(); - _client = ParseHTTPClient(httpClient); + _client = ParseHTTPClient(securityContext); _hasBeenInitialised = true; @@ -106,7 +106,7 @@ class Parse { ParseResponse parseResponse; try { - var response = await ParseHTTPClient(ParseCoreData().httpClient) + var response = await ParseHTTPClient(ParseCoreData().securityContext) .get("${ParseCoreData().serverUrl}$keyEndPointHealth"); parseResponse = ParseResponse.handleResponse(this, response, returnAsResult: true); diff --git a/lib/src/data/parse_core_data.dart b/lib/src/data/parse_core_data.dart index 2ef34f309..d4b5eb874 100644 --- a/lib/src/data/parse_core_data.dart +++ b/lib/src/data/parse_core_data.dart @@ -17,7 +17,7 @@ class ParseCoreData { masterKey, clientKey, sessionId, - httpClient}) { + securityContext}) { _instance = ParseCoreData._init(appId, serverUrl); if (debug != null) _instance.debug = debug; @@ -26,7 +26,7 @@ class ParseCoreData { if (clientKey != null) _instance.clientKey = clientKey; if (masterKey != null) _instance.masterKey = masterKey; if (sessionId != null) _instance.sessionId = sessionId; - if (httpClient != null) _instance.httpClient = httpClient; + if (securityContext != null) _instance.securityContext = securityContext; } String appName; @@ -36,7 +36,7 @@ class ParseCoreData { String masterKey; String clientKey; String sessionId; - HttpClient httpClient; + dynamic securityContext; bool debug; SharedPreferences storage; diff --git a/lib/src/network/browser_clinet.dart b/lib/src/network/browser_client.dart similarity index 84% rename from lib/src/network/browser_clinet.dart rename to lib/src/network/browser_client.dart index d5384cead..0ad73088a 100644 --- a/lib/src/network/browser_clinet.dart +++ b/lib/src/network/browser_client.dart @@ -6,4 +6,4 @@ import 'package:http/http.dart'; import 'package:http/browser_client.dart'; /// Used from conditional imports, matches the definition in `client_stub.dart`. -BaseClient createClient(dynamic httpClient) => BrowserClient(); +BaseClient createClient(dynamic securityContext) => BrowserClient(); diff --git a/lib/src/network/client_stub.dart b/lib/src/network/client_stub.dart index 89592c2c3..60df7db91 100644 --- a/lib/src/network/client_stub.dart +++ b/lib/src/network/client_stub.dart @@ -5,5 +5,5 @@ import 'package:http/http.dart'; /// Implemented in `browser_client.dart` and `io_client.dart`. -BaseClient createClient(dynamic httpClient) => throw UnsupportedError( +BaseClient createClient(dynamic securityContext) => throw UnsupportedError( 'Cannot create a client without dart:html or dart:io.'); diff --git a/lib/src/network/io_client.dart b/lib/src/network/io_client.dart index 18a6c0d9e..be49f98da 100644 --- a/lib/src/network/io_client.dart +++ b/lib/src/network/io_client.dart @@ -8,5 +8,11 @@ import 'package:http/http.dart'; import 'package:http/io_client.dart'; /// Used from conditional imports, matches the definition in `client_stub.dart`. -BaseClient createClient(HttpClient httpClient) => - httpClient != null ? IOClient(httpClient) : IOClient(); +BaseClient createClient(SecurityContext securityContext) { + if (securityContext != null) { + HttpClient httpClient = HttpClient(context: securityContext); + return IOClient(httpClient); + } else { + return IOClient(); + } +} diff --git a/lib/src/network/parse_http_client.dart b/lib/src/network/parse_http_client.dart index bf46d141e..b59e9f63e 100644 --- a/lib/src/network/parse_http_client.dart +++ b/lib/src/network/parse_http_client.dart @@ -7,7 +7,7 @@ class ParseHTTPClient extends BaseClient { ParseCoreData data = ParseCoreData(); Map additionalHeaders; - ParseHTTPClient([HttpClient httpClient]) : _client = createClient(httpClient); + ParseHTTPClient([dynamic securityContext]) : _client = createClient(securityContext); /// Overrides the call method for HTTP Client and adds custom headers @override diff --git a/lib/src/objects/parse_config.dart b/lib/src/objects/parse_config.dart index 3dfe864c1..d2fbc4d67 100644 --- a/lib/src/objects/parse_config.dart +++ b/lib/src/objects/parse_config.dart @@ -1,7 +1,7 @@ part of flutter_parse_sdk; class ParseConfig extends ParseObject { - var _client = ParseHTTPClient(ParseCoreData().httpClient); + var _client = ParseHTTPClient(ParseCoreData().securityContext); /// Creates an instance of ParseConfig so that you can grab all configs from the server ParseConfig({bool debug, ParseHTTPClient client}) : super('config') { diff --git a/lib/src/objects/parse_file.dart b/lib/src/objects/parse_file.dart index ce8c32302..0ffe4dfc2 100644 --- a/lib/src/objects/parse_file.dart +++ b/lib/src/objects/parse_file.dart @@ -26,7 +26,7 @@ class ParseFile extends ParseObject { /// {https://docs.parseplatform.org/rest/guide/#files/} ParseFile(this._file, {bool debug, ParseHTTPClient client}) : super(keyFile) { client == null - ? _client = ParseHTTPClient(ParseCoreData().httpClient) + ? _client = ParseHTTPClient(ParseCoreData().securityContext) : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); diff --git a/lib/src/objects/parse_geo_point.dart b/lib/src/objects/parse_geo_point.dart index f21234ad0..f0ff5512b 100644 --- a/lib/src/objects/parse_geo_point.dart +++ b/lib/src/objects/parse_geo_point.dart @@ -15,7 +15,7 @@ class ParseGeoPoint extends ParseObject { _longitude = longitude; client == null - ? _client = ParseHTTPClient(ParseCoreData().httpClient) + ? _client = ParseHTTPClient(ParseCoreData().securityContext) : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); } diff --git a/lib/src/objects/parse_object.dart b/lib/src/objects/parse_object.dart index fd46816cb..9f698af3e 100644 --- a/lib/src/objects/parse_object.dart +++ b/lib/src/objects/parse_object.dart @@ -18,7 +18,7 @@ class ParseObject extends ParseBase implements ParseCloneable { ParseObject(String className, {bool debug: false}) : super() { setClassName(className); _path = "$keyEndPointClasses$className"; - setClient(ParseHTTPClient(ParseCoreData().httpClient)); + setClient(ParseHTTPClient(ParseCoreData().securityContext)); setDebug(isDebugEnabled(objectLevelDebug: debug)); } diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index f68c1aa5b..1286725f5 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -44,7 +44,7 @@ class ParseUser extends ParseObject implements ParseCloneable { {bool debug, ParseHTTPClient client}) : super(keyClassUser) { client == null - ? _client = ParseHTTPClient(ParseCoreData().httpClient) + ? _client = ParseHTTPClient(ParseCoreData().securityContext) : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); @@ -85,7 +85,7 @@ class ParseUser extends ParseObject implements ParseCloneable { host: tempUri.host, path: "${tempUri.path}$keyEndPointUserName"); - final response = await ParseHTTPClient(ParseCoreData().httpClient) + final response = await ParseHTTPClient(ParseCoreData().securityContext) .get(uri, headers: {keyHeaderSessionToken: token}); return _handleResponse(_getEmptyUser(), response, ParseApiRQ.currentUser, _debug, _getEmptyUser().className); @@ -243,8 +243,8 @@ class ParseUser extends ParseObject implements ParseCloneable { var emptyUser = ParseUser(null, null, null); try { - final response = - await ParseHTTPClient(ParseCoreData().httpClient).get("${ParseCoreData().serverUrl}/$path"); + final response = await ParseHTTPClient(ParseCoreData().securityContext) + .get("${ParseCoreData().serverUrl}/$path"); ParseResponse parseResponse = ParseResponse.handleResponse(emptyUser, response); From 765a3dd58fafade05bd101845ec17ad2e6324fa6 Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Thu, 7 Feb 2019 13:08:39 +0100 Subject: [PATCH 3/5] Drop compatibility with dart:html. --- lib/parse.dart | 7 ++----- lib/src/data/parse_core_data.dart | 2 +- lib/src/network/browser_client.dart | 9 --------- lib/src/network/client_stub.dart | 9 --------- lib/src/network/io_client.dart | 18 ------------------ lib/src/network/parse_http_client.dart | 5 ++++- 6 files changed, 7 insertions(+), 43 deletions(-) delete mode 100644 lib/src/network/browser_client.dart delete mode 100644 lib/src/network/client_stub.dart delete mode 100644 lib/src/network/io_client.dart diff --git a/lib/parse.dart b/lib/parse.dart index 435b250e3..dad470edb 100644 --- a/lib/parse.dart +++ b/lib/parse.dart @@ -6,15 +6,12 @@ import 'dart:io'; import 'dart:typed_data'; import 'package:http/http.dart'; +import 'package:http/io_client.dart'; import 'package:meta/meta.dart'; import 'package:path/path.dart' as path; import 'package:shared_preferences/shared_preferences.dart'; import 'package:web_socket_channel/io.dart'; -import 'src/network/client_stub.dart' - if (dart.library.html) 'src/network/browser_client.dart' - if (dart.library.io) 'src/network/io_client.dart'; - part 'src/base/parse_constants.dart'; part 'src/data/parse_core_data.dart'; @@ -81,7 +78,7 @@ class Parse { String clientKey, String masterKey, String sessionId, - dynamic securityContext}) { + SecurityContext securityContext}) { ParseCoreData.init(appId, serverUrl, debug: debug, appName: appName, diff --git a/lib/src/data/parse_core_data.dart b/lib/src/data/parse_core_data.dart index d4b5eb874..c19f82cd7 100644 --- a/lib/src/data/parse_core_data.dart +++ b/lib/src/data/parse_core_data.dart @@ -36,7 +36,7 @@ class ParseCoreData { String masterKey; String clientKey; String sessionId; - dynamic securityContext; + SecurityContext securityContext; bool debug; SharedPreferences storage; diff --git a/lib/src/network/browser_client.dart b/lib/src/network/browser_client.dart deleted file mode 100644 index 0ad73088a..000000000 --- a/lib/src/network/browser_client.dart +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:http/http.dart'; -import 'package:http/browser_client.dart'; - -/// Used from conditional imports, matches the definition in `client_stub.dart`. -BaseClient createClient(dynamic securityContext) => BrowserClient(); diff --git a/lib/src/network/client_stub.dart b/lib/src/network/client_stub.dart deleted file mode 100644 index 60df7db91..000000000 --- a/lib/src/network/client_stub.dart +++ /dev/null @@ -1,9 +0,0 @@ -// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:http/http.dart'; - -/// Implemented in `browser_client.dart` and `io_client.dart`. -BaseClient createClient(dynamic securityContext) => throw UnsupportedError( - 'Cannot create a client without dart:html or dart:io.'); diff --git a/lib/src/network/io_client.dart b/lib/src/network/io_client.dart deleted file mode 100644 index be49f98da..000000000 --- a/lib/src/network/io_client.dart +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'dart:io'; - -import 'package:http/http.dart'; -import 'package:http/io_client.dart'; - -/// Used from conditional imports, matches the definition in `client_stub.dart`. -BaseClient createClient(SecurityContext securityContext) { - if (securityContext != null) { - HttpClient httpClient = HttpClient(context: securityContext); - return IOClient(httpClient); - } else { - return IOClient(); - } -} diff --git a/lib/src/network/parse_http_client.dart b/lib/src/network/parse_http_client.dart index b59e9f63e..5416e87e9 100644 --- a/lib/src/network/parse_http_client.dart +++ b/lib/src/network/parse_http_client.dart @@ -7,7 +7,10 @@ class ParseHTTPClient extends BaseClient { ParseCoreData data = ParseCoreData(); Map additionalHeaders; - ParseHTTPClient([dynamic securityContext]) : _client = createClient(securityContext); + ParseHTTPClient([dynamic securityContext]) + : _client = securityContext != null + ? IOClient(HttpClient(context: securityContext)) + : IOClient(); /// Overrides the call method for HTTP Client and adds custom headers @override From 62759f10e6814e25a475e9d53bf26f6bb1116e7b Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Thu, 7 Feb 2019 13:40:50 +0100 Subject: [PATCH 4/5] Remove unused ParseHTTPClient object. --- lib/parse.dart | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/parse.dart b/lib/parse.dart index dad470edb..1d283d218 100644 --- a/lib/parse.dart +++ b/lib/parse.dart @@ -56,7 +56,6 @@ part 'src/utils/parse_utils.dart'; class Parse { ParseCoreData data; - ParseHTTPClient _client; bool _hasBeenInitialised = false; /// To initialise Parse Server in your application @@ -90,8 +89,6 @@ class Parse { ParseCoreData().initStorage(); - _client = ParseHTTPClient(securityContext); - _hasBeenInitialised = true; return Parse(); From fb613785e422101c9336067f06425565290f0b6c Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Thu, 7 Feb 2019 15:10:38 +0100 Subject: [PATCH 5/5] Replacement of dynamic with SecurityContext was missing. --- lib/src/network/parse_http_client.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/network/parse_http_client.dart b/lib/src/network/parse_http_client.dart index 5416e87e9..c84d9842d 100644 --- a/lib/src/network/parse_http_client.dart +++ b/lib/src/network/parse_http_client.dart @@ -7,7 +7,7 @@ class ParseHTTPClient extends BaseClient { ParseCoreData data = ParseCoreData(); Map additionalHeaders; - ParseHTTPClient([dynamic securityContext]) + ParseHTTPClient([SecurityContext securityContext]) : _client = securityContext != null ? IOClient(HttpClient(context: securityContext)) : IOClient();