Skip to content

Commit 0a1221a

Browse files
committed
fix(ios): encoding fix for toString
1 parent bb830b4 commit 0a1221a

File tree

2 files changed

+13
-12
lines changed

2 files changed

+13
-12
lines changed

src/https/request.android.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ class HttpsResponseLegacy implements IHttpsResponseLegacy {
128128

129129
// cache it because asking it again wont work as the socket is closed
130130
stringResponse: string;
131-
toString() {
131+
toString(encoding?: string) {
132132
// TODO: handle arraybuffer already stored
133133
this.stringResponse = this.stringResponse || this.response.asString();
134134
return this.stringResponse;
135135
}
136-
async toStringAsync(): Promise<string> {
136+
async toStringAsync(encoding?: string): Promise<string> {
137137
if (this.stringResponse) {
138138
return this.stringResponse;
139139
}
@@ -147,7 +147,7 @@ class HttpsResponseLegacy implements IHttpsResponseLegacy {
147147

148148
// cache it because asking it again wont work as the socket is closed
149149
jsonResponse: any;
150-
toJSON(encoding?: HttpResponseEncoding) {
150+
toJSON(encoding?: string) {
151151
if (this.jsonResponse !== undefined) {
152152
return this.jsonResponse;
153153
}

src/https/request.ios.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,35 +56,36 @@ export function disableSSLPinning() {
5656
policies.secured = false;
5757
}
5858

59-
function nativeToObj(data) {
59+
function nativeToObj(data, encoding?) {
6060
let content: any;
6161
if (data instanceof NSDictionary) {
6262
content = {};
6363
data.enumerateKeysAndObjectsUsingBlock((key, value, stop) => {
64-
content[key] = nativeToObj(value);
64+
content[key] = nativeToObj(value, encoding);
6565
});
6666
return content;
6767
} else if (data instanceof NSArray) {
6868
content = [];
6969
data.enumerateObjectsUsingBlock((value, index, stop) => {
70-
content[index] = nativeToObj(value);
70+
content[index] = nativeToObj(value, encoding);
7171
});
7272
return content;
7373
} else if (data instanceof NSData) {
74-
return NSString.alloc().initWithDataEncoding(data, NSASCIIStringEncoding).toString();
74+
return NSString.alloc().initWithDataEncoding(data, encoding === 'ascii' ? NSASCIIStringEncoding : NSUTF8StringEncoding).toString();
7575
} else {
7676
return data;
7777
}
7878
}
7979

80-
function getData(data) {
80+
function getData(data, encoding?) {
8181
let content: any;
8282
if (data && data.class) {
83+
const nEncoding = encoding === 'ascii' ? NSASCIIStringEncoding : NSUTF8StringEncoding;
8384
if (data.enumerateKeysAndObjectsUsingBlock || data instanceof NSArray) {
8485
const serial = NSJSONSerialization.dataWithJSONObjectOptionsError(data, NSJSONWritingOptions.PrettyPrinted);
85-
content = NSString.alloc().initWithDataEncoding(serial, NSUTF8StringEncoding).toString();
86+
content = NSString.alloc().initWithDataEncoding(serial, nEncoding).toString();
8687
} else if (data instanceof NSData) {
87-
content = NSString.alloc().initWithDataEncoding(data, NSASCIIStringEncoding).toString();
88+
content = NSString.alloc().initWithDataEncoding(data, nEncoding).toString();
8889
} else {
8990
content = data;
9091
}
@@ -146,7 +147,7 @@ class HttpsResponseLegacy implements IHttpsResponseLegacy {
146147
this.stringResponse = this.data;
147148
return this.data;
148149
} else {
149-
const data = nativeToObj(this.data);
150+
const data = nativeToObj(this.data, encoding);
150151
if (typeof data === 'string') {
151152
this.stringResponse = data;
152153
} else {
@@ -171,7 +172,7 @@ class HttpsResponseLegacy implements IHttpsResponseLegacy {
171172
this.jsonResponse = parseJSON(this.stringResponse);
172173
return this.jsonResponse;
173174
}
174-
const data = nativeToObj(this.data);
175+
const data = nativeToObj(this.data, encoding);
175176
if (typeof data === 'object') {
176177
this.jsonResponse = data;
177178
return data;

0 commit comments

Comments
 (0)