Wrap content list

This commit is contained in:
Sergey Abramchuk 2017-04-22 20:19:28 +03:00
parent 9e7836aae1
commit 1fbf4e52b3
2 changed files with 40 additions and 1 deletions

View File

@ -12,6 +12,17 @@
@interface OpenVPNConfiguration : NSObject
/**
OpenVPN profile as a NSData
*/
@property (nullable, nonatomic) NSData *fileContent;
/**
OpenVPN profile as series of key/value pairs (may be provided exclusively
or in addition to file content).
*/
@property (nullable, nonatomic) NSDictionary<NSString *, NSString *> *settings;
@end

View File

@ -9,6 +9,8 @@
#import "OpenVPNConfiguration.h"
#import "OpenVPNConfiguration+Internal.h"
using namespace openvpn;
@interface OpenVPNConfiguration () {
ClientAPI::Config _config;
}
@ -25,7 +27,7 @@
@implementation OpenVPNConfiguration
-(NSData *)fileContent {
- (NSData *)fileContent {
return _config.content.size() != 0 ? [NSData dataWithBytes:_config.content.data() length:_config.content.size()] : nil;
}
@ -33,4 +35,30 @@
_config.content = fileContent != nil ? std::string((const char *)fileContent.bytes) : "";
}
- (NSDictionary<NSString *,NSString *> *)settings {
if (_config.contentList.size() == 0) {
return nil;
}
NSMutableDictionary *settings = [NSMutableDictionary new];
for (ClientAPI::KeyValue param : _config.contentList) {
NSString *key = [NSString stringWithCString:param.key.c_str() encoding:NSUTF8StringEncoding];
NSString *value = [NSString stringWithCString:param.value.c_str() encoding:NSUTF8StringEncoding];
settings[key] = value;
}
return [settings copy];
}
- (void)setSettings:(NSDictionary<NSString *,NSString *> *)settings {
_config.contentList.clear();
[settings enumerateKeysAndObjectsUsingBlock:^(NSString * _Nonnull key, NSString * _Nonnull obj, BOOL * _Nonnull stop) {
ClientAPI::KeyValue param = ClientAPI::KeyValue(std::string([key UTF8String]), std::string([obj UTF8String]));
_config.contentList.push_back(param);
}];
}
@end