// // OpenVPNConfiguration.m // OpenVPN Adapter // // Created by Sergey Abramchuk on 21.04.17. // // #import "OpenVPNConfiguration.h" #import "OpenVPNConfiguration+Internal.h" using namespace openvpn; @interface OpenVPNConfiguration () { ClientAPI::Config _config; } @end @implementation OpenVPNConfiguration (Internal) - (ClientAPI::Config)config { return _config; } @end @implementation OpenVPNConfiguration - (NSData *)fileContent { return _config.content.size() != 0 ? [NSData dataWithBytes:_config.content.data() length:_config.content.size()] : nil; } - (void)setFileContent:(NSData *)fileContent { _config.content = fileContent != nil ? std::string((const char *)fileContent.bytes) : ""; } - (NSDictionary *)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 *)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