Skip to content

Commit 652c6db

Browse files
authored
Merge pull request #75 from phillwiggins/develop
Develop
2 parents da7bd4c + 82e554e commit 652c6db

8 files changed

+48
-21
lines changed

lib/parse.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/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);

0 commit comments

Comments
 (0)