RackMotion 0.2 → 0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/project/RackMotion.rb +29 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee9068613ce2063f92e820d0490c7bb59cedd2f7
|
4
|
+
data.tar.gz: 2145db0a91f4b9d9dd6f7329b48e870e9fb07202
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4d11b2b4d4aa13070cc32e7e817f9c8d807593662a210613d27f2c68544dc81ada3096eec9048553119904f4c673b1ffeddc82650c81b665cbc849a9ad47503
|
7
|
+
data.tar.gz: 08b276a6f08d958b258d015f0c39b69c1da54de514c9dbd6334b59a174761521083a445da1f03d3fad7d8d23b5b210118638289317f2965893b1db57f75dd926
|
data/lib/project/RackMotion.rb
CHANGED
@@ -1,26 +1,40 @@
|
|
1
1
|
module RackMotion
|
2
2
|
def self.use(middleware)
|
3
|
-
|
3
|
+
self.registerURLProtocol
|
4
4
|
URLProtocol.middlewares << middleware
|
5
5
|
end
|
6
6
|
|
7
|
-
def self.
|
8
|
-
|
9
|
-
|
7
|
+
def self.run(app)
|
8
|
+
self.registerURLProtocol
|
9
|
+
URLProtocol.app = app
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.
|
12
|
+
def self.cease
|
13
13
|
URLProtocol.middlewares = []
|
14
|
+
URLProtocol.app = nil
|
14
15
|
NSURLProtocol.unregisterClass URLProtocol
|
15
16
|
end
|
16
17
|
|
17
18
|
class URLProtocol < NSURLProtocol
|
18
19
|
@@middlewares = []
|
20
|
+
@@app = nil
|
19
21
|
|
20
22
|
def self.middlewares
|
21
23
|
@@middlewares
|
22
24
|
end
|
23
25
|
|
26
|
+
def self.middlewares=(obj)
|
27
|
+
@@middlewares = obj
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.app
|
31
|
+
@@app
|
32
|
+
end
|
33
|
+
|
34
|
+
def self.app=(obj)
|
35
|
+
@@app = obj
|
36
|
+
end
|
37
|
+
|
24
38
|
def self.canInitWithRequest(request)
|
25
39
|
return false unless request.URL
|
26
40
|
return false unless request.URL.scheme.start_with?("http")
|
@@ -33,13 +47,14 @@ module RackMotion
|
|
33
47
|
|
34
48
|
def startLoading
|
35
49
|
@thread = NSThread.alloc.initWithTarget(lambda do
|
36
|
-
|
50
|
+
|
51
|
+
chain = @@middlewares.inject(@@app ? @@app : self) do |instance, klass|
|
37
52
|
klass.new(instance)
|
38
53
|
end
|
39
54
|
|
40
55
|
status, headers, data = chain.call self.request.mutableCopy
|
41
56
|
|
42
|
-
response = NSHTTPURLResponse.alloc.initWithURL
|
57
|
+
response = NSHTTPURLResponse.alloc.initWithURL self.request.URL, statusCode: status, HTTPVersion: 'HTTP/1.1', headerFields: headers
|
43
58
|
|
44
59
|
self.client.URLProtocol(self, didReceiveResponse: response, cacheStoragePolicy: NSURLCacheStorageNotAllowed)
|
45
60
|
self.client.URLProtocol(self, didLoadData: data)
|
@@ -87,4 +102,11 @@ module RackMotion
|
|
87
102
|
@semaphore.signal
|
88
103
|
end
|
89
104
|
end
|
105
|
+
|
106
|
+
private
|
107
|
+
def self.registerURLProtocol
|
108
|
+
if URLProtocol.middlewares.empty? && URLProtocol.app.nil?
|
109
|
+
NSURLProtocol.registerClass URLProtocol
|
110
|
+
end
|
111
|
+
end
|
90
112
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: RackMotion
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '0.
|
4
|
+
version: '0.3'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Drew Carey Buglione
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-08-
|
11
|
+
date: 2013-08-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|