diff --git a/lib/parse_server_sdk.dart b/lib/parse_server_sdk.dart index 50ced0b16..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,26 +91,31 @@ class Parse { ParseCoreData().initStorage(); - _hasBeenInitialised = true; + _hasBeenInitialized = true; return Parse(); } - bool hasParseBeenInitialised() => _hasBeenInitialised; + bool hasParseBeenInitialized() => _hasBeenInitialized; - Future healthCheck() async { + Future healthCheck( + {bool debug, ParseHTTPClient client}) async { ParseResponse parseResponse; + bool _debug = isDebugEnabled(objectLevelDebug: debug); + 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) { parseResponse = ParseResponse.handleException(e); } - if (ParseCoreData().debug) { + if (_debug) { logger(ParseCoreData().appName, keyClassMain, ParseApiRQ.healthCheck.toString(), parseResponse); } 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_config.dart b/lib/src/objects/parse_config.dart index d2fbc4d67..f575aca66 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); + _debug = isDebugEnabled(objectLevelDebug: debug); + _client = client ?? ParseHTTPClient(ParseCoreData().securityContext); } /// Gets all configs from the server 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_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..c271d1015 100644 --- a/lib/src/objects/parse_function.dart +++ b/lib/src/objects/parse_function.dart @@ -13,8 +13,8 @@ class ParseCloudFunction extends ParseObject { : super(functionName) { _path = "/functions/$functionName"; - if (debug != null) setDebug(debug); - if (client != null) setClient(client); + _debug = isDebugEnabled(objectLevelDebug: debug); + _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..b64dc1324 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,19 +15,13 @@ 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)); - } - - void setDebug(bool debug) { - _debug = debug; - } - void setClient(ParseHTTPClient client) { - _client = client; + _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 86b469440..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 /// @@ -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,17 +271,20 @@ class ParseUser extends ParseObject implements ParseCloneable { } /// Gets a list of all users (limited return) - static Future all() 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); + 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); - if (ParseCoreData().debug) { + if (_debug) { logger(ParseCoreData().appName, keyClassUser, ParseApiRQ.getAll.toString(), parseResponse); } 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 760354ab0..422e011e3 100644 --- a/lib/src/utils/parse_utils.dart +++ b/lib/src/utils/parse_utils.dart @@ -2,17 +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 -bool isDebugEnabled({objectLevelDebug: false}) { - bool debug = objectLevelDebug; - if (ParseCoreData().debug != null) debug = ParseCoreData().debug; - return debug; +/// 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\"";