afmotion 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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