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