5 // Copyright 2011-2012 GRNET S.A. All rights reserved.
7 // Redistribution and use in source and binary forms, with or
8 // without modification, are permitted provided that the following
11 // 1. Redistributions of source code must retain the above
12 // copyright notice, this list of conditions and the following
15 // 2. Redistributions in binary form must reproduce the above
16 // copyright notice, this list of conditions and the following
17 // disclaimer in the documentation and/or other materials
18 // provided with the distribution.
20 // THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
21 // OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
22 // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
24 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
25 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
26 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
27 // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28 // AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30 // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 // POSSIBILITY OF SUCH DAMAGE.
33 // The views and conclusions contained in the software and
34 // documentation are those of the authors and should not be
35 // interpreted as representing official policies, either expressed
36 // or implied, of GRNET S.A.
38 @class ASIPithosRequest;
40 @class ASIPithosContainerRequest;
41 @class ASIPithosObjectRequest;
42 @class ASIPithosObject;
44 @interface PithosUtilities : NSObject
46 + (ASIPithosObjectRequest *)objectDataRequestWithPithos:(ASIPithos *)pithos
47 containerName:(NSString *)containerName
48 objectName:(NSString *)objectName
49 version:(NSString *)version
50 toDirectory:(NSString *)directoryPath
51 withNewFileName:(NSString *)newFileName
52 checkIfExists:(BOOL)ifExists
53 sharingAccount:(NSString *)sharingAccount;
54 + (NSArray *)objectDataRequestsForSubdirWithPithos:(ASIPithos *)pithos
55 containerName:(NSString *)containerName
56 objectName:(NSString *)objectName
57 toDirectory:(NSString *)directoryPath
58 checkIfExists:(BOOL)ifExists
59 sharingAccount:(NSString *)sharingAccount;
61 + (ASIPithosObjectRequest *)objectBlockDataRequestWithPithos:(ASIPithos *)pithos
62 containerName:(NSString *)containerName
63 object:(ASIPithosObject *)object
64 blockIndex:(NSUInteger)blockIndex
65 blockSize:(NSUInteger)blockSize;
66 + (NSIndexSet *)missingBlocksForFile:(NSString *)filePath
67 blockSize:(NSUInteger)blockSize
68 blockHash:(NSString *)blockHash
69 withHashes:(NSArray *)hashes;
71 + (ASIPithosObjectRequest *)writeObjectDataRequestWithPithos:(ASIPithos *)pithos
72 containerName:(NSString *)containerName
73 objectName:(NSString *)objectName
74 contentType:(NSString *)contentType
75 blockSize:(NSUInteger)blockSize
76 blockHash:(NSString *)blockHash
77 forFile:(NSString *)filePath
78 checkIfExists:(BOOL)ifExists
79 hashes:(NSArray **)hashes
80 sharingAccount:(NSString *)sharingAccount;
81 + (NSIndexSet *)missingBlocksForHashes:(NSArray *)hashes withMissingHashes:(NSArray *)missingHashes;
82 + (ASIPithosContainerRequest *)updateContainerDataRequestWithPithos:(ASIPithos *)pithos
83 containerName:(NSString *)containerName
84 blockSize:(NSUInteger)blockSize
85 forFile:(NSString *)filePath
86 hashes:(NSArray *)hashes
87 missingHashes:(NSArray *)missingHashes
88 sharingAccount:(NSString *)sharingAccount;
89 + (ASIPithosContainerRequest *)updateContainerDataRequestWithPithos:(ASIPithos *)pithos
90 containerName:(NSString *)containerName
91 blockSize:(NSUInteger)blockSize
92 forFile:(NSString *)filePath
93 missingBlockIndex:(NSUInteger)missingBlockIndex
94 sharingAccount:(NSString *)sharingAccount;
95 + (NSArray *)writeObjectDataRequestsWithPithos:(ASIPithos *)pithos
96 containerName:(NSString *)containerName
97 objectName:(NSString *)objectName
98 blockSize:(NSUInteger)blockSize
99 blockHash:(NSString *)blockHash
100 forDirectory:(NSString *)directoryPath
101 checkIfExists:(BOOL)ifExists
102 objectNames:(NSMutableArray **)objectNames
103 contentTypes:(NSMutableArray **)contentTypes
104 filePaths:(NSMutableArray **)filePaths
105 hashesArrays:(NSMutableArray **)hashesArrays
106 directoryObjectRequests:(NSMutableArray **) directoryObjectRequests
107 sharingAccount:(NSString *)sharingAccount;
109 + (NSArray *)deleteObjectRequestsForSubdirWithPithos:(ASIPithos *)pithos
110 containerName:(NSString *)containerName
111 objectName:(NSString *)objectName;
113 + (ASIPithosObjectRequest *)copyObjectRequestWithPithos:(ASIPithos *)pithos
114 containerName:(NSString *)containerName
115 objectName:(NSString *)objectName
116 destinationContainerName:(NSString *)destinationContainerName
117 destinationObjectName:(NSString *)destinationObjectName
118 checkIfExists:(BOOL)ifExists
119 sharingAccount:(NSString *)sharingAccount;
120 + (NSArray *)copyObjectRequestsForSubdirWithPithos:(ASIPithos *)pithos
121 containerName:(NSString *)containerName
122 objectName:(NSString *)objectName
123 destinationContainerName:(NSString *)destinationContainerName
124 destinationObjectName:(NSString *)destinationObjectName
125 checkIfExists:(BOOL)ifExists
126 sharingAccount:(NSString *)sharingAccount;
128 + (ASIPithosObjectRequest *)moveObjectRequestWithPithos:(ASIPithos *)pithos
129 containerName:(NSString *)containerName
130 objectName:(NSString *)objectName
131 destinationContainerName:(NSString *)destinationContainerName
132 destinationObjectName:(NSString *)destinationObjectName
133 checkIfExists:(BOOL)ifExists;
134 + (NSArray *)moveObjectRequestsForSubdirWithPithos:(ASIPithos *)pithos
135 containerName:(NSString *)containerName
136 objectName:(NSString *)objectName
137 destinationContainerName:(NSString *)destinationContainerName
138 destinationObjectName:(NSString *)destinationObjectName
139 checkIfExists:(BOOL)ifExists;
141 + (NSUInteger)bytesOfFile:(NSString *)filePath;
142 + (NSString *)contentTypeOfFile:(NSString *)filePath error:(NSError **)error;
143 + (BOOL)safeCreateDirectory:(NSString *)directoryPath error:(NSError **)error;
144 + (void)removeContentsAtPath:(NSString *)dirPath;
145 + (BOOL)isContentTypeDirectory:(NSString *)contentType;
146 + (BOOL)objectExistsAtPithos:(ASIPithos *)pithos containerName:(NSString *)containerName objectName:(NSString *)objectName
147 error:(NSError **)error isDirectory:(BOOL *)isDirectory sharingAccount:(NSString *)sharingAccount;
148 + (BOOL)proceedIfObjectExistsAtPithos:(ASIPithos *)pithos containerName:(NSString *)containerName objectName:(NSString *)objectName
149 sharingAccount:(NSString *)sharingAccount;
150 + (NSArray *)objectsWithPithos:(ASIPithos *)pithos containerName:(NSString *)containerName objectNamePrefix:(NSString *)objectNamePrefix
151 delimiter:(NSString *)delimiter sharingAccount:(NSString *)sharingAccount;
152 + (NSArray *)objectsForSubdirWithPithos:(ASIPithos *)pithos containerName:(NSString *)containerName objectName:(NSString *)objectName
153 delimiter:(NSString *)delimiter sharingAccount:(NSString *)sharingAccount;
154 + (NSString *)safeObjectNameForPithos:(ASIPithos *)pithos containerName:(NSString *)containerName objectName:(NSString *)objectName;
155 + (NSString *)safeSubdirNameForPithos:(ASIPithos *)pithos containerName:(NSString *)containerName subdirName:(NSString *)subdirName;
157 + (NSInteger)httpRequestErrorAlertWithRequest:(ASIPithosRequest *)request;
158 + (NSInteger)unexpectedResponseStatusAlertWithRequest:(ASIPithosRequest *)request;
159 + (NSInteger)fileActionFailedAlertWithTitle:(NSString *)title message:(NSString *)message error:(NSError *)error;
161 + (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request priority:(NSOperationQueuePriority)priority;
162 + (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request;
163 + (ASIPithosRequest *)copyRequest:(ASIPithosRequest *)request;