Revision ca7626d7 asi-http-request-with-pithos/Classes/Pithos/ASIPithosObject.m
b/asi-http-request-with-pithos/Classes/Pithos/ASIPithosObject.m | ||
---|---|---|
35 | 35 |
// or implied, of GRNET S.A. |
36 | 36 |
|
37 | 37 |
#import "ASIPithosObject.h" |
38 |
#import "ASIPithosSharingUser.h" |
|
38 | 39 |
|
39 | 40 |
@implementation ASIPithosObject |
40 | 41 |
@synthesize subdir; |
41 | 42 |
@synthesize name, hash, objectHash, UUID, bytes, contentType, contentEncoding, contentDisposition, lastModified, |
42 | 43 |
version, versionTimestamp, modifiedBy, manifest, sharing, sharedBy, publicURI, metadata, allowedTo, |
43 |
data; |
|
44 |
data, permissions;
|
|
44 | 45 |
|
45 | 46 |
+ (id)object { |
46 | 47 |
ASIPithosObject *object = [[self alloc] init]; |
... | ... | |
62 | 63 |
name, hash, objectHash, UUID, bytes, contentType, contentEncoding, contentDisposition, lastModified, version, versionTimestamp, modifiedBy, manifest, sharing, sharedBy, publicURI, metadata, allowedTo]; |
63 | 64 |
} |
64 | 65 |
|
66 |
- (void)setSharing:(NSString *)aSharing { |
|
67 |
if (!aSharing || ![aSharing isEqualToString:sharing]) { |
|
68 |
permissions = nil; |
|
69 |
} |
|
70 |
sharing = aSharing; |
|
71 |
} |
|
72 |
|
|
73 |
- (NSMutableArray *)permissions { |
|
74 |
if (!permissions) { |
|
75 |
NSMutableArray *newPermissions = [NSMutableArray array]; |
|
76 |
if (self.sharing.length) { |
|
77 |
for (NSString *sharingList in [self.sharing componentsSeparatedByString:@";"]) { |
|
78 |
NSRange equalsRange = [sharingList rangeOfString:@"="]; |
|
79 |
if (equalsRange.location != NSNotFound) { |
|
80 |
NSString *sharingType = [sharingList substringToIndex:equalsRange.location]; |
|
81 |
if ([sharingType hasPrefix:@" "]) { |
|
82 |
sharingType = [sharingType substringFromIndex:1]; |
|
83 |
} |
|
84 |
for (NSString *sharingUser in [[sharingList substringFromIndex:(equalsRange.location + 1)] componentsSeparatedByString:@","]) { |
|
85 |
[newPermissions addObject:[ASIPithosSharingUser sharingUserWithUser:sharingUser permission:sharingType]]; |
|
86 |
} |
|
87 |
} |
|
88 |
} |
|
89 |
} |
|
90 |
permissions = newPermissions; |
|
91 |
} |
|
92 |
return permissions; |
|
93 |
} |
|
94 |
|
|
95 |
- (void)setPermissions:(NSMutableArray *)aPermissions { |
|
96 |
if (!aPermissions || ![aPermissions isEqualToArray:permissions]) { |
|
97 |
if (aPermissions.count) { |
|
98 |
NSMutableDictionary *sharingListsDictionary = [NSMutableDictionary dictionary]; |
|
99 |
for (ASIPithosSharingUser *sharingUser in aPermissions) { |
|
100 |
if (sharingUser.permission) { |
|
101 |
NSMutableString *sharingList = [sharingListsDictionary objectForKey:sharingUser.permission]; |
|
102 |
if (!sharingList) { |
|
103 |
sharingList = [NSMutableString stringWithFormat:@"%@=", sharingUser.permission]; |
|
104 |
[sharingListsDictionary setObject:sharingList forKey:sharingUser.permission]; |
|
105 |
} |
|
106 |
if (sharingUser.name) { |
|
107 |
if (sharingUser.group) { |
|
108 |
[sharingList appendFormat:@"%@:%@,", sharingUser.name, sharingUser.group]; |
|
109 |
} else { |
|
110 |
[sharingList appendFormat:@"%@,", sharingUser.name]; |
|
111 |
} |
|
112 |
} |
|
113 |
} |
|
114 |
} |
|
115 |
NSMutableString *newSharing = [NSMutableString string]; |
|
116 |
for (NSMutableString *sharingList in [sharingListsDictionary objectEnumerator]) { |
|
117 |
[newSharing appendFormat:@"%@;", [sharingList substringToIndex:(sharingList.length - 1)]]; |
|
118 |
} |
|
119 |
self.sharing = [newSharing substringToIndex:(newSharing.length - 1)]; |
|
120 |
} else { |
|
121 |
self.sharing = nil; |
|
122 |
} |
|
123 |
} |
|
124 |
permissions = aPermissions; |
|
125 |
} |
|
65 | 126 |
|
66 | 127 |
@end |
Also available in: Unified diff