5 // Created by Mike Mayo on 1/17/11.
6 // Copyright 2011 __MyCompanyName__. All rights reserved.
9 #import "ErrorAlerter.h"
10 #import "LogEntryModalViewController.h"
11 #import "OpenStackRequest.h"
12 #import "UIViewController+Conveniences.h"
13 #import "APILogEntry.h"
16 @implementation ErrorAlerter
18 @synthesize failedRequest, logEntryModalViewController, viewController;
20 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
21 if (buttonIndex == 1) { // details button
22 if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
23 self.logEntryModalViewController.modalPresentationStyle = UIModalPresentationFormSheet;
25 [self.viewController presentModalViewController:self.logEntryModalViewController animated:YES];
29 - (void)alert:(NSString *)message request:(OpenStackRequest *)request viewController:(UIViewController *)aViewController {
31 self.viewController = aViewController;
33 NSString *title = @"Error";
34 if (request.responseStatusCode == 0) {
35 title = @"Connection Error";
36 message = @"Please check your connection or API URL and try again.";
39 self.logEntryModalViewController = [[LogEntryModalViewController alloc] initWithNibName:@"LogEntryModalViewController" bundle:nil];
40 self.logEntryModalViewController.logEntry = [[[APILogEntry alloc] initWithRequest:request] autorelease];
41 self.logEntryModalViewController.requestDescription = [logEntryModalViewController.logEntry requestDescription];
42 self.logEntryModalViewController.responseDescription = [logEntryModalViewController.logEntry responseDescription];
43 self.logEntryModalViewController.requestMethod = [logEntryModalViewController.logEntry requestMethod];
44 self.logEntryModalViewController.url = [[logEntryModalViewController.logEntry url] description];
46 // present an alert with a Details button to show the API log entry
47 UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Details", nil];
53 [failedRequest release];
54 [logEntryModalViewController release];
55 [viewController release];