feat: add ArrayBufferResource

This commit is contained in:
pengfei.zhou
2022-03-07 18:31:14 +08:00
committed by osborn
parent fa6604f25e
commit e8e344ed21
11 changed files with 224 additions and 1 deletions

View File

@@ -0,0 +1,25 @@
/*
* Copyright [2022] [Doric.Pub]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// Created by pengfei.zhou on 2022/3/4.
//
#import <Foundation/Foundation.h>
#import "DoricResource.h"
@interface DoricArrayBufferResource : DoricResource
@property(nonatomic, strong) NSData *data;
@end

View File

@@ -0,0 +1,29 @@
/*
* Copyright [2022] [Doric.Pub]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// Created by pengfei.zhou on 2022/3/4.
//
#import "DoricArrayBufferResource.h"
@implementation DoricArrayBufferResource
- (DoricAsyncResult <NSData *> *)fetchRaw {
DoricAsyncResult *asyncResult = [DoricAsyncResult new];
[asyncResult setupResult:self.data];
return asyncResult;
}
@end

View File

@@ -0,0 +1,24 @@
/*
* Copyright [2022] [Doric.Pub]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// Created by pengfei.zhou on 2022/3/4.
//
#import <Foundation/Foundation.h>
#import "DoricResourceLoader.h"
@interface DoricArrayBufferResourceLoader : NSObject <DoricResourceLoader>
@end

View File

@@ -0,0 +1,33 @@
/*
* Copyright [2022] [Doric.Pub]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
//
// Created by pengfei.zhou on 2022/3/4.
//
#import "DoricArrayBufferResourceLoader.h"
#import "DoricArrayBufferResource.h"
@implementation DoricArrayBufferResourceLoader
- (NSString *)resourceType {
return @"arrayBuffer";
}
- (__kindof DoricResource *)load:(NSString *)identifier withContext:(DoricContext *)context {
DoricArrayBufferResource *resource = [[DoricArrayBufferResource alloc] initWithContext:context
identifier:[NSString stringWithFormat:@"assets/%@", identifier]];
return resource;
}
@end

View File

@@ -19,6 +19,7 @@
#import "DoricResourceManager.h"
#import "DoricContext.h"
#import "DoricArrayBufferResource.h"
@interface DoricResourceManager ()
@property(nonatomic, strong) NSMutableDictionary <NSString *, id <DoricResourceLoader>> *loaders;
@@ -57,6 +58,9 @@ - (__kindof DoricResource *)load:(NSDictionary *)resource
if (!doricResource) {
id <DoricResourceLoader> loader = self.loaders[type];
doricResource = [loader load:identifier withContext:context];
if ([doricResource isKindOfClass:DoricArrayBufferResource.class]) {
((DoricArrayBufferResource *) doricResource).data = resource[@"data"];
}
[context.cachedResources setObject:doricResource forKey:resId];
}
});