fastly 0.97 → 0.98
Sign up to get free protection for your applications and to get access to all the features.
- data/Changes +15 -0
- data/lib/fastly.rb +4 -4
- data/lib/fastly/fetcher.rb +0 -5
- data/lib/fastly/service.rb +11 -6
- data/lib/fastly/version.rb +11 -13
- data/test/api_key_test.rb +1 -1
- data/test/common.rb +8 -2
- metadata +4 -4
data/Changes
CHANGED
@@ -1,3 +1,18 @@
|
|
1
|
+
2012-02-02 v0.98
|
2
|
+
|
3
|
+
Make deactivate! work
|
4
|
+
Add active?
|
5
|
+
Add Service.purge_by_key
|
6
|
+
|
7
|
+
2012-01-27 v0.97
|
8
|
+
|
9
|
+
Fix invoice tests with new billing API
|
10
|
+
|
11
|
+
2012-01-16 v0.96
|
12
|
+
|
13
|
+
Fix version.locked?
|
14
|
+
Make fastly_upload_vcl work
|
15
|
+
|
1
16
|
2011-12-19 v0.95
|
2
17
|
|
3
18
|
Fix the way invoices and stats are fetched
|
data/lib/fastly.rb
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
# A client library for interacting with the Fastly web acceleration service
|
6
6
|
class Fastly
|
7
7
|
# The current version of the library
|
8
|
-
VERSION = "0.
|
8
|
+
VERSION = "0.98"
|
9
9
|
|
10
10
|
require 'fastly/fetcher'
|
11
11
|
require 'fastly/client'
|
@@ -51,17 +51,17 @@ class Fastly
|
|
51
51
|
# Whether or not we're fully (username and password) authed
|
52
52
|
# Some methods require full username and password rather than just auth token
|
53
53
|
def fully_authed?
|
54
|
-
client.
|
55
|
-
#client.fully_authed?
|
54
|
+
client.fully_authed?
|
56
55
|
end
|
57
56
|
|
58
57
|
# Return a Customer object representing the customer of the current logged in user.
|
59
58
|
def current_customer
|
60
|
-
raise Fastly::
|
59
|
+
raise Fastly::AuthRequired unless self.authed?
|
61
60
|
@current_customer ||= get(Customer)
|
62
61
|
end
|
63
62
|
|
64
63
|
# Return a User object representing the current logged in user.
|
64
|
+
# NOTE: requires you to be fully authed - will not work with only an API key
|
65
65
|
def current_user
|
66
66
|
raise Fastly::FullAuthRequired unless self.fully_authed?
|
67
67
|
@current_user ||= get(User)
|
data/lib/fastly/fetcher.rb
CHANGED
@@ -18,14 +18,12 @@ class Fastly
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def list(klass, opts={})
|
21
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
22
21
|
list = client.get(klass.list_path, opts)
|
23
22
|
return [] if list.nil?
|
24
23
|
list.map { |hash| klass.new(hash, self) }
|
25
24
|
end
|
26
25
|
|
27
26
|
def get(klass, *args)
|
28
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
29
27
|
if [User, Customer].include?(klass) && args.empty?
|
30
28
|
hash = client.get("/current_#{klass.path}")
|
31
29
|
else
|
@@ -36,19 +34,16 @@ class Fastly
|
|
36
34
|
end
|
37
35
|
|
38
36
|
def create(klass, opts)
|
39
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
40
37
|
hash = client.post(klass.post_path(opts),opts)
|
41
38
|
return klass.new(hash, self)
|
42
39
|
end
|
43
40
|
|
44
41
|
def update(klass, obj)
|
45
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
46
42
|
hash = client.put(klass.put_path(obj), obj.as_hash)
|
47
43
|
return klass.new(hash, self)
|
48
44
|
end
|
49
45
|
|
50
46
|
def delete(klass, obj)
|
51
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
52
47
|
return client.delete(klass.delete_path(obj))
|
53
48
|
end
|
54
49
|
|
data/lib/fastly/service.rb
CHANGED
@@ -38,7 +38,6 @@ class Fastly
|
|
38
38
|
# * daily
|
39
39
|
# * all
|
40
40
|
def stats(type=:all, opts={})
|
41
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
42
41
|
raise Fastly::Error "Unknown stats type #{type}" unless [:minutely,:hourly,:daily,:all].include?(type.to_sym)
|
43
42
|
hash = fetcher.client.get(Fastly::Service.get_path(self.id)+"/stats/#{type}", opts)
|
44
43
|
return hash
|
@@ -50,7 +49,6 @@ class Fastly
|
|
50
49
|
#
|
51
50
|
# Otherwise it returns the invoice for the current month so far.
|
52
51
|
def invoice(year=nil, month=nil)
|
53
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
54
52
|
opts = { :service_id => self.id }
|
55
53
|
unless year.nil? || month.nil?
|
56
54
|
opts[:year] = year
|
@@ -61,10 +59,15 @@ class Fastly
|
|
61
59
|
|
62
60
|
# Purge all assets from this service.
|
63
61
|
def purge_all
|
64
|
-
raise Fastly::AuthRequired unless self.authed?
|
65
62
|
res = client.put(get_path(self.id)+"/purge_all")
|
66
63
|
end
|
67
64
|
|
65
|
+
|
66
|
+
# Purge anything with the specific key from the given service.
|
67
|
+
def purge_by_key(key)
|
68
|
+
res = client.put(get_path(self.id)+"/purge/#{key}")
|
69
|
+
end
|
70
|
+
|
68
71
|
# Set all the versions that this service has had.
|
69
72
|
def versions=(versions)
|
70
73
|
@versions = versions
|
@@ -72,16 +75,19 @@ class Fastly
|
|
72
75
|
|
73
76
|
# Get a sorted array of all the versions that this service has had.
|
74
77
|
def versions
|
75
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
76
78
|
@versions.map { |v| Fastly::Version.new(v, fetcher) }.sort { |a,b| a.number.to_i <=> b.number.to_i }
|
77
79
|
end
|
78
80
|
|
79
81
|
# Get an individual Version object. By default returns the latest version
|
80
82
|
def version(number=-1)
|
81
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
82
83
|
versions[number]
|
83
84
|
end
|
84
85
|
|
86
|
+
# A deep hash of nested details
|
87
|
+
def details(opts={})
|
88
|
+
client.get(get_path(self.id)+"/details", opts);
|
89
|
+
end
|
90
|
+
|
85
91
|
# Get the Customer object for this Service
|
86
92
|
def customer
|
87
93
|
fetcher.get(Fastly::Customer, customer_id)
|
@@ -98,7 +104,6 @@ class Fastly
|
|
98
104
|
#
|
99
105
|
# service = fastly.search_services(:name => name, :version => number)
|
100
106
|
def search_services(opts)
|
101
|
-
raise Fastly::FullAuthRequired unless self.fully_authed?
|
102
107
|
klass = Fastly::Service
|
103
108
|
hash = client.get(klass.post_path+"/search", opts)
|
104
109
|
return nil if hash.nil?
|
data/lib/fastly/version.rb
CHANGED
@@ -54,7 +54,7 @@ class Fastly
|
|
54
54
|
|
55
55
|
# Is this Version locked
|
56
56
|
def locked?
|
57
|
-
return @locked.to_i >
|
57
|
+
return @locked.to_i > 0
|
58
58
|
end
|
59
59
|
|
60
60
|
# Set whether this Version is locked
|
@@ -72,23 +72,25 @@ class Fastly
|
|
72
72
|
fetcher.get_settings(service_id, number)
|
73
73
|
end
|
74
74
|
|
75
|
+
# Is version active?
|
76
|
+
def active?
|
77
|
+
return @active.to_i > 0
|
78
|
+
end
|
79
|
+
|
75
80
|
# Activate this version
|
76
81
|
def activate!
|
77
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
78
82
|
hash = fetcher.client.put(Fastly::Version.put_path(self)+"/activate")
|
79
83
|
return !hash.nil?
|
80
84
|
end
|
81
85
|
|
82
|
-
#
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
# end
|
86
|
+
# Deactivate this version
|
87
|
+
def deactivate!
|
88
|
+
hash = fetcher.client.put(Fastly::Version.put_path(self)+"/deactivate")
|
89
|
+
return !hash.nil?
|
90
|
+
end
|
88
91
|
|
89
92
|
# Clone this Version
|
90
93
|
def clone
|
91
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
92
94
|
hash = fetcher.client.put(Fastly::Version.put_path(self)+"/clone")
|
93
95
|
return nil if hash.nil?
|
94
96
|
return Fastly::Version.new(hash, fetcher)
|
@@ -100,7 +102,6 @@ class Fastly
|
|
100
102
|
# :include_content => true
|
101
103
|
# in the opts
|
102
104
|
def generated_vcl(opts={})
|
103
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
104
105
|
hash = fetcher.client.get(Fastly::Version.put_path(self)+"/generated_vcl", opts)
|
105
106
|
opts = {
|
106
107
|
'content' => hash['vcl'] || hash['content'],
|
@@ -113,7 +114,6 @@ class Fastly
|
|
113
114
|
|
114
115
|
# Upload a VCL file for this Version
|
115
116
|
def upload_vcl(name, content)
|
116
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
117
117
|
hash = fetcher.client.post(Fastly::Version.put_path(self)+"/vcl", :name => name, :content => content)
|
118
118
|
return nil if hash.nil?
|
119
119
|
return Fastly::VCL.new(hash, fetcher)
|
@@ -125,13 +125,11 @@ class Fastly
|
|
125
125
|
# :include_content => true
|
126
126
|
# in the opts
|
127
127
|
def vcl(name, opts={})
|
128
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
129
128
|
fetcher.get_vcl(service_id, number, name, opts)
|
130
129
|
end
|
131
130
|
|
132
131
|
# Validate this Version
|
133
132
|
def validate
|
134
|
-
raise Fastly::FullAuthRequired unless fetcher.fully_authed?
|
135
133
|
hash = fetcher.client.get(Fastly::Version.put_path(self)+"/validate")
|
136
134
|
return !hash.nil?
|
137
135
|
end
|
data/test/api_key_test.rb
CHANGED
@@ -32,7 +32,7 @@ class ApiKeyTest < Test::Unit::TestCase
|
|
32
32
|
|
33
33
|
def test_current_user_and_customer
|
34
34
|
current_user = current_customer = nil
|
35
|
-
assert_raise(Fastly::
|
35
|
+
assert_raise(Fastly::FullAuthRequired) {
|
36
36
|
current_user = @fastly.current_user
|
37
37
|
}
|
38
38
|
assert_equal nil, current_user
|
data/test/common.rb
CHANGED
@@ -111,11 +111,17 @@ module CommonTests
|
|
111
111
|
# assert_equal origin.version.number.to_s, number.to_s
|
112
112
|
|
113
113
|
assert version3.activate!
|
114
|
+
assert version3.deactivate!
|
115
|
+
assert !@fastly.get_service(version3.service_id).version.active
|
116
|
+
assert !@fastly.get_service(version3.service_id).version.active?
|
117
|
+
assert version3.activate!
|
118
|
+
assert @fastly.get_service(version3.service_id).version.active
|
119
|
+
assert @fastly.get_service(version3.service_id).version.active?
|
114
120
|
|
115
|
-
generated = version3.generated_vcl
|
121
|
+
generated = version3.generated_vcl(:no_content => true)
|
116
122
|
assert generated
|
117
123
|
assert generated.content.nil?
|
118
|
-
generated = version3.generated_vcl
|
124
|
+
generated = version3.generated_vcl
|
119
125
|
assert !generated.content.nil?
|
120
126
|
assert generated.content.match(/\.port = "9092"/ms)
|
121
127
|
|
metadata
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastly
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 207
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: "0.
|
8
|
+
- 98
|
9
|
+
version: "0.98"
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Fastly Inc
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2012-
|
17
|
+
date: 2012-02-16 00:00:00 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: json
|