From 35b75389cd3ddcee13179c5c93f0e45df3705936 Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Fri, 8 Feb 2019 13:06:54 +0100 Subject: [PATCH 1/3] Clean-up usage of ParseHTTPClient objects. --- lib/parse_server_sdk.dart | 8 ++-- lib/src/objects/parse_config.dart | 4 +- lib/src/objects/parse_file.dart | 60 +++++++++++----------------- lib/src/objects/parse_function.dart | 2 +- lib/src/objects/parse_geo_point.dart | 6 +-- lib/src/objects/parse_object.dart | 10 ++--- lib/src/objects/parse_user.dart | 20 +++++----- 7 files changed, 47 insertions(+), 63 deletions(-) diff --git a/lib/parse_server_sdk.dart b/lib/parse_server_sdk.dart index 50ced0b16..a8f6fe0ab 100644 --- a/lib/parse_server_sdk.dart +++ b/lib/parse_server_sdk.dart @@ -98,12 +98,14 @@ class Parse { bool hasParseBeenInitialised() => _hasBeenInitialised; - Future healthCheck() async { + Future healthCheck({ParseHTTPClient client}) async { ParseResponse parseResponse; + ParseHTTPClient _client = + client ?? ParseHTTPClient(ParseCoreData().securityContext); try { - var response = await ParseHTTPClient(ParseCoreData().securityContext) - .get("${ParseCoreData().serverUrl}$keyEndPointHealth"); + var response = + await _client.get("${ParseCoreData().serverUrl}$keyEndPointHealth"); parseResponse = ParseResponse.handleResponse(this, response, returnAsResult: true); } on Exception catch (e) { diff --git a/lib/src/objects/parse_config.dart b/lib/src/objects/parse_config.dart index d2fbc4d67..aa27c88b6 100644 --- a/lib/src/objects/parse_config.dart +++ b/lib/src/objects/parse_config.dart @@ -1,12 +1,10 @@ part of flutter_parse_sdk; class ParseConfig extends ParseObject { - 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') { if (debug != null) setDebug(debug); - if (client != null) setClient(client); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } /// Gets all configs from the server diff --git a/lib/src/objects/parse_file.dart b/lib/src/objects/parse_file.dart index 5c31f87c1..00c0463da 100644 --- a/lib/src/objects/parse_file.dart +++ b/lib/src/objects/parse_file.dart @@ -1,28 +1,18 @@ part of flutter_parse_sdk; class ParseFile extends ParseObject { - File _file; - String _fileName; - String _fileUrl; + File file; + String name; + String url; @override String _path; - String get name => _fileName; - - String get url => _fileUrl; - - File get file => _file; - - set url(String url) => _fileUrl = url; - - set name(String name) => _fileName = name; - bool get saved => url != null; @override toJson({bool forApiRQ: false}) => - {'__type': keyFile, 'name': _fileName, 'url': _fileUrl}; + {'__type': keyFile, 'name': name, 'url': url}; @override String toString() => json.encode(toString()); @@ -30,54 +20,52 @@ class ParseFile extends ParseObject { /// Creates a new file /// /// {https://docs.parseplatform.org/rest/guide/#files/} - ParseFile(this._file, + ParseFile(this.file, {String name, String url, bool debug, ParseHTTPClient client}) : super(keyFile) { - client == null - ? _client = ParseHTTPClient(ParseCoreData().securityContext) - : _client = client; - _debug = isDebugEnabled(objectLevelDebug: debug); - if (_file != null) { - this._fileName = path.basename(_file.path); - this._path = 'files/$_fileName'; + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); + + if (file != null) { + this.name = path.basename(file.path); + this._path = 'files/$name'; } else { - this._fileName = name; - this._fileUrl = url; + this.name = name; + this.url = url; } } Future loadStorage() async { Directory tempPath = await getTemporaryDirectory(); - if (_fileName == null) { - _file = null; + if (name == null) { + file = null; return this; } - File possibleFile = new File("${tempPath.path}/$_fileName"); + File possibleFile = new File("${tempPath.path}/$name"); bool exists = await possibleFile.exists(); if (exists) { - _file = possibleFile; + file = possibleFile; } else { - _file = null; + file = null; } return this; } Future download() async { - if (_fileUrl == null) { + if (url == null) { return this; } Directory tempPath = await getTemporaryDirectory(); - this._file = new File("${tempPath.path}/$_fileName"); - await _file.create(); + this.file = new File("${tempPath.path}/$name"); + await file.create(); - var response = await _client.get(_fileUrl); - _file.writeAsBytes(response.bodyBytes); + var response = await _client.get(url); + file.writeAsBytes(response.bodyBytes); return this; } @@ -88,13 +76,13 @@ class ParseFile extends ParseObject { return this; } - final ext = path.extension(_file.path).replaceAll('.', ''); + final ext = path.extension(file.path).replaceAll('.', ''); final headers = { HttpHeaders.contentTypeHeader: getContentType(ext) }; var uri = _client.data.serverUrl + "$_path"; - final body = await _file.readAsBytes(); + final body = await file.readAsBytes(); final response = await _client.post(uri, headers: headers, body: body); return handleResponse( this, response, ParseApiRQ.upload, _debug, className); diff --git a/lib/src/objects/parse_function.dart b/lib/src/objects/parse_function.dart index 6c0e7e632..716b280ec 100644 --- a/lib/src/objects/parse_function.dart +++ b/lib/src/objects/parse_function.dart @@ -14,7 +14,7 @@ class ParseCloudFunction extends ParseObject { _path = "/functions/$functionName"; if (debug != null) setDebug(debug); - if (client != null) setClient(client); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } /// Executes a cloud function diff --git a/lib/src/objects/parse_geo_point.dart b/lib/src/objects/parse_geo_point.dart index f0ff5512b..2b1f07fda 100644 --- a/lib/src/objects/parse_geo_point.dart +++ b/lib/src/objects/parse_geo_point.dart @@ -14,10 +14,8 @@ class ParseGeoPoint extends ParseObject { _latitude = latitude; _longitude = longitude; - client == null - ? _client = ParseHTTPClient(ParseCoreData().securityContext) - : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } double get latitude => _latitude; @@ -33,4 +31,4 @@ class ParseGeoPoint extends ParseObject { assert(value >= -180.0 || value <= 180.0); _longitude = value; } -} \ No newline at end of file +} diff --git a/lib/src/objects/parse_object.dart b/lib/src/objects/parse_object.dart index 3eea1587c..45a1143dc 100644 --- a/lib/src/objects/parse_object.dart +++ b/lib/src/objects/parse_object.dart @@ -1,7 +1,6 @@ part of flutter_parse_sdk; class ParseObject extends ParseBase implements ParseCloneable { - ParseObject.clone(String className) : this(className); @override @@ -16,21 +15,18 @@ class ParseObject extends ParseBase implements ParseCloneable { /// [String] className refers to the Table Name in your Parse Server, /// [bool] debug will overwrite the current default debug settings and /// [ParseHttpClient] can be overwritten to create your own HTTP Client - ParseObject(String className, {bool debug: false}) : super() { + ParseObject(String className, {bool debug: false, ParseHTTPClient client}) + : super() { setClassName(className); _path = "$keyEndPointClasses$className"; - setClient(ParseHTTPClient(ParseCoreData().securityContext)); setDebug(isDebugEnabled(objectLevelDebug: debug)); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } void setDebug(bool debug) { _debug = debug; } - void setClient(ParseHTTPClient client) { - _client = client; - } - String toPointer() => parseEncode(this); /// Gets an object from the server using it's [String] objectId diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index 86b469440..965181789 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -43,10 +43,8 @@ class ParseUser extends ParseObject implements ParseCloneable { ParseUser(String username, String password, String emailAddress, {bool debug, ParseHTTPClient client}) : super(keyClassUser) { - client == null - ? _client = ParseHTTPClient(ParseCoreData().securityContext) - : _client = client; _debug = isDebugEnabled(objectLevelDebug: debug); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); this.username = username; this.password = password; @@ -65,8 +63,10 @@ class ParseUser extends ParseObject implements ParseCloneable { /// fromServer can be called and an updated version of the [User] object will be /// returned static Future getCurrentUserFromServer( - {String token, bool debug}) async { + {String token, bool debug, ParseHTTPClient client}) async { bool _debug = isDebugEnabled(objectLevelDebug: debug); + ParseHTTPClient _client = + client ?? ParseHTTPClient(ParseCoreData().securityContext); // We can't get the current user and session without a sessionId if (token == null && ParseCoreData().sessionId == null) { @@ -85,8 +85,8 @@ class ParseUser extends ParseObject implements ParseCloneable { host: tempUri.host, path: "${tempUri.path}$keyEndPointUserName"); - final response = await ParseHTTPClient(ParseCoreData().securityContext) - .get(uri, headers: {keyHeaderSessionToken: token}); + final response = + await _client.get(uri, headers: {keyHeaderSessionToken: token}); return _handleResponse(_getEmptyUser(), response, ParseApiRQ.currentUser, _debug, _getEmptyUser().className); } on Exception catch (e) { @@ -271,12 +271,14 @@ class ParseUser extends ParseObject implements ParseCloneable { } /// Gets a list of all users (limited return) - static Future all() async { + static Future all({ParseHTTPClient client}) async { var emptyUser = ParseUser(null, null, null); + ParseHTTPClient _client = + client ?? ParseHTTPClient(ParseCoreData().securityContext); + try { - final response = await ParseHTTPClient(ParseCoreData().securityContext) - .get("${ParseCoreData().serverUrl}/$path"); + final response = await _client.get("${ParseCoreData().serverUrl}/$path"); ParseResponse parseResponse = ParseResponse.handleResponse(emptyUser, response); From 970335b94fc0ec92a53d02456d2db8c4838d4b71 Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Fri, 8 Feb 2019 13:50:20 +0100 Subject: [PATCH 2/3] Clean-up usage of debug switch. --- lib/parse_server_sdk.dart | 7 +++++-- lib/src/objects/parse_config.dart | 2 +- lib/src/objects/parse_function.dart | 2 +- lib/src/objects/parse_object.dart | 7 ++----- lib/src/objects/parse_user.dart | 5 +++-- lib/src/utils/parse_utils.dart | 6 ++---- 6 files changed, 14 insertions(+), 15 deletions(-) diff --git a/lib/parse_server_sdk.dart b/lib/parse_server_sdk.dart index a8f6fe0ab..c16f84427 100644 --- a/lib/parse_server_sdk.dart +++ b/lib/parse_server_sdk.dart @@ -98,8 +98,11 @@ class Parse { bool hasParseBeenInitialised() => _hasBeenInitialised; - Future healthCheck({ParseHTTPClient client}) async { + Future healthCheck( + {bool debug, ParseHTTPClient client}) async { ParseResponse parseResponse; + + bool _debug = isDebugEnabled(objectLevelDebug: debug); ParseHTTPClient _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); @@ -112,7 +115,7 @@ class Parse { parseResponse = ParseResponse.handleException(e); } - if (ParseCoreData().debug) { + if (_debug) { logger(ParseCoreData().appName, keyClassMain, ParseApiRQ.healthCheck.toString(), parseResponse); } diff --git a/lib/src/objects/parse_config.dart b/lib/src/objects/parse_config.dart index aa27c88b6..f575aca66 100644 --- a/lib/src/objects/parse_config.dart +++ b/lib/src/objects/parse_config.dart @@ -3,7 +3,7 @@ part of flutter_parse_sdk; class ParseConfig extends ParseObject { /// Creates an instance of ParseConfig so that you can grab all configs from the server ParseConfig({bool debug, ParseHTTPClient client}) : super('config') { - if (debug != null) setDebug(debug); + _debug = isDebugEnabled(objectLevelDebug: debug); _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } diff --git a/lib/src/objects/parse_function.dart b/lib/src/objects/parse_function.dart index 716b280ec..c271d1015 100644 --- a/lib/src/objects/parse_function.dart +++ b/lib/src/objects/parse_function.dart @@ -13,7 +13,7 @@ class ParseCloudFunction extends ParseObject { : super(functionName) { _path = "/functions/$functionName"; - if (debug != null) setDebug(debug); + _debug = isDebugEnabled(objectLevelDebug: debug); _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } diff --git a/lib/src/objects/parse_object.dart b/lib/src/objects/parse_object.dart index 45a1143dc..b64dc1324 100644 --- a/lib/src/objects/parse_object.dart +++ b/lib/src/objects/parse_object.dart @@ -19,12 +19,9 @@ class ParseObject extends ParseBase implements ParseCloneable { : super() { setClassName(className); _path = "$keyEndPointClasses$className"; - setDebug(isDebugEnabled(objectLevelDebug: debug)); - _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); - } - void setDebug(bool debug) { - _debug = debug; + _debug = isDebugEnabled(objectLevelDebug: debug); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } String toPointer() => parseEncode(this); diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index 965181789..cd58bb05a 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -271,9 +271,10 @@ class ParseUser extends ParseObject implements ParseCloneable { } /// Gets a list of all users (limited return) - static Future all({ParseHTTPClient client}) async { + static Future all({bool debug, ParseHTTPClient client}) async { var emptyUser = ParseUser(null, null, null); + bool _debug = isDebugEnabled(objectLevelDebug: debug); ParseHTTPClient _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); @@ -283,7 +284,7 @@ class ParseUser extends ParseObject implements ParseCloneable { ParseResponse parseResponse = ParseResponse.handleResponse(emptyUser, response); - if (ParseCoreData().debug) { + if (_debug) { logger(ParseCoreData().appName, keyClassUser, ParseApiRQ.getAll.toString(), parseResponse); } diff --git a/lib/src/utils/parse_utils.dart b/lib/src/utils/parse_utils.dart index 760354ab0..ebc423af9 100644 --- a/lib/src/utils/parse_utils.dart +++ b/lib/src/utils/parse_utils.dart @@ -4,10 +4,8 @@ part of flutter_parse_sdk; /// /// Debug can be set in 2 places, one global param in the Parse.initialise, and /// then can be overidden class by class -bool isDebugEnabled({objectLevelDebug: false}) { - bool debug = objectLevelDebug; - if (ParseCoreData().debug != null) debug = ParseCoreData().debug; - return debug; +bool isDebugEnabled({bool objectLevelDebug}) { + return objectLevelDebug ?? ParseCoreData().debug ?? false; } /// Converts the object to the correct value for JSON, From e2c1f692ec807d7b4b0eab0119ac87664455ded5 Mon Sep 17 00:00:00 2001 From: Christoph Bayer Date: Fri, 8 Feb 2019 15:29:18 +0100 Subject: [PATCH 3/3] Fix some spellings. --- lib/parse_server_sdk.dart | 14 +++++------ ...e_livequery.dart => parse_live_query.dart} | 0 lib/src/network/parse_query.dart | 24 +++++++++---------- ...rse_clonable.dart => parse_cloneable.dart} | 0 lib/src/objects/parse_error.dart | 4 ++-- lib/src/objects/parse_user.dart | 2 +- lib/src/utils/parse_file_extensions.dart | 2 +- lib/src/utils/parse_utils.dart | 6 ++--- 8 files changed, 26 insertions(+), 26 deletions(-) rename lib/src/network/{parse_livequery.dart => parse_live_query.dart} (100%) rename lib/src/objects/{parse_clonable.dart => parse_cloneable.dart} (100%) diff --git a/lib/parse_server_sdk.dart b/lib/parse_server_sdk.dart index c16f84427..89ba5a595 100644 --- a/lib/parse_server_sdk.dart +++ b/lib/parse_server_sdk.dart @@ -22,13 +22,13 @@ part 'src/enums/parse_enum_api_rq.dart'; part 'src/network/parse_http_client.dart'; -part 'src/network/parse_livequery.dart'; +part 'src/network/parse_live_query.dart'; part 'src/network/parse_query.dart'; part 'src/objects/parse_base.dart'; -part 'src/objects/parse_clonable.dart'; +part 'src/objects/parse_cloneable.dart'; part 'src/objects/parse_config.dart'; @@ -58,11 +58,11 @@ part 'src/utils/parse_utils.dart'; class Parse { ParseCoreData data; - bool _hasBeenInitialised = false; + bool _hasBeenInitialized = false; - /// To initialise Parse Server in your application + /// To initialize Parse Server in your application /// - /// This should be initialised in MyApp() creation + /// This should be initialized in MyApp() creation /// /// ``` /// Parse().initialize( @@ -91,12 +91,12 @@ class Parse { ParseCoreData().initStorage(); - _hasBeenInitialised = true; + _hasBeenInitialized = true; return Parse(); } - bool hasParseBeenInitialised() => _hasBeenInitialised; + bool hasParseBeenInitialized() => _hasBeenInitialized; Future healthCheck( {bool debug, ParseHTTPClient client}) async { diff --git a/lib/src/network/parse_livequery.dart b/lib/src/network/parse_live_query.dart similarity index 100% rename from lib/src/network/parse_livequery.dart rename to lib/src/network/parse_live_query.dart diff --git a/lib/src/network/parse_query.dart b/lib/src/network/parse_query.dart index ce3958560..3d3813e74 100644 --- a/lib/src/network/parse_query.dart +++ b/lib/src/network/parse_query.dart @@ -27,7 +27,7 @@ class QueryBuilder { limiters['where'] = where; } - /// Orders the results ascedingly. + /// Sorts the results in ascending order. /// /// [String] order will be the column of the table that the results are /// ordered by @@ -35,7 +35,7 @@ class QueryBuilder { limiters["order"] = order; } - /// Orders the results descendingly. + /// Sorts the results descending order. /// /// [String] order will be the column of the table that the results are /// ordered by @@ -48,12 +48,12 @@ class QueryBuilder { /// [String] keys will only return the columns of a result you want the data for, /// this is useful for large objects void keysToReturn(List keys) { - limiters["keys"] = concatArray(keys); + limiters["keys"] = concatenateArray(keys); } /// Includes other ParseObjects stored as a Pointer void includeObject(List objectTypes) { - limiters["include"] = concatArray(objectTypes); + limiters["include"] = concatenateArray(objectTypes); } /// Returns an object where the [String] column starts with [value] @@ -131,7 +131,7 @@ class QueryBuilder { MapEntry(column, value), "\$nin")); } - /// Returns an object where the [String] column for the object has data correctley entered/saved + /// Returns an object where the [String] column for the object has data correctly entered/saved void whereValueExists(String column, bool value) { queries.add(_buildQueryWithColumnValueAndOperator( MapEntry(column, value), "\$exists")); @@ -211,7 +211,7 @@ class QueryBuilder { return queryBuilder; } - String concatArray(List queries) { + String concatenateArray(List queries) { String queryBuilder = ""; for (var item in queries) { @@ -252,17 +252,17 @@ class QueryBuilder { /// This joins queries that should be joined together... e.g. age > 10 && /// age < 20, this would be similar to age > 10 < 20 List _checkForMultipleColumnInstances(List queries) { - List sanitisedQueries = List(); + List sanitizedQueries = List(); List keysAlreadyCompacted = List(); // Run through each query for (var query in queries) { - // Add queries that don't need sanitising + // Add queries that don't need sanitizing if (query.key == _NO_OPERATOR_NEEDED || query.key == _SINGLE_QUERY) { - sanitisedQueries.add(MapEntry(_NO_OPERATOR_NEEDED, query.value)); + sanitizedQueries.add(MapEntry(_NO_OPERATOR_NEEDED, query.value)); } - // Check if query with same column name has been sanitised + // Check if query with same column name has been sanitized if (!keysAlreadyCompacted.contains(query.key) && query.key != _NO_OPERATOR_NEEDED && query.key != _SINGLE_QUERY) { @@ -290,11 +290,11 @@ class QueryBuilder { } } - sanitisedQueries.add(MapEntry(query.key, queryStart += "{$queryEnd}")); + sanitizedQueries.add(MapEntry(query.key, queryStart += "{$queryEnd}")); } } - return sanitisedQueries; + return sanitizedQueries; } /// Adds the limiters to the query, i.e. skip=10, limit=10 diff --git a/lib/src/objects/parse_clonable.dart b/lib/src/objects/parse_cloneable.dart similarity index 100% rename from lib/src/objects/parse_clonable.dart rename to lib/src/objects/parse_cloneable.dart diff --git a/lib/src/objects/parse_error.dart b/lib/src/objects/parse_error.dart index 3817213ec..e2d059206 100644 --- a/lib/src/objects/parse_error.dart +++ b/lib/src/objects/parse_error.dart @@ -48,7 +48,7 @@ class ParseError { 204: 'EmailMissing', 205: 'EmailNotFound', 206: 'SessionMissing', - 207: 'MustCreateUserThroughSignup', + 207: 'MustCreateUserThroughSignUp', 208: 'AccountAlreadyLinked', 209: 'InvalidSessionToken', 250: 'LinkedIdMissing', @@ -63,7 +63,7 @@ class ParseError { ParseError( {this.code = -1, - this.message = "Unkown error", + this.message = "Unknown error", this.isTypeOfException = false, bool debug: false}) { type = exceptions[code]; diff --git a/lib/src/objects/parse_user.dart b/lib/src/objects/parse_user.dart index cd58bb05a..85d233e07 100644 --- a/lib/src/objects/parse_user.dart +++ b/lib/src/objects/parse_user.dart @@ -33,7 +33,7 @@ class ParseUser extends ParseObject implements ParseCloneable { /// Creates an instance of ParseUser /// /// Users can set whether debug should be set on this class with a [bool], - /// they can also create thier own custom version of [ParseHttpClient] + /// they can also create their own custom version of [ParseHttpClient] /// /// Creates a new user locally /// diff --git a/lib/src/utils/parse_file_extensions.dart b/lib/src/utils/parse_file_extensions.dart index 105d23e62..23fa1f147 100644 --- a/lib/src/utils/parse_file_extensions.dart +++ b/lib/src/utils/parse_file_extensions.dart @@ -25,7 +25,7 @@ String getContentType(String extension) { return contentType; } -/// Add content types based on extesion to a map +/// Add content types based on extension to a map Map _queryExtensions() { Map extensions = Map(); diff --git a/lib/src/utils/parse_utils.dart b/lib/src/utils/parse_utils.dart index ebc423af9..422e011e3 100644 --- a/lib/src/utils/parse_utils.dart +++ b/lib/src/utils/parse_utils.dart @@ -2,15 +2,15 @@ part of flutter_parse_sdk; /// Checks whether debug is enabled /// -/// Debug can be set in 2 places, one global param in the Parse.initialise, and -/// then can be overidden class by class +/// Debug can be set in 2 places, one global param in the Parse.initialize, and +/// then can be overwritten class by class bool isDebugEnabled({bool objectLevelDebug}) { return objectLevelDebug ?? ParseCoreData().debug ?? false; } /// Converts the object to the correct value for JSON, /// -/// Strings are wrapped with "" but ints and others are not +/// Strings are wrapped with "" but integers and others are not convertValueToCorrectType(dynamic value) { if (value is String && !value.contains('__type')) { return "\"$value\"";