mirror of
https://github.com/zhigang1992/react-native-video-cache.git
synced 2026-01-12 08:23:45 +08:00
56 lines
1.5 KiB
Objective-C
56 lines
1.5 KiB
Objective-C
#import "VideoCache.h"
|
|
#import <KTVHTTPCache/KTVHTTPCache.h>
|
|
|
|
@implementation VideoCache
|
|
|
|
RCT_EXPORT_MODULE()
|
|
|
|
RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(convert:(NSString *)url)
|
|
{
|
|
if (!KTVHTTPCache.proxyIsRunning) {
|
|
NSError *error;
|
|
[KTVHTTPCache proxyStart:&error];
|
|
if (error) {
|
|
return url;
|
|
}
|
|
}
|
|
NSURL* videoUrl = [NSURL URLWithString:url];
|
|
@try {
|
|
NSURL *completedCacheFileURL = [KTVHTTPCache cacheCompleteFileURLWithURL:videoUrl];
|
|
if (completedCacheFileURL != nil) {
|
|
return completedCacheFileURL.absoluteString;
|
|
}
|
|
}
|
|
@catch (NSException *exception) {
|
|
}
|
|
|
|
return [KTVHTTPCache proxyURLWithOriginalURL:videoUrl].absoluteString;
|
|
}
|
|
|
|
RCT_EXPORT_METHOD(convertAsync:(NSString *)url
|
|
resolver:(RCTPromiseResolveBlock)resolve
|
|
rejecter:(RCTPromiseRejectBlock)reject)
|
|
{
|
|
if (!KTVHTTPCache.proxyIsRunning) {
|
|
NSError *error;
|
|
[KTVHTTPCache proxyStart:&error];
|
|
if (error) {
|
|
reject(@"init.error", @"failed to start proxy server", error);
|
|
return;
|
|
}
|
|
}
|
|
NSURL* videoUrl = [NSURL URLWithString:url];
|
|
@try {
|
|
NSURL *completedCacheFileURL = [KTVHTTPCache cacheCompleteFileURLWithURL:videoUrl];
|
|
if (completedCacheFileURL != nil) {
|
|
resolve(completedCacheFileURL.absoluteString);
|
|
return;
|
|
}
|
|
}
|
|
@catch (NSException *exception) {
|
|
}
|
|
resolve([KTVHTTPCache proxyURLWithOriginalURL:videoUrl].absoluteString);
|
|
}
|
|
|
|
@end
|