Skip to content

Commit 6ba0e8a

Browse files
authored
Merge pull request #74 from chrbayer/develop
Allow providing default a SecurityContext object during initialization
2 parents 4c54333 + 35cc328 commit 6ba0e8a

File tree

8 files changed

+47
-21
lines changed

8 files changed

+47
-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';
@@ -55,7 +56,6 @@ part 'src/utils/parse_utils.dart';
5556

5657
class Parse {
5758
ParseCoreData data;
58-
final ParseHTTPClient client = new ParseHTTPClient();
5959
bool _hasBeenInitialised = false;
6060

6161
/// To initialise Parse Server in your application
@@ -76,14 +76,16 @@ class Parse {
7676
String liveQueryUrl,
7777
String clientKey,
7878
String masterKey,
79-
String sessionId}) {
79+
String sessionId,
80+
SecurityContext securityContext}) {
8081
ParseCoreData.init(appId, serverUrl,
8182
debug: debug,
8283
appName: appName,
8384
liveQueryUrl: liveQueryUrl,
8485
masterKey: masterKey,
8586
clientKey: clientKey,
86-
sessionId: sessionId);
87+
sessionId: sessionId,
88+
securityContext: securityContext);
8789

8890
ParseCoreData().initStorage();
8991

@@ -98,7 +100,7 @@ class Parse {
98100
ParseResponse parseResponse;
99101

100102
try {
101-
var response = await ParseHTTPClient()
103+
var response = await ParseHTTPClient(ParseCoreData().securityContext)
102104
.get("${ParseCoreData().serverUrl}$keyEndPointHealth");
103105
parseResponse =
104106
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: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,9 @@ class ParseFile extends ParseObject {
2525
///
2626
/// {https://docs.parseplatform.org/rest/guide/#files/}
2727
ParseFile(this._file, {bool debug, ParseHTTPClient client}) : super(keyFile) {
28-
client == null ? _client = ParseHTTPClient() : _client = client;
28+
client == null
29+
? _client = ParseHTTPClient(ParseCoreData().securityContext)
30+
: _client = client;
2931
_debug = isDebugEnabled(objectLevelDebug: debug);
3032

3133
this._fileName = path.basename(_file.path);
@@ -46,6 +48,7 @@ class ParseFile extends ParseObject {
4648
var uri = _client.data.serverUrl + "$_path";
4749
final body = await _file.readAsBytes();
4850
final response = await _client.post(uri, headers: headers, body: body);
49-
return handleResponse<ParseFile>(this, response, ParseApiRQ.upload, _debug, className);
51+
return handleResponse<ParseFile>(
52+
this, response, ParseApiRQ.upload, _debug, className);
5053
}
5154
}

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
@@ -18,7 +18,7 @@ class ParseObject extends ParseBase implements ParseCloneable {
1818
ParseObject(String className, {bool debug: false}) : super() {
1919
setClassName(className);
2020
_path = "$keyEndPointClasses$className";
21-
setClient(ParseHTTPClient());
21+
setClient(ParseHTTPClient(ParseCoreData().securityContext));
2222
setDebug(isDebugEnabled(objectLevelDebug: debug));
2323
}
2424

@@ -82,7 +82,7 @@ class ParseObject extends ParseBase implements ParseCloneable {
8282
}
8383
}
8484

85-
/// Removes an element from an Arary
85+
/// Removes an element from an Array
8686
Future<ParseResponse> remove(String key, dynamic values) async {
8787
if (key != null) {
8888
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);
@@ -241,8 +243,8 @@ class ParseUser extends ParseObject implements ParseCloneable {
241243
var emptyUser = ParseUser(null, null, null);
242244

243245
try {
244-
final response =
245-
await ParseHTTPClient().get("${ParseCoreData().serverUrl}/$path");
246+
final response = await ParseHTTPClient(ParseCoreData().securityContext)
247+
.get("${ParseCoreData().serverUrl}/$path");
246248

247249
ParseResponse parseResponse =
248250
ParseResponse.handleResponse<ParseUser>(emptyUser, response);

0 commit comments

Comments
 (0)