afmotion 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. data/.gitignore +16 -0
  2. data/AFMotion.gemspec +19 -0
  3. data/Gemfile +4 -0
  4. data/Gemfile.lock +53 -0
  5. data/README.md +135 -0
  6. data/Rakefile +14 -0
  7. data/app/app_delegate.rb +6 -0
  8. data/examples/AppDotNet/.gitignore +13 -0
  9. data/examples/AppDotNet/Gemfile +4 -0
  10. data/examples/AppDotNet/Gemfile.lock +48 -0
  11. data/examples/AppDotNet/Rakefile +10 -0
  12. data/examples/AppDotNet/app/app_delegate.rb +28 -0
  13. data/examples/AppDotNet/app/global_timeline_view_controller.rb +84 -0
  14. data/examples/AppDotNet/app/post.rb +23 -0
  15. data/examples/AppDotNet/app/post_table_view_cell.rb +44 -0
  16. data/examples/AppDotNet/app/user.rb +9 -0
  17. data/examples/AppDotNet/resources/profile-image-placeholder.png +0 -0
  18. data/examples/AppDotNet/resources/profile-image-placeholder@2x.png +0 -0
  19. data/examples/AppDotNet/spec/main_spec.rb +9 -0
  20. data/examples/AppDotNet/vendor/Podfile.lock +11 -0
  21. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +574 -0
  22. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +1187 -0
  23. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +133 -0
  24. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +341 -0
  25. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +108 -0
  26. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +237 -0
  27. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +71 -0
  28. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +136 -0
  29. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  30. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +131 -0
  31. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +44 -0
  32. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  33. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +145 -0
  34. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +295 -0
  35. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +652 -0
  36. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +89 -0
  37. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +169 -0
  38. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +78 -0
  39. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +180 -0
  40. data/examples/AppDotNet/vendor/Pods/AFNetworking/AFNetworking.podspec +28 -0
  41. data/examples/AppDotNet/vendor/Pods/AFNetworking/LICENSE +19 -0
  42. data/examples/AppDotNet/vendor/Pods/AFNetworking/README.md +179 -0
  43. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +574 -0
  44. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +133 -0
  45. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +108 -0
  46. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +71 -0
  47. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  48. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +44 -0
  49. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  50. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +295 -0
  51. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +89 -0
  52. data/examples/AppDotNet/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +78 -0
  53. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +574 -0
  54. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +133 -0
  55. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +108 -0
  56. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +71 -0
  57. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  58. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFNetworking.h +44 -0
  59. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  60. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +295 -0
  61. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +89 -0
  62. data/examples/AppDotNet/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +78 -0
  63. data/examples/AppDotNet/vendor/Pods/Pods-Acknowledgements.markdown +26 -0
  64. data/examples/AppDotNet/vendor/Pods/Pods-Acknowledgements.plist +56 -0
  65. data/examples/AppDotNet/vendor/Pods/Pods-prefix.pch +12 -0
  66. data/examples/AppDotNet/vendor/Pods/Pods-resources.sh +19 -0
  67. data/examples/AppDotNet/vendor/Pods/Pods.bridgesupport +617 -0
  68. data/examples/AppDotNet/vendor/Pods/Pods.xcconfig +7 -0
  69. data/examples/AppDotNet/vendor/Pods/Pods.xcodeproj/project.pbxproj +998 -0
  70. data/examples/AppDotNet/vendor/Pods/PodsDummy_Pods.m +4 -0
  71. data/lib/afmotion/http.rb +55 -0
  72. data/lib/afmotion/http_client.rb +121 -0
  73. data/lib/afmotion/http_result.rb +25 -0
  74. data/lib/afmotion/image.rb +10 -0
  75. data/lib/afmotion/operation.rb +65 -0
  76. data/lib/afmotion/patch/NSString_NSUrl.rb +11 -0
  77. data/lib/afmotion/version.rb +5 -0
  78. data/lib/afmotion.rb +16 -0
  79. data/pkg/afmotion-0.0.1.gem +0 -0
  80. data/spec/http_client_spec.rb +104 -0
  81. data/spec/http_spec.rb +26 -0
  82. data/spec/operation_spec.rb +41 -0
  83. data/vendor/Podfile.lock +11 -0
  84. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.h +574 -0
  85. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPClient.m +1187 -0
  86. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +133 -0
  87. data/vendor/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +341 -0
  88. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.h +108 -0
  89. data/vendor/Pods/AFNetworking/AFNetworking/AFImageRequestOperation.m +237 -0
  90. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.h +71 -0
  91. data/vendor/Pods/AFNetworking/AFNetworking/AFJSONRequestOperation.m +136 -0
  92. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  93. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworkActivityIndicatorManager.m +131 -0
  94. data/vendor/Pods/AFNetworking/AFNetworking/AFNetworking.h +44 -0
  95. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  96. data/vendor/Pods/AFNetworking/AFNetworking/AFPropertyListRequestOperation.m +145 -0
  97. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +295 -0
  98. data/vendor/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +652 -0
  99. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.h +89 -0
  100. data/vendor/Pods/AFNetworking/AFNetworking/AFXMLRequestOperation.m +169 -0
  101. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.h +78 -0
  102. data/vendor/Pods/AFNetworking/AFNetworking/UIImageView+AFNetworking.m +180 -0
  103. data/vendor/Pods/AFNetworking/AFNetworking.podspec +28 -0
  104. data/vendor/Pods/AFNetworking/LICENSE +19 -0
  105. data/vendor/Pods/AFNetworking/README.md +179 -0
  106. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPClient.h +574 -0
  107. data/vendor/Pods/BuildHeaders/AFNetworking/AFHTTPRequestOperation.h +133 -0
  108. data/vendor/Pods/BuildHeaders/AFNetworking/AFImageRequestOperation.h +108 -0
  109. data/vendor/Pods/BuildHeaders/AFNetworking/AFJSONRequestOperation.h +71 -0
  110. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  111. data/vendor/Pods/BuildHeaders/AFNetworking/AFNetworking.h +44 -0
  112. data/vendor/Pods/BuildHeaders/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  113. data/vendor/Pods/BuildHeaders/AFNetworking/AFURLConnectionOperation.h +295 -0
  114. data/vendor/Pods/BuildHeaders/AFNetworking/AFXMLRequestOperation.h +89 -0
  115. data/vendor/Pods/BuildHeaders/AFNetworking/UIImageView+AFNetworking.h +78 -0
  116. data/vendor/Pods/Headers/AFNetworking/AFHTTPClient.h +574 -0
  117. data/vendor/Pods/Headers/AFNetworking/AFHTTPRequestOperation.h +133 -0
  118. data/vendor/Pods/Headers/AFNetworking/AFImageRequestOperation.h +108 -0
  119. data/vendor/Pods/Headers/AFNetworking/AFJSONRequestOperation.h +71 -0
  120. data/vendor/Pods/Headers/AFNetworking/AFNetworkActivityIndicatorManager.h +75 -0
  121. data/vendor/Pods/Headers/AFNetworking/AFNetworking.h +44 -0
  122. data/vendor/Pods/Headers/AFNetworking/AFPropertyListRequestOperation.h +68 -0
  123. data/vendor/Pods/Headers/AFNetworking/AFURLConnectionOperation.h +295 -0
  124. data/vendor/Pods/Headers/AFNetworking/AFXMLRequestOperation.h +89 -0
  125. data/vendor/Pods/Headers/AFNetworking/UIImageView+AFNetworking.h +78 -0
  126. data/vendor/Pods/Pods-Acknowledgements.markdown +26 -0
  127. data/vendor/Pods/Pods-Acknowledgements.plist +56 -0
  128. data/vendor/Pods/Pods-prefix.pch +12 -0
  129. data/vendor/Pods/Pods-resources.sh +19 -0
  130. data/vendor/Pods/Pods.bridgesupport +617 -0
  131. data/vendor/Pods/Pods.xcconfig +7 -0
  132. data/vendor/Pods/PodsDummy_Pods.m +4 -0
  133. metadata +218 -0
@@ -0,0 +1,4 @@
1
+ @interface PodsDummy_Pods : NSObject
2
+ @end
3
+ @implementation PodsDummy_Pods
4
+ @end
@@ -0,0 +1,55 @@
1
+ module AFMotion
2
+ module HTTPBuilder
3
+ def self.included(base)
4
+ AFMotion::HTTP_METHODS.each do |method|
5
+ base.send(:define_singleton_method, method, -> (url, parameters = {}, &callback) do
6
+ request = NSMutableURLRequest.requestWithURL(url.to_url)
7
+ request.HTTPMethod = method.upcase
8
+
9
+ operation = (self.request_module.for_request(request) do |result|
10
+ callback.call(result)
11
+ end)
12
+
13
+ operation.start
14
+ operation
15
+ end)
16
+ end
17
+ end
18
+ end
19
+
20
+ module HTTP
21
+ include AFMotion::HTTPBuilder
22
+
23
+ module_function
24
+ def request_module
25
+ AFMotion::Operation::HTTP
26
+ end
27
+ end
28
+
29
+ module JSON
30
+ include AFMotion::HTTPBuilder
31
+
32
+ module_function
33
+ def request_module
34
+ AFMotion::Operation::JSON
35
+ end
36
+ end
37
+
38
+ module XML
39
+ include AFMotion::HTTPBuilder
40
+
41
+ module_function
42
+ def request_module
43
+ AFMotion::Operation::XML
44
+ end
45
+ end
46
+
47
+ module PLIST
48
+ include AFMotion::HTTPBuilder
49
+
50
+ module_function
51
+ def request_module
52
+ AFMotion::Operation::PLIST
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,121 @@
1
+ module AFMotion
2
+ class ClientDSL
3
+ def initialize(client)
4
+ @client = client
5
+ end
6
+
7
+ def header(header, value)
8
+ @client.setDefaultHeader(header, value: value)
9
+ end
10
+
11
+ def authorization(options = {})
12
+ @client.authorization = options
13
+ end
14
+
15
+ def operation(operation)
16
+ klass = operation
17
+ if operation.is_a?(Symbol) or operation.is_a?(String)
18
+ klass = case operation.to_s
19
+ when "json"
20
+ AFJSONRequestOperation
21
+ when "plist"
22
+ AFPropertyListRequestOperation
23
+ when "xml"
24
+ AFXMLRequestOperation
25
+ when "http"
26
+ AFHTTPRequestOperation
27
+ else
28
+ raise "Not a valid operation: #{operation.inspect}"
29
+ end
30
+ end
31
+
32
+ @client.registerHTTPOperationClass(klass)
33
+ end
34
+
35
+ def parameter_encoding(encoding)
36
+ enc = encoding
37
+ if encoding.is_a?(Symbol) or encoding.is_a?(String)
38
+ enc = case encoding.to_s
39
+ when "json"
40
+ AFJSONParameterEncoding
41
+ when "plist"
42
+ AFPropertyListParameterEncoding
43
+ when "form"
44
+ AFFormURLParameterEncoding
45
+ else
46
+ p "Not a valid parameter encoding: #{encoding.inspect}; using AFFormURLParameterEncoding"
47
+ AFFormURLParameterEncoding
48
+ end
49
+ end
50
+ @client.parameterEncoding = enc
51
+ end
52
+ end
53
+ end
54
+
55
+ module AFMotion
56
+ class Client
57
+ class << self
58
+ attr_accessor :shared
59
+
60
+ # Returns an instance of AFHTTPClient
61
+ def build(base_url, &block)
62
+ client = AFHTTPClient.clientWithBaseURL(base_url.to_url)
63
+ if block
64
+ dsl = AFMotion::ClientDSL.new(client)
65
+ dsl.instance_eval(&block)
66
+ end
67
+ client
68
+ end
69
+
70
+ # Sets AFMotion::Client.shared as the built client
71
+ # TODO: Make sure this only happens once (dispatch_once not available)
72
+ def build_shared(base_url, &block)
73
+ self.shared = self.build(base_url, &block)
74
+ end
75
+ end
76
+ end
77
+ end
78
+
79
+ class AFHTTPClient
80
+ AFMotion::HTTP_METHODS.each do |method|
81
+ # EX client.get('my/resource.json')
82
+ define_method "#{method}", -> (path, parameters = {}, &callback) do
83
+ fn = "#{method}Path:parameters:success:failure:"
84
+ self.send(fn, path, parameters,
85
+ lambda {|operation, responseObject|
86
+ result = AFMotion::HTTPResult.new(operation, responseObject, nil)
87
+ callback.call(result)
88
+ }, lambda {|operation, error|
89
+ result = AFMotion::HTTPResult.new(operation, nil, error)
90
+ callback.call(result)
91
+ })
92
+ end
93
+
94
+ end
95
+
96
+ # options can be
97
+ # - {username: ___, password: ____}
98
+ # or
99
+ # - {token: ___ }
100
+ def authorization=(options = {})
101
+ if options.nil?
102
+ clearAuthorizationHeader
103
+ elsif options[:username] && options[:password]
104
+ setAuthorizationHeaderWithUsername(options[:username], password: options[:password])
105
+ elsif options[:token]
106
+ setAuthorizationHeaderWithToken(options[:token])
107
+ else
108
+ raise "Not a valid authorization hash: #{options.inspect}"
109
+ end
110
+ end
111
+
112
+ private
113
+ # To force RubyMotion pre-compilation of these methods
114
+ def dummy
115
+ self.getPath("", parameters: nil, success: nil, failure: nil)
116
+ self.postPath("", parameters: nil, success: nil, failure: nil)
117
+ self.putPath("", parameters: nil, success: nil, failure: nil)
118
+ self.deletePath("", parameters: nil, success: nil, failure: nil)
119
+ self.patchPath("", parameters: nil, success: nil, failure: nil)
120
+ end
121
+ end
@@ -0,0 +1,25 @@
1
+ module AFMotion
2
+ class HTTPResult
3
+ attr_accessor :operation, :object, :error
4
+
5
+ def initialize(operation, responseObject, error)
6
+ self.operation = operation
7
+ self.object = responseObject
8
+ self.error = error
9
+ end
10
+
11
+ def success?
12
+ !failure?
13
+ end
14
+
15
+ def failure?
16
+ !!error
17
+ end
18
+
19
+ def body
20
+ if operation && operation.responseData
21
+ NSString.stringWithUTF8String(operation.responseData.bytes)
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,10 @@
1
+ class UIImageView
2
+ def url=(url)
3
+ case url
4
+ when Hash
5
+ self.setImageWithURL(url[:url].to_url, placeholderImage: url[:placeholder])
6
+ else
7
+ self.setImageWithURL(url.to_url)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,65 @@
1
+ module AFMotion
2
+ module Operation
3
+ module HTTP
4
+ def self.for_request(request, &callback)
5
+ operation = AFHTTPRequestOperation.alloc.initWithRequest(request)
6
+ operation.setCompletionBlockWithSuccess(
7
+ lambda { |operation, responseObject|
8
+ result = AFMotion::HTTPResult.new(operation, responseObject, nil)
9
+ callback.call(result)
10
+ },
11
+ failure: lambda {|operation, error|
12
+ result = AFMotion::HTTPResult.new(operation, nil, error)
13
+ callback.call(result)
14
+ }
15
+ )
16
+ operation
17
+ end
18
+ end
19
+
20
+ module JSON
21
+ def self.for_request(request, &callback)
22
+ operation = AFJSONRequestOperation.JSONRequestOperationWithRequest(request,
23
+ success: lambda { |request, response, json|
24
+ result = AFMotion::HTTPResult.new(operation, json, nil)
25
+ callback.call(result)
26
+ },
27
+ failure: lambda { |request, response, error, json|
28
+ result = AFMotion::HTTPResult.new(operation, json, error)
29
+ callback.call(result)
30
+ }
31
+ )
32
+ end
33
+ end
34
+
35
+ module XML
36
+ def self.for_request(request, &callback)
37
+ operation = AFXMLRequestOperation.XMLParserRequestOperationWithRequest(request,
38
+ success: lambda { |request, response, document_or_parser|
39
+ result = AFMotion::HTTPResult.new(operation, document_or_parser, nil)
40
+ callback.call(result)
41
+ },
42
+ failure: lambda { |request, response, error, document_or_parser|
43
+ result = AFMotion::HTTPResult.new(operation, document_or_parser, error)
44
+ callback.call(result)
45
+ }
46
+ )
47
+ end
48
+ end
49
+
50
+ module PLIST
51
+ def self.for_request(request, &callback)
52
+ operation = AFPropertyListRequestOperation.propertyListRequestOperationWithRequest(request,
53
+ success: lambda { |request, response, propertyList|
54
+ result = AFMotion::HTTPResult.new(operation, propertyList, nil)
55
+ callback.call(result)
56
+ },
57
+ failure: lambda { |request, response, error, propertyList|
58
+ result = AFMotion::HTTPResult.new(operation, propertyList, error)
59
+ callback.call(result)
60
+ }
61
+ )
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,11 @@
1
+ class NSString
2
+ def to_url
3
+ NSURL.URLWithString(self)
4
+ end
5
+ end
6
+
7
+ class NSURL
8
+ def to_url
9
+ self
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ module AFMotion
2
+ VERSION = "0.0.1"
3
+
4
+ HTTP_METHODS = [:get, :post, :put, :delete, :patch]
5
+ end
data/lib/afmotion.rb ADDED
@@ -0,0 +1,16 @@
1
+ require "afmotion/version"
2
+ require 'motion-cocoapods'
3
+
4
+ unless defined?(Motion::Project::Config)
5
+ raise "This file must be required within a RubyMotion project Rakefile."
6
+ end
7
+
8
+ Motion::Project::App.setup do |app|
9
+ Dir.glob(File.join(File.dirname(__FILE__), 'afmotion/**/*.rb')).each do |file|
10
+ app.files.unshift(file)
11
+ end
12
+
13
+ app.pods do
14
+ pod 'AFNetworking'
15
+ end
16
+ end
Binary file
@@ -0,0 +1,104 @@
1
+ describe "AFMotion::ClientDSL" do
2
+ before do
3
+ @client = AFHTTPClient.clientWithBaseURL("http://url".to_url)
4
+ @dsl = AFMotion::ClientDSL.new(@client)
5
+ end
6
+
7
+ describe "#header" do
8
+ it "should set header" do
9
+ @dsl.header "Accept", "application/json"
10
+ @client.defaultValueForHeader("Accept").should == "application/json"
11
+ end
12
+ end
13
+
14
+ describe "#authorization" do
15
+ it "should set authorization" do
16
+ @dsl.authorization username: "clay", password: "test"
17
+ @client.defaultValueForHeader("Authorization").nil?.should == false
18
+ end
19
+ end
20
+
21
+ describe "#operation" do
22
+ it "should set operation if provided type" do
23
+ @dsl.operation AFJSONRequestOperation
24
+ @client.registeredHTTPOperationClassNames.member?("AFJSONRequestOperation").should == true
25
+ end
26
+
27
+ it "should set operation if provided string" do
28
+ [["json", "AFJSONRequestOperation"], ["xml", "AFXMLRequestOperation"], ["plist", "AFPropertyListRequestOperation"]].each do |op, op_class|
29
+ @dsl.operation op
30
+ @client.registeredHTTPOperationClassNames.member?(op_class).should == true
31
+ end
32
+ end
33
+ end
34
+
35
+ describe "#parameter_encoding" do
36
+ it "should set encoding if provided type" do
37
+ @dsl.parameter_encoding AFJSONParameterEncoding
38
+ @client.parameterEncoding.should == AFJSONParameterEncoding
39
+ end
40
+
41
+ it "should set encoding if provided string" do
42
+ [["json", AFJSONParameterEncoding], ["form", AFFormURLParameterEncoding], ["plist", AFPropertyListParameterEncoding]].each do |enc, enc_class|
43
+ @dsl.parameter_encoding enc
44
+ @client.parameterEncoding.should == enc_class
45
+ end
46
+ end
47
+ end
48
+ end
49
+
50
+ describe "AFMotion::Client" do
51
+ describe ".build" do
52
+ it "should return an AFHTTPClient" do
53
+ client = AFMotion::Client.build("http://url")
54
+ client.is_a?(AFHTTPClient).should == true
55
+ end
56
+ end
57
+
58
+ describe ".build_shared" do
59
+ it "should set AFMotion::Client.shared" do
60
+ client = AFMotion::Client.build_shared("http://url")
61
+ AFMotion::Client.shared.should == client
62
+ end
63
+ end
64
+ end
65
+
66
+ describe "AFHTTPClient" do
67
+ before do
68
+ @client = AFHTTPClient.clientWithBaseURL("http://google.com/".to_url)
69
+ end
70
+
71
+ describe "URL Helpers" do
72
+ it "should exist" do
73
+ AFMotion::HTTP_METHODS.each do |method|
74
+ @client.respond_to?(method).should == true
75
+ end
76
+ end
77
+ end
78
+
79
+ # Pretty basic test
80
+ it "should work" do
81
+ @result = nil
82
+ @client.get("") do |result|
83
+ @result = result
84
+ resume
85
+ end
86
+ wait_max(10) do
87
+ @result.nil?.should == false
88
+ end
89
+ end
90
+
91
+ describe "#authorization=" do
92
+ it "should set basic auth" do
93
+ @client.authorization = {username: "clay", password: "pass"}
94
+ @client.defaultValueForHeader("Authorization").split[0].should == "Basic"
95
+ end
96
+ end
97
+
98
+ describe "#build_shared" do
99
+ it "should set AFMotion::Client.shared" do
100
+ @client.authorization = {token: "clay"}
101
+ @client.defaultValueForHeader("Authorization").split[0].should == "Token"
102
+ end
103
+ end
104
+ end
data/spec/http_spec.rb ADDED
@@ -0,0 +1,26 @@
1
+ describe "AFMotion" do
2
+
3
+ modules = [AFMotion::HTTP, AFMotion::JSON, AFMotion::XML, AFMotion::PLIST]
4
+
5
+ modules.each do |_module|
6
+ describe _module.to_s do
7
+ it "should have all the HTTP methods" do
8
+ AFMotion::HTTP_METHODS.each do |method|
9
+ _module.respond_to?(method).should == true
10
+ end
11
+ end
12
+
13
+ describe ".get" do
14
+ it "should work" do
15
+ _module.get("http://google.com") do |result|
16
+ @result = result
17
+ resume
18
+ end
19
+ wait_max(10) do
20
+ @result.nil?.should == false
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,41 @@
1
+ describe "AFMotion::Operation" do
2
+ before do
3
+ @request = NSURLRequest.requestWithURL(NSURL.URLWithString("http://google.com"))
4
+ end
5
+
6
+ describe "::HTTP" do
7
+ describe ".for_request" do
8
+ it "should be a AFHTTPRequestOperation" do
9
+ operation = AFMotion::Operation::HTTP.for_request(@request)
10
+ operation.is_a?(AFHTTPRequestOperation).should == true
11
+ end
12
+ end
13
+ end
14
+
15
+ describe "::JSON" do
16
+ describe ".for_request" do
17
+ it "should be a AFJSONRequestOperation" do
18
+ operation = AFMotion::Operation::JSON.for_request(@request)
19
+ operation.is_a?(AFJSONRequestOperation).should == true
20
+ end
21
+ end
22
+ end
23
+
24
+ describe "::XML" do
25
+ describe ".for_request" do
26
+ it "should be a AFXMLRequestOperation" do
27
+ operation = AFMotion::Operation::XML.for_request(@request)
28
+ operation.is_a?(AFXMLRequestOperation).should == true
29
+ end
30
+ end
31
+ end
32
+
33
+ describe "::PLIST" do
34
+ describe ".for_request" do
35
+ it "should be a AFPropertyListRequestOperation" do
36
+ operation = AFMotion::Operation::PLIST.for_request(@request)
37
+ operation.is_a?(AFPropertyListRequestOperation).should == true
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,11 @@
1
+
2
+ PODS:
3
+ - AFNetworking (1.0.1)
4
+
5
+ DEPENDENCIES:
6
+ - AFNetworking
7
+
8
+ SPEC CHECKSUMS:
9
+ AFNetworking: 4c11f857c9a18d65f4257c90a1e74ac49f0ac422
10
+
11
+ COCOAPODS: 0.15.2