Skip to content

Commit b103aff

Browse files
authored
Merge pull request #4 from phillwiggins/master
Merge upstream.
2 parents 097e116 + e70f3e1 commit b103aff

15 files changed

+78
-52
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
## 1.0.11
2+
ParseFile fixed
3+
Anonymous login
4+
SecurityContext
5+
CloudFunctions with objects
6+
17
## 1.0.10
28
Add ParseConfig.
39
Fixed whereEqualsTo('', PARSEOBJECT) and other queries

README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Want to get involved? Join our Slack channel and help out! (http://flutter-parse
1313
To install, either add to your pubspec.yaml
1414
```
1515
dependencies:
16-
parse_server_sdk: ^1.0.10
16+
parse_server_sdk: ^1.0.11
1717
```
1818
or clone this repository and add to your project. As this is an early development with multiple contributors, it is probably best to download/clone and keep updating as an when a new feature is added.
1919

@@ -33,8 +33,10 @@ Parse().initialize(
3333
ApplicationConstants.keyApplicationId,
3434
ApplicationConstants.keyParseServerUrl,
3535
masterKey: ApplicationConstants.keyParseMasterKey,
36-
debug: true,
37-
liveQuery: true);
36+
clientKey: ApplicationConstants.keyParseClientKey,
37+
debug: true,
38+
liveQuery: true,
39+
securityContext: securityContext);
3840
```
3941

4042
## Queries

example/lib/diet_plan.dart

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import 'dart:core';
22

3-
import 'package:parse_server_sdk/parse.dart';
3+
import 'package:parse_server_sdk/parse_server_sdk.dart';
44

55
class DietPlan extends ParseObject implements ParseCloneable {
6-
76
DietPlan() : super(_keyTableName);
8-
DietPlan.clone(): this();
7+
DietPlan.clone() : this();
98

109
/// Looks strangely hacky but due to Flutter not using reflection, we have to
1110
/// mimic a clone
12-
@override clone(Map map) => DietPlan.clone()..fromJson(map);
11+
@override
12+
clone(Map map) => DietPlan.clone()..fromJson(map);
1313

1414
static const String _keyTableName = 'Diet_Plans';
1515
static const String keyName = 'Name';

example/lib/main.dart

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import 'package:flutter/material.dart';
22
import 'package:flutter_plugin_example/application_constants.dart';
33
import 'package:flutter_plugin_example/diet_plan.dart';
4-
import 'package:parse_server_sdk/parse.dart';
4+
import 'package:parse_server_sdk/parse_server_sdk.dart';
55

66
void main() => runApp(new MyApp());
77

@@ -178,20 +178,13 @@ class _MyAppState extends State<MyApp> {
178178
}
179179

180180
function() async {
181-
var user =
182-
ParseUser("TestFlutter", "TestPassword123", "[email protected]");
183-
await user.signUp();
184-
var loginResponse = await user.login();
185-
if (loginResponse.success) user = loginResponse.result;
186-
187-
var customClient = ParseHTTPClient();
188-
customClient.additionalHeaders = {
189-
keyHeaderSessionToken: ParseCoreData().sessionId
190-
};
191-
var function = ParseCloudFunction('hello', client: customClient);
192-
function.execute();
193-
194-
user.destroy();
181+
var function = ParseCloudFunction('hello');
182+
var result = await function.executeObjectFunction<ParseObject>();
183+
if (result.success) {
184+
if (result.result is ParseObject) {
185+
print((result.result as ParseObject).className);
186+
}
187+
}
195188
}
196189

197190
functionWithParameters() async {

lib/parse.dart renamed to lib/parse_server_sdk.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import 'dart:io';
66
import 'dart:typed_data';
77

88
import 'package:http/http.dart';
9+
import 'package:http/io_client.dart';
910
import 'package:meta/meta.dart';
1011
import 'package:path/path.dart' as path;
1112
import 'package:shared_preferences/shared_preferences.dart';
@@ -57,7 +58,6 @@ part 'src/utils/parse_utils.dart';
5758

5859
class Parse {
5960
ParseCoreData data;
60-
final ParseHTTPClient client = new ParseHTTPClient();
6161
bool _hasBeenInitialised = false;
6262

6363
/// To initialise Parse Server in your application
@@ -78,14 +78,16 @@ class Parse {
7878
String liveQueryUrl,
7979
String clientKey,
8080
String masterKey,
81-
String sessionId}) {
81+
String sessionId,
82+
SecurityContext securityContext}) {
8283
ParseCoreData.init(appId, serverUrl,
8384
debug: debug,
8485
appName: appName,
8586
liveQueryUrl: liveQueryUrl,
8687
masterKey: masterKey,
8788
clientKey: clientKey,
88-
sessionId: sessionId);
89+
sessionId: sessionId,
90+
securityContext: securityContext);
8991

9092
ParseCoreData().initStorage();
9193

@@ -100,7 +102,7 @@ class Parse {
100102
ParseResponse parseResponse;
101103

102104
try {
103-
var response = await ParseHTTPClient()
105+
var response = await ParseHTTPClient(ParseCoreData().securityContext)
104106
.get("${ParseCoreData().serverUrl}$keyEndPointHealth");
105107
parseResponse =
106108
ParseResponse.handleResponse(this, response, returnAsResult: true);

lib/src/base/parse_constants.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of flutter_parse_sdk;
22

33
// Library
4-
const String keySdkVersion = '1.0.10';
4+
const String keySdkVersion = '1.0.11';
55
const String keyLibraryName = 'Flutter Parse SDK';
66

77
// End Points

lib/src/data/parse_core_data.dart

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,13 @@ class ParseCoreData {
1111
/// This class should not be user unless switching servers during the app,
1212
/// which is odd. Should only be user by Parse.init
1313
static void init(appId, serverUrl,
14-
{debug, appName, liveQueryUrl, masterKey, clientKey, sessionId}) {
14+
{debug,
15+
appName,
16+
liveQueryUrl,
17+
masterKey,
18+
clientKey,
19+
sessionId,
20+
securityContext}) {
1521
_instance = ParseCoreData._init(appId, serverUrl);
1622

1723
if (debug != null) _instance.debug = debug;
@@ -20,6 +26,7 @@ class ParseCoreData {
2026
if (clientKey != null) _instance.clientKey = clientKey;
2127
if (masterKey != null) _instance.masterKey = masterKey;
2228
if (sessionId != null) _instance.sessionId = sessionId;
29+
if (securityContext != null) _instance.securityContext = securityContext;
2330
}
2431

2532
String appName;
@@ -29,6 +36,7 @@ class ParseCoreData {
2936
String masterKey;
3037
String clientKey;
3138
String sessionId;
39+
SecurityContext securityContext;
3240
bool debug;
3341
SharedPreferences storage;
3442

lib/src/network/parse_http_client.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@ part of flutter_parse_sdk;
22

33
/// Creates a custom version of HTTP Client that has Parse Data Preset
44
class ParseHTTPClient extends BaseClient {
5-
final Client _client = Client();
5+
final Client _client;
66
final String _userAgent = "$keyLibraryName $keySdkVersion";
77
ParseCoreData data = ParseCoreData();
88
Map<String, String> additionalHeaders;
99

10-
ParseHTTPClient();
10+
ParseHTTPClient([SecurityContext securityContext])
11+
: _client = securityContext != null
12+
? IOClient(HttpClient(context: securityContext))
13+
: IOClient();
1114

1215
/// Overrides the call method for HTTP Client and adds custom headers
1316
@override

lib/src/objects/parse_config.dart

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
part of flutter_parse_sdk;
22

33
class ParseConfig extends ParseObject {
4-
var _client = ParseHTTPClient();
4+
var _client = ParseHTTPClient(ParseCoreData().securityContext);
55

66
/// Creates an instance of ParseConfig so that you can grab all configs from the server
77
ParseConfig({bool debug, ParseHTTPClient client}) : super('config') {
@@ -14,7 +14,8 @@ class ParseConfig extends ParseObject {
1414
try {
1515
var uri = "${ParseCoreData().serverUrl}/config";
1616
var result = await _client.get(uri);
17-
return handleResponse(this, result, ParseApiRQ.getConfigs, _debug, className);
17+
return handleResponse(
18+
this, result, ParseApiRQ.getConfigs, _debug, className);
1819
} on Exception catch (e) {
1920
return handleException(e, ParseApiRQ.getConfigs, _debug, className);
2021
}
@@ -26,7 +27,8 @@ class ParseConfig extends ParseObject {
2627
var uri = "${ParseCoreData().serverUrl}/config";
2728
var body = "{\"params\":{\"$key\": \"${parseEncode(value)}\"}}";
2829
var result = await _client.put(uri, body: body);
29-
return handleResponse(this, result, ParseApiRQ.addConfig, _debug, className);
30+
return handleResponse(
31+
this, result, ParseApiRQ.addConfig, _debug, className);
3032
} on Exception catch (e) {
3133
return handleException(e, ParseApiRQ.addConfig, _debug, className);
3234
}

lib/src/objects/parse_file.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,10 @@ class ParseFile extends ParseObject {
3333
ParseFile(this._file,
3434
{String name, String url, bool debug, ParseHTTPClient client})
3535
: super(keyFile) {
36-
client == null ? _client = ParseHTTPClient() : _client = client;
36+
client == null
37+
? _client = ParseHTTPClient(ParseCoreData().securityContext)
38+
: _client = client;
39+
3740
_debug = isDebugEnabled(objectLevelDebug: debug);
3841
if (_file != null) {
3942
this._fileName = path.basename(_file.path);
@@ -93,6 +96,7 @@ class ParseFile extends ParseObject {
9396
var uri = _client.data.serverUrl + "$_path";
9497
final body = await _file.readAsBytes();
9598
final response = await _client.post(uri, headers: headers, body: body);
96-
return handleResponse<ParseFile>(this, response, ParseApiRQ.upload, _debug, className);
99+
return handleResponse<ParseFile>(
100+
this, response, ParseApiRQ.upload, _debug, className);
97101
}
98102
}

lib/src/objects/parse_geo_point.dart

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,22 @@
11
part of flutter_parse_sdk;
22

33
class ParseGeoPoint extends ParseObject {
4-
54
double _latitude;
65
double _longitude;
76

87
/// Creates a Parse Object of type GeoPoint
9-
ParseGeoPoint({double latitude = 0.0, double longitude = 0.0, bool debug, ParseHTTPClient client}): super (keyGeoPoint) {
8+
ParseGeoPoint(
9+
{double latitude = 0.0,
10+
double longitude = 0.0,
11+
bool debug,
12+
ParseHTTPClient client})
13+
: super(keyGeoPoint) {
1014
_latitude = latitude;
1115
_longitude = longitude;
1216

13-
client == null ? _client = ParseHTTPClient() : _client = client;
17+
client == null
18+
? _client = ParseHTTPClient(ParseCoreData().securityContext)
19+
: _client = client;
1420
_debug = isDebugEnabled(objectLevelDebug: debug);
1521
}
1622

lib/src/objects/parse_object.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class ParseObject extends ParseBase implements ParseCloneable {
1919
ParseObject(String className, {bool debug: false}) : super() {
2020
setClassName(className);
2121
_path = "$keyEndPointClasses$className";
22-
setClient(ParseHTTPClient());
22+
setClient(ParseHTTPClient(ParseCoreData().securityContext));
2323
setDebug(isDebugEnabled(objectLevelDebug: debug));
2424
}
2525

@@ -83,7 +83,7 @@ class ParseObject extends ParseBase implements ParseCloneable {
8383
}
8484
}
8585

86-
/// Removes an element from an Arary
86+
/// Removes an element from an Array
8787
Future<ParseResponse> remove(String key, dynamic values) async {
8888
if (key != null) {
8989
return await _sortArrays(ParseApiRQ.remove, "Remove", key, [values]);

lib/src/objects/parse_user.dart

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ class ParseUser extends ParseObject implements ParseCloneable {
4343
ParseUser(String username, String password, String emailAddress,
4444
{bool debug, ParseHTTPClient client})
4545
: super(keyClassUser) {
46-
client == null ? _client = ParseHTTPClient() : _client = client;
46+
client == null
47+
? _client = ParseHTTPClient(ParseCoreData().securityContext)
48+
: _client = client;
4749
_debug = isDebugEnabled(objectLevelDebug: debug);
4850

4951
this.username = username;
@@ -83,7 +85,7 @@ class ParseUser extends ParseObject implements ParseCloneable {
8385
host: tempUri.host,
8486
path: "${tempUri.path}$keyEndPointUserName");
8587

86-
final response = await ParseHTTPClient()
88+
final response = await ParseHTTPClient(ParseCoreData().securityContext)
8789
.get(uri, headers: {keyHeaderSessionToken: token});
8890
return _handleResponse(_getEmptyUser(), response, ParseApiRQ.currentUser,
8991
_debug, _getEmptyUser().className);
@@ -273,8 +275,8 @@ class ParseUser extends ParseObject implements ParseCloneable {
273275
var emptyUser = ParseUser(null, null, null);
274276

275277
try {
276-
final response =
277-
await ParseHTTPClient().get("${ParseCoreData().serverUrl}/$path");
278+
final response = await ParseHTTPClient(ParseCoreData().securityContext)
279+
.get("${ParseCoreData().serverUrl}/$path");
278280

279281
ParseResponse parseResponse =
280282
ParseResponse.handleResponse<ParseUser>(emptyUser, response);

pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: parse_server_sdk
22
description: Flutter plugin for Parse Server, (https://parseplatform.org), (https://back4app.com)
3-
version: 1.0.10
3+
version: 1.0.11
44
homepage: https://github.com/phillwiggins/flutter_parse_sdk
55
author: PhillWiggins <[email protected]>
66

test/parse_client_configuration_test.dart

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1+
import 'package:parse_server_sdk/parse_server_sdk.dart';
12
import 'package:test/test.dart';
2-
import 'package:parse_server_sdk/parse.dart';
33

4-
void main(){
5-
test("testBuilder",() {
6-
Parse().initialize("appId",
7-
"serverUrl",
4+
void main() {
5+
test("testBuilder", () {
6+
Parse().initialize("appId", "serverUrl",
87
clientKey: "clientKey",
98
liveQueryUrl: "liveQueryUrl",
109
appName: "appName",
@@ -20,6 +19,5 @@ void main(){
2019
expect(ParseCoreData().masterKey, "masterKey");
2120
expect(ParseCoreData().sessionId, "sessionId");
2221
expect(ParseCoreData().debug, true);
23-
2422
});
25-
}
23+
}

0 commit comments

Comments
 (0)