raca 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +4 -0
- data/README.markdown +2 -1
- data/lib/raca/account.rb +1 -0
- data/lib/raca/errors.rb +3 -0
- data/lib/raca/http_client.rb +32 -14
- 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: 1c290f2dd6af19a5ab076f84c52b27387d5f3fd4
|
4
|
+
data.tar.gz: 8040a35b98a4fdb5998c7720e6dc8eed505ef5eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69beeb3f67228cb2a6eeb2a44bd8fc95864c53222698925d45699471b1c7ce796d6822edf49cafbd6fe5a9ae97834f0efdaab1d0c94588802c2f6d2987a8446b
|
7
|
+
data.tar.gz: 3cbb4a824710d81018e40d465603165976ac365eefe470c207f09314f0659ebd903f88c8fb4cd46a74511a5a182193efcd0cf3a019e7b55b4f8f8740b6885f75
|
data/CHANGELOG
CHANGED
data/README.markdown
CHANGED
@@ -155,7 +155,8 @@ As of version 1.20.0, fog supports dozens of providers, contains ~152000 lines
|
|
155
155
|
of ruby and adds ~500ms to the boot time of our rails apps. raca is a
|
156
156
|
lightweight, rackspace-only alternative with minimal dependencies that should
|
157
157
|
have a negligable impact on application boot times. Version 0.3 has ~700 lines of
|
158
|
-
ruby (excluding specs).
|
158
|
+
ruby (excluding specs). It also does *much* less than fog. We can't have our cake
|
159
|
+
and eat it too.
|
159
160
|
|
160
161
|
## Compatibility
|
161
162
|
|
data/lib/raca/account.rb
CHANGED
data/lib/raca/errors.rb
CHANGED
data/lib/raca/http_client.rb
CHANGED
@@ -21,35 +21,60 @@ module Raca
|
|
21
21
|
|
22
22
|
def get(path, headers = {}, &block)
|
23
23
|
cloud_request(Net::HTTP::Get.new(path, headers), &block)
|
24
|
+
rescue Raca::UnauthorizedError
|
25
|
+
@account.refresh_cache
|
26
|
+
cloud_request(Net::HTTP::Get.new(path, headers), &block)
|
24
27
|
end
|
25
28
|
|
26
29
|
def head(path, headers = {})
|
27
30
|
cloud_request(Net::HTTP::Head.new(path, headers))
|
31
|
+
rescue Raca::UnauthorizedError
|
32
|
+
@account.refresh_cache
|
33
|
+
cloud_request(Net::HTTP::Head.new(path, headers))
|
28
34
|
end
|
29
35
|
|
30
36
|
def delete(path, headers = {})
|
31
37
|
cloud_request(Net::HTTP::Delete.new(path, headers))
|
38
|
+
rescue Raca::UnauthorizedError
|
39
|
+
@account.refresh_cache
|
40
|
+
cloud_request(Net::HTTP::Delete.new(path, headers))
|
32
41
|
end
|
33
42
|
|
34
43
|
def put(path, headers = {})
|
35
44
|
cloud_request(Net::HTTP::Put.new(path, headers))
|
45
|
+
rescue Raca::UnauthorizedError
|
46
|
+
@account.refresh_cache
|
47
|
+
cloud_request(Net::HTTP::Put.new(path, headers))
|
36
48
|
end
|
37
49
|
|
38
50
|
def streaming_put(path, io, byte_count, headers = {})
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
51
|
+
cloud_request(build_streaming_put_request(path, io, byte_count, headers))
|
52
|
+
rescue Raca::UnauthorizedError
|
53
|
+
@account.refresh_cache
|
54
|
+
io.rewind if io.respond_to?(:rewind)
|
55
|
+
cloud_request(build_streaming_put_request(path, io, byte_count, headers))
|
43
56
|
end
|
44
57
|
|
45
58
|
def post(path, body, headers = {})
|
46
59
|
request = Net::HTTP::Post.new(path, headers)
|
47
60
|
request.body = body if body
|
48
61
|
cloud_request(request)
|
62
|
+
rescue Raca::UnauthorizedError
|
63
|
+
@account.refresh_cache
|
64
|
+
request = Net::HTTP::Post.new(path, headers)
|
65
|
+
request.body = body if body
|
66
|
+
cloud_request(request)
|
49
67
|
end
|
50
68
|
|
51
69
|
private
|
52
70
|
|
71
|
+
def build_streaming_put_request(path, io, byte_count, headers)
|
72
|
+
request = Net::HTTP::Put.new(path, headers)
|
73
|
+
request.body_stream = io
|
74
|
+
request.content_length = byte_count
|
75
|
+
request
|
76
|
+
end
|
77
|
+
|
53
78
|
# perform an HTTP request to rackpsace.
|
54
79
|
#
|
55
80
|
# request is a Net::HTTP request object.
|
@@ -83,16 +108,8 @@ module Raca
|
|
83
108
|
end
|
84
109
|
|
85
110
|
def cloud_http(&block)
|
86
|
-
Net::HTTP.
|
87
|
-
|
88
|
-
http.read_timeout = 70
|
89
|
-
}.start do |http|
|
90
|
-
response = block.call http
|
91
|
-
if response.is_a?(Net::HTTPUnauthorized)
|
92
|
-
log "Rackspace returned HTTP 401; refreshing auth before retrying."
|
93
|
-
@account.refresh_cache
|
94
|
-
response = block.call http
|
95
|
-
end
|
111
|
+
Net::HTTP.start(@hostname, 443, use_ssl: true, read_timeout: 70) do |http|
|
112
|
+
response = block.call(http)
|
96
113
|
if response.is_a?(Net::HTTPSuccess)
|
97
114
|
response
|
98
115
|
else
|
@@ -104,6 +121,7 @@ module Raca
|
|
104
121
|
def raise_on_error(response)
|
105
122
|
error_klass = case response.code.to_i
|
106
123
|
when 400 then BadRequestError
|
124
|
+
when 401 then UnauthorizedError
|
107
125
|
when 404 then NotFoundError
|
108
126
|
when 500 then ServerError
|
109
127
|
else
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: raca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Healy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|