summaryrefslogtreecommitdiff
path: root/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m
diff options
context:
space:
mode:
Diffstat (limited to 'platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m')
-rw-r--r--platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m169
1 files changed, 169 insertions, 0 deletions
diff --git a/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m b/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m
new file mode 100644
index 0000000000..327a4d2d20
--- /dev/null
+++ b/platform/ios/test/OHHTTPStubs/Examples/ObjC/MainViewController.m
@@ -0,0 +1,169 @@
+//
+// MainViewController.m
+// OHHTTPStubsDemo
+//
+// Created by Olivier Halligon on 11/08/12.
+// Copyright (c) 2012 AliSoftware. All rights reserved.
+//
+
+#import "MainViewController.h"
+#import <OHHTTPStubs/OHHTTPStubs.h>
+
+
+@interface MainViewController ()
+// IBOutlets
+@property (retain, nonatomic) IBOutlet UISwitch *delaySwitch;
+@property (retain, nonatomic) IBOutlet UITextView *textView;
+@property (retain, nonatomic) IBOutlet UISwitch *installTextStubSwitch;
+@property (retain, nonatomic) IBOutlet UIImageView *imageView;
+@property (retain, nonatomic) IBOutlet UISwitch *installImageStubSwitch;
+@end
+
+@implementation MainViewController
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Init & Dealloc
+
+- (void)viewDidLoad
+{
+ [super viewDidLoad];
+
+ [self installTextStub:self.installTextStubSwitch];
+ [self installImageStub:self.installImageStubSwitch];
+ [OHHTTPStubs onStubActivation:^(NSURLRequest *request, id<OHHTTPStubsDescriptor> stub) {
+ NSLog(@"[OHHTTPStubs] Request to %@ has been stubbed with %@", request.URL, stub.name);
+ }];
+}
+- (void)viewDidUnload
+{
+ [self setTextView:nil];
+ [self setImageView:nil];
+ [self setDelaySwitch:nil];
+ [super viewDidUnload];
+}
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Global stubs activation
+
+- (IBAction)toggleStubs:(UISwitch *)sender
+{
+ [OHHTTPStubs setEnabled:sender.on];
+ self.delaySwitch.enabled = sender.on;
+ self.installTextStubSwitch.enabled = sender.on;
+ self.installImageStubSwitch.enabled = sender.on;
+
+ NSLog(@"Installed (%@) stubs: %@", (sender.on?@"and enabled":@"but disabled"), OHHTTPStubs.allStubs);
+}
+
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Text Download and Stub
+
+
+- (IBAction)downloadText:(UIButton*)sender
+{
+ sender.enabled = NO;
+ self.textView.text = nil;
+
+ NSString* urlString = @"http://www.opensource.apple.com/source/Git/Git-26/src/git-htmldocs/git-commit.txt?txt";
+ NSURLRequest* req = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
+
+ // This is a very handy way to send an asynchronous method, but only available in iOS5+
+ [NSURLConnection sendAsynchronousRequest:req
+ queue:[NSOperationQueue mainQueue]
+ completionHandler:^(NSURLResponse* resp, NSData* data, NSError* error)
+ {
+ sender.enabled = YES;
+ NSString* receivedText = [[NSString alloc] initWithData:data encoding:NSASCIIStringEncoding];
+ self.textView.text = receivedText;
+ }];
+}
+
+
+
+
+- (IBAction)installTextStub:(UISwitch *)sender
+{
+ static id<OHHTTPStubsDescriptor> textStub = nil; // Note: no need to retain this value, it is retained by the OHHTTPStubs itself already
+ if (sender.on)
+ {
+ // Install
+ textStub = [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
+ // This stub will only configure stub requests for "*.txt" files
+ return [request.URL.pathExtension isEqualToString:@"txt"];
+ } withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) {
+ // Stub txt files with this
+ return [[OHHTTPStubsResponse responseWithFileAtPath:OHPathForFile(@"stub.txt", self.class)
+ statusCode:200
+ headers:@{@"Content-Type":@"text/plain"}]
+ requestTime:self.delaySwitch.on ? 2.f: 0.f
+ responseTime:OHHTTPStubsDownloadSpeedWifi];
+ }];
+ textStub.name = @"Text stub";
+ }
+ else
+ {
+ // Uninstall
+ [OHHTTPStubs removeStub:textStub];
+ }
+}
+
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Image Download and Stub
+
+- (IBAction)downloadImage:(UIButton*)sender
+{
+ sender.enabled = NO;
+
+ NSString* urlString = @"http://images.apple.com/support/assets/images/products/iphone/hero_iphone4-5_wide.png";
+ NSURLRequest* req = [NSURLRequest requestWithURL:[NSURL URLWithString:urlString]];
+
+ // This is a very handy way to send an asynchronous method, but only available in iOS5+
+ [NSURLConnection sendAsynchronousRequest:req
+ queue:[NSOperationQueue mainQueue]
+ completionHandler:^(NSURLResponse* resp, NSData* data, NSError* error)
+ {
+ sender.enabled = YES;
+ self.imageView.image = [UIImage imageWithData:data];
+ }];
+}
+
+- (IBAction)installImageStub:(UISwitch *)sender
+{
+ static id<OHHTTPStubsDescriptor> imageStub = nil; // Note: no need to retain this value, it is retained by the OHHTTPStubs itself already :)
+ if (sender.on)
+ {
+ // Install
+ imageStub = [OHHTTPStubs stubRequestsPassingTest:^BOOL(NSURLRequest *request) {
+ // This stub will only configure stub requests for "*.png" files
+ return [request.URL.pathExtension isEqualToString:@"png"];
+ } withStubResponse:^OHHTTPStubsResponse *(NSURLRequest *request) {
+ // Stub jpg files with this
+ return [[OHHTTPStubsResponse responseWithFileAtPath:OHPathForFile(@"stub.jpg", self.class)
+ statusCode:200
+ headers:@{@"Content-Type":@"image/jpeg"}]
+ requestTime:self.delaySwitch.on ? 2.f: 0.f
+ responseTime:OHHTTPStubsDownloadSpeedWifi];
+ }];
+ imageStub.name = @"Image stub";
+ }
+ else
+ {
+ // Uninstall
+ [OHHTTPStubs removeStub:imageStub];
+ }
+}
+
+////////////////////////////////////////////////////////////////////////////////
+#pragma mark - Cleaning
+
+- (IBAction)clearResults
+{
+ self.textView.text = @"";
+ self.imageView.image = nil;
+}
+
+@end