Skip to content

Commit

Permalink
feat: Added support for removing cached responses using url
Browse files Browse the repository at this point in the history
  • Loading branch information
CatchABus committed Jul 15, 2024
1 parent ed97cd4 commit 9866da9
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 12 deletions.
16 changes: 16 additions & 0 deletions src/https/request.android.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,22 @@ export function clearCache() {
}
}

export function removeCachedResponse(url: string) {
if (!cache) {
return;
}

const iterator = cache.urls();

while (iterator.hasNext()) {
const cacheUrl = iterator.next();
if (cacheUrl === url) {
iterator.remove();
break;
}
}
}

// TODO: rewrite this to not have to handle
// every single property
let _timeout = 10;
Expand Down
1 change: 1 addition & 0 deletions src/https/request.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ export declare function request<T = any, U extends boolean = true>(
): U extends true ? Promise<HttpsResponse<HttpsResponseLegacy<T>>> : Promise<HttpsResponse<T>>;
export function setCache(options?: CacheOptions);
export function clearCache();
export function removeCachedResponse(url: string);
export function createRequest(opts: HttpsRequestOptions): HttpsRequest;
export function cancelRequest(tag: string);
export function cancelAllRequests();
Expand Down
29 changes: 17 additions & 12 deletions src/https/request.ios.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { File, ImageSource, Utils } from '@nativescript/core';
import { dispatchToMainThread} from '@nativescript/core/utils';
import { CacheOptions, HttpsFormDataParam, HttpsRequest, HttpsRequestOptions, HttpsResponse, HttpsSSLPinningOptions, HttpsResponseLegacy as IHttpsResponseLegacy } from '.';
import { getFilenameFromUrl, parseJSON } from './request.common';
export { addInterceptor, addNetworkInterceptor } from './request.common';
Expand All @@ -19,6 +18,10 @@ export function clearCache() {
NSURLCache.sharedURLCache.removeAllCachedResponses();
}

export function removeCachedResponse(url: string) {
NSURLCache.sharedURLCache.removeCachedResponseForRequest(createNSRequest(url));
}

interface Ipolicies {
def: AFSecurityPolicy;
secured: boolean;
Expand Down Expand Up @@ -97,6 +100,10 @@ function getData(data) {
return content;
}

function createNSRequest(url: string): NSMutableURLRequest {
return NSMutableURLRequest.alloc().initWithURL(NSURL.URLWithString(url));
}

class HttpsResponseLegacy implements IHttpsResponseLegacy {
// private callback?: com.nativescript.https.OkhttpResponse.OkHttpResponseAsyncCallback;
constructor(private data: NSDictionary<string, any> & NSData & NSArray<any>, public contentLength, private url: string) {}
Expand Down Expand Up @@ -168,7 +175,6 @@ class HttpsResponseLegacy implements IHttpsResponseLegacy {
this.stringResponse = data;
this.jsonResponse = parseJSON(data);
return this.jsonResponse as T;

}
toJSONAsync<T>() {
return Promise.resolve<T>(this.toJSON());
Expand Down Expand Up @@ -370,10 +376,9 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr

const progress = opts.onProgress
? (progress: NSProgress) => {
dispatchToMainThread(()=>{
Utils.dispatchToMainThread(() => {
opts.onProgress(progress.completedUnitCount, progress.totalUnitCount);
})

});
}
: null;
let task: NSURLSessionDataTask;
Expand Down Expand Up @@ -463,13 +468,13 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
}
} else if (opts.method === 'PUT'){
if (opts.body instanceof File) {
const request = NSMutableURLRequest.alloc().initWithURL(NSURL.URLWithString(opts.url));
const request = createNSRequest(opts.url);
request.HTTPMethod = opts.method;
Object.keys(heads).forEach(k=>{
Object.keys(heads).forEach(k => {
request.setValueForHTTPHeaderField(heads[k], k);
});
task = manager.uploadTaskWithRequestFromFileProgressCompletionHandler(request, NSURL.fileURLWithPath(opts.body.path), progress, (response: NSURLResponse, responseObject: any, error: NSError)=>{
if (error){
if (error) {
failure(task, error);
} else {
success(task, responseObject);
Expand All @@ -486,13 +491,13 @@ export function createRequest(opts: HttpsRequestOptions, useLegacy: boolean = tr
} else {
data = NSString.stringWithString(JSON.stringify(opts.body)).dataUsingEncoding(NSUTF8StringEncoding);
}
const request = NSMutableURLRequest.alloc().initWithURL(NSURL.URLWithString(opts.url));
const request = createNSRequest(opts.url);
request.HTTPMethod = opts.method;
Object.keys(heads).forEach(k=>{
Object.keys(heads).forEach(k => {
request.setValueForHTTPHeaderField(heads[k], k);
});
task = manager.uploadTaskWithRequestFromDataProgressCompletionHandler(request, data, progress, (response: NSURLResponse, responseObject: any, error: NSError)=>{
if (error){
task = manager.uploadTaskWithRequestFromDataProgressCompletionHandler(request, data, progress, (response: NSURLResponse, responseObject: any, error: NSError) => {
if (error) {
failure(task, error);
} else {
success(task, responseObject);
Expand Down

0 comments on commit 9866da9

Please sign in to comment.