Sources/OT/SLSAttribute.m (57 lines of code) (raw):
//
// SLSAttribute.m
// AliyunLogProducer
//
// Created by gordon on 2022/4/27.
//
#import "SLSAttribute.h"
@implementation SLSAttribute
+ (SLSAttribute*) of: (NSString *) key value: (NSString*)value {
SLSAttribute *attribute = [[SLSAttribute alloc] init];
attribute.key = key;
attribute.value = value;
return attribute;
}
+ (SLSAttribute*) of: (NSString *) key dictValue: (NSDictionary*)value {
SLSAttribute *attribute = [[SLSAttribute alloc] init];
attribute.key = key;
attribute.value = [value copy];
return attribute;
}
+ (SLSAttribute*) of: (NSString *) key arrayValue: (NSArray*)value {
SLSAttribute *attribute = [[SLSAttribute alloc] init];
attribute.key = key;
attribute.value = value;
return attribute;
}
+ (NSArray<SLSAttribute*> *) of: (SLSKeyValue *) keyValue, ... NS_REQUIRES_NIL_TERMINATION {
NSMutableArray<SLSAttribute*> * array = [NSMutableArray<SLSAttribute*> array];
[array addObject:[self of:keyValue.key value:keyValue.value]];
va_list args;
SLSKeyValue *arg;
va_start(args, keyValue);
while ((arg = va_arg(args, SLSKeyValue*))) {
[array addObject:[self of:arg.key value:arg.value]];
}
va_end(args);
return array;
}
+ (NSArray *) toArray: (NSArray<SLSAttribute *> *) attributes {
NSMutableArray *array = [NSMutableArray array];
for (SLSAttribute *attribute in attributes) {
[array addObject:@{
@"key": attribute.key,
@"value": @{
@"stringValue": attribute.value
}
}];
}
return array;
}
- (id)copyWithZone:(nullable NSZone *)zone {
SLSAttribute *attr = [[SLSAttribute alloc] init];
attr.key = [self.key copy];
attr.value = [self.value copy];
return attr;
}
- (id)mutableCopyWithZone:(nullable NSZone *)zone {
SLSAttribute *attr = [[SLSAttribute alloc] init];
attr.key = [self.key copy];
attr.value = [self.value copy];
return attr;
}
@end