Statistics
| Branch: | Tag: | Revision:

root / Classes / PithosUtilities.m @ ea3a6bba

History | View | Annotate | Download (3.8 kB)

1
//
2
//  PithosUtilities.m
3
//  pithos-ios
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
#import "PithosUtilities.h"
39

    
40
@implementation PithosUtilities
41

    
42
// Returns if an object is a directory based on its content type
43
+ (BOOL)isContentTypeDirectory:(NSString *)contentType {
44
    return ([contentType isEqualToString:@"application/directory"] ||
45
            [contentType hasPrefix:@"application/directory;"] ||
46
            [contentType isEqualToString:@"application/folder"] ||
47
            [contentType hasPrefix:@"application/folder;"]);
48
}
49

    
50
+ (unsigned long long)sizeOfDirectory:(NSString *)directoryPath {
51
    NSFileManager *fileManager = [NSFileManager defaultManager];
52
    NSDirectoryEnumerator *directoryEnumerator = [fileManager enumeratorAtPath:directoryPath];
53
    unsigned long long directorySize = 0;
54
    NSString *file;
55
    while (file = [directoryEnumerator nextObject]) {
56
        NSDictionary *fileAttributes = [fileManager attributesOfItemAtPath:[NSString stringWithFormat:@"%@/%@",directoryPath,file] error:nil];
57
        directorySize += [fileAttributes fileSize];
58
    }
59
    return directorySize;
60
}
61

    
62
+ (NSString *)humanReadableSize:(unsigned long long)bytes {
63
    if (bytes <= 999) {
64
        return [NSString stringWithFormat:@"%d B", (int)bytes];
65
    } else if (bytes <= 999000) {
66
        return [NSString stringWithFormat:@"%d KB", (int)ceil(bytes / 1000)];
67
    } else if (bytes <= 999900000) {
68
        double megabytes = floor(bytes / 1000000);
69
        double hundredkilobytes = ceil((bytes - megabytes * 1000000) / 100000);
70
        if (hundredkilobytes == 10) {
71
            megabytes++;
72
            hundredkilobytes = 0;
73
        }
74
        if (hundredkilobytes == 0) {
75
            return [NSString stringWithFormat:@"%d MB", (int)megabytes];
76
        } else {
77
            return [NSString stringWithFormat:@"%d.%d MB", (int)megabytes, (int)hundredkilobytes];
78
        }
79
    } else {
80
        double gigabytes = floor(bytes / 1000000000);
81
        double hundredmegabytes = ceil((bytes - gigabytes * 1000000000) / 100000000);
82
        if (hundredmegabytes == 10) {
83
            gigabytes++;
84
            hundredmegabytes = 0;
85
        }
86
        if (hundredmegabytes == 0) {
87
            return [NSString stringWithFormat:@"%d GB", (int)gigabytes];
88
        } else {
89
            return [NSString stringWithFormat:@"%d.%d GB", (int)gigabytes, (int)hundredmegabytes];
90
        }
91
    }
92
}
93

    
94
@end