Sync with "shared to me" selected accounts.
[pithos-macos] / pithos-macos / PithosUtilities.h
1 //
2 //  PithosUtilities.h
3 //  pithos-macos
4 //
5 // Copyright 2011-2012 GRNET S.A. All rights reserved.
6 //
7 // Redistribution and use in source and binary forms, with or
8 // without modification, are permitted provided that the following
9 // conditions are met:
10 // 
11 //   1. Redistributions of source code must retain the above
12 //      copyright notice, this list of conditions and the following
13 //      disclaimer.
14 // 
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.
19 // 
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.
32 // 
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.
37
38 @class ASIPithosRequest;
39 @class ASIPithos;
40 @class ASIPithosContainerRequest;
41 @class ASIPithosObjectRequest;
42 @class ASIPithosObject;
43
44 @interface PithosUtilities : NSObject
45
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;
60
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;
70
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;
108
109 + (NSArray *)deleteObjectRequestsForSubdirWithPithos:(ASIPithos *)pithos 
110                                        containerName:(NSString *)containerName 
111                                           objectName:(NSString *)objectName;
112
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;
127
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;
140
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;
156
157 + (NSInteger)httpRequestErrorAlertWithRequest:(ASIPithosRequest *)request;
158 + (NSInteger)unexpectedResponseStatusAlertWithRequest:(ASIPithosRequest *)request;
159 + (NSInteger)fileActionFailedAlertWithTitle:(NSString *)title message:(NSString *)message error:(NSError *)error;
160
161 + (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request priority:(NSOperationQueuePriority)priority;
162 + (ASIPithosRequest *)prepareRequest:(ASIPithosRequest *)request;
163 + (ASIPithosRequest *)copyRequest:(ASIPithosRequest *)request;
164
165 @end