Added public object functionality.
[pithos-ios] / Classes / APILogger.m
1 //
2 //  APILogger.m
3 //  OpenStack
4 //
5 //  Created by Mike Mayo on 10/11/10.
6 //  The OpenStack project is provided under the Apache 2.0 license.
7 //
8
9 #import "APILogger.h"
10 #import "OpenStackRequest.h"
11 #import "APILogEntry.h"
12 #import "Archiver.h"
13
14 #define kMaxLogEntries 1000
15
16 static NSArray *loggerEntries = nil;
17
18 @implementation APILogger
19
20 + (void)initialize {
21     // TODO: restore
22     loggerEntries = [[NSArray alloc] init];
23     /*
24     loggerEntries = [Archiver retrieve:@"loggerEntries"];
25     if (loggerEntries == nil) {
26         loggerEntries = [[NSArray alloc] init];
27         [Archiver persist:loggerEntries key:@"loggerEntries"];
28     }
29      */
30 }
31
32 + (NSArray *)loggerEntries {
33     if (loggerEntries == nil) {
34         loggerEntries = [Archiver retrieve:@"loggerEntries"];
35     }
36     return loggerEntries;
37 }
38
39 + (void)log:(OpenStackRequest *)request {
40
41     return; // disabling request logging for performance
42     
43     APILogEntry *entry = [[APILogEntry alloc] initWithRequest:request];
44     
45     NSMutableArray *entries = [NSMutableArray arrayWithArray:[APILogger loggerEntries]];
46     [entries insertObject:entry atIndex:0];
47     [entry release];
48     
49     while ([entries count] > kMaxLogEntries) {
50         [entries removeLastObject];
51     }
52     
53     // not checking for success since it's just logging
54     [Archiver persist:[NSArray arrayWithArray:entries] key:@"loggerEntries"];
55     
56     loggerEntries = nil;
57 }
58
59 + (BOOL)eraseAllLogs {
60     loggerEntries = nil;
61     return [Archiver delete:@"loggerEntries"];
62 }
63
64 @end