fastly 1.00 → 1.1.0

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.
@@ -2,7 +2,7 @@ class Fastly
2
2
  # An individual host you want to serve assets off
3
3
  class Backend < BelongsToServiceAndVersion
4
4
  attr_accessor :service_id, :name, :address, :ipv4, :ipv6, :hostname, :use_ssl, :client_cert, :port,
5
- :connect_timeout, :first_byte_timeout, :between_bytes_timeout, :error_threshold, :max_conn, :weight, :comment, :healthcheck
5
+ :connect_timeout, :first_byte_timeout, :between_bytes_timeout, :error_threshold, :max_conn, :weight, :comment, :healthcheck, :auto_loadbalance, :request_condition
6
6
 
7
7
  ##
8
8
  # :attr: service_id
@@ -99,6 +99,15 @@ class Fastly
99
99
  # :attr: healthcheck
100
100
  #
101
101
  # the name of a healthcheck to associate with this backend. See the Healthcheck object
102
-
102
+
103
+ ##
104
+ # :attr: auto_loadbalance
105
+ #
106
+ # set to true if you want to auto_loadbalance, set to false if you don't want to auto_loadbalance
107
+
108
+ ##
109
+ # :attr: request_condition
110
+ #
111
+ # name of a request_condition to filter the backend on
103
112
  end
104
113
  end
@@ -35,7 +35,7 @@ class Fastly
35
35
  end
36
36
 
37
37
  def self.path
38
- self.to_s.downcase.split("::")[-1]
38
+ self.to_s.split("::")[-1].underscore
39
39
  end
40
40
 
41
41
  def self.get_path(id)
@@ -19,6 +19,11 @@ class Fastly
19
19
  def version_number
20
20
  @version
21
21
  end
22
+
23
+ # :nodoc:
24
+ def as_hash
25
+ super.delete_if { |var| ["service_id", "version"].include?(var) }
26
+ end
22
27
 
23
28
  private
24
29
 
@@ -27,7 +32,7 @@ class Fastly
27
32
  end
28
33
 
29
34
  def self.post_path(opts)
30
- "/service/#{opts[:service_id]}/version/#{opts[:version]}/#{path}"
35
+ "/service/#{opts[:service_id]}/version/#{opts[:version]}/#{path}"
31
36
  end
32
37
 
33
38
  def self.put_path(obj)
@@ -39,4 +44,4 @@ class Fastly
39
44
  end
40
45
 
41
46
  end
42
- end
47
+ end
@@ -0,0 +1,47 @@
1
+ class Fastly
2
+ # customize cache handling. Best used with conditions.
3
+ class CacheSetting < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :action, :cache_condition, :ttl, :stale_ttl
5
+ ##
6
+ # :attr: service_id
7
+ #
8
+ # The id of the service this belongs to.
9
+
10
+ ##
11
+ # :attr: version
12
+ #
13
+ # The number of the version this belongs to.
14
+
15
+ ##
16
+ # :attr: name
17
+ #
18
+ # The name of the gzip setting
19
+
20
+ ##
21
+ # :attr: action
22
+ #
23
+ # Allows for termination of execution and either cache, pass, or restart
24
+
25
+ ##
26
+ # :attr: ttl
27
+ #
28
+ # Sets the time to live
29
+
30
+ ##
31
+ # :attr: stale_ttl
32
+ #
33
+ # Sets the max time to live for stale (unreachable) objects
34
+
35
+ ##
36
+ # :attr: cache_condition
37
+ #
38
+ # Name of the cache condition used to test whether this settings object
39
+ # should be used.
40
+
41
+ private
42
+ # needs an 's' at the end of the url
43
+ def self.path
44
+ self.to_s.split("::")[-1].underscore + "s"
45
+ end
46
+ end
47
+ end
@@ -62,6 +62,12 @@ class Fastly
62
62
  raise Fastly::Error, resp.message unless resp.success?
63
63
  JSON.parse(resp.body)
64
64
  end
65
+
66
+ def get_stats(path, params={})
67
+ content = get(path, params)
68
+ raise Fastly::Error, content["message"] unless content["status"] == 'success'
69
+ content["data"]
70
+ end
65
71
 
66
72
  def post(path, params={})
67
73
  post_and_put(:post, path, params)
@@ -164,4 +170,4 @@ class CurbFu::Response::Base
164
170
  def [](key)
165
171
  get_fields(key).last
166
172
  end
167
- end
173
+ end
@@ -0,0 +1,40 @@
1
+ class Fastly
2
+ # An endpoint to stream syslogs to
3
+ class Condition < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :priority, :statement, :type
5
+
6
+ ##
7
+ # :attr: service_id
8
+ #
9
+ # The id of the service this belongs to.
10
+
11
+ ##
12
+ # :attr: version
13
+ #
14
+ # The number of the version this belongs to.
15
+
16
+ ##
17
+ # :attr: name
18
+ #
19
+ # The name of the condition
20
+
21
+ ##
22
+ # :attr: statement
23
+ #
24
+ # The statement of the condition, should be a varnish if statement line
25
+
26
+ ##
27
+ # :attr: priority
28
+ #
29
+ # What order to run them in, higher priority gets executed after lower priority
30
+
31
+ ##
32
+ # :attr: type
33
+ #
34
+ # request, cache or response
35
+ #
36
+ # request has req. object only
37
+ # cache has req. and beresp.
38
+ # response has req. and resp.
39
+ end
40
+ end
@@ -1,7 +1,7 @@
1
1
  class Fastly
2
2
  # A logical collection of backends - for example all the asset servers in one data center
3
3
  class Director < BelongsToServiceAndVersion
4
- attr_accessor :service_id, :name, :type, :comment, :retries, :capacity, :quorom
4
+ attr_accessor :service_id, :name, :type, :comment, :retries, :capacity, :quorum
5
5
 
6
6
  ##
7
7
  # :attr: service
@@ -60,4 +60,4 @@ class Fastly
60
60
  return !hash.nil?
61
61
  end
62
62
  end
63
- end
63
+ end
@@ -18,7 +18,7 @@ class Fastly
18
18
  end
19
19
 
20
20
  def list(klass, opts={})
21
- list = client.get(klass.list_path, opts)
21
+ list = client.get(klass.list_path(opts))
22
22
  return [] if list.nil?
23
23
  list.map { |hash| klass.new(hash, self) }
24
24
  end
@@ -48,4 +48,4 @@ class Fastly
48
48
  end
49
49
 
50
50
  end
51
- end
51
+ end
@@ -0,0 +1,4 @@
1
+ class Fastly
2
+ # The current version of the library
3
+ VERSION = "1.1.0"
4
+ end
@@ -0,0 +1,39 @@
1
+ class Fastly
2
+ # customize gzipping content.
3
+ class Gzip < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :extensions, :content_types, :cache_condition
5
+
6
+ ##
7
+ # :attr: service_id
8
+ #
9
+ # The id of the service this belongs to.
10
+
11
+ ##
12
+ # :attr: version
13
+ #
14
+ # The number of the version this belongs to.
15
+
16
+ ##
17
+ # :attr: name
18
+ #
19
+ # The name of the condition
20
+
21
+ ##
22
+ # :attr: extensions
23
+ #
24
+ # File extensions to be gzipped. Seems to want them in a list like
25
+ # "js css html"
26
+
27
+ ##
28
+ # :attr: content_types
29
+ #
30
+ # Content types to be gzipped. Seems to want them in a list like
31
+ # "text/html application/x-javascript"
32
+
33
+ ##
34
+ # :attr" cache_condition
35
+ #
36
+ # Cache condition to be used to determine when to apply this gzip setting
37
+
38
+ end
39
+ end
@@ -0,0 +1,88 @@
1
+ class Fastly
2
+ # customize headers. Best used with conditions.
3
+ class Header < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :action, :cache_condition, :request_condition, :response_condition, :ignore_if_set, :type, :dst, :src, :substitution, :priority, :regexp
5
+
6
+ ##
7
+ # :attr: service_id
8
+ #
9
+ # The id of the service this belongs to.
10
+
11
+ ##
12
+ # :attr: version
13
+ #
14
+ # The number of the version this belongs to.
15
+
16
+ ##
17
+ # :attr: name
18
+ #
19
+ # The name of the header setting
20
+
21
+ ##
22
+ # :attr: action
23
+ #
24
+ # Action to perform on the header. Can be:
25
+ # - 'set' - Sets (or resets) a header
26
+ # - 'append' - Appends to an existing header
27
+ # - 'delete' - Delete a header
28
+ # - 'regex' - Perform a single regex replacement on a header
29
+ # - 'regex_repeat' - Perform a global regex replacement on a header
30
+
31
+ ##
32
+ # :attr: ignore_if_set
33
+ #
34
+ # Don't add the header if it is already set. Only applies to the 'set'
35
+ # action
36
+
37
+ ##
38
+ # :attr: type
39
+ #
40
+ # - 'request' - Performs on the request before lookup occurs
41
+ # - 'fetch' - Performs on the request to the origin server
42
+ # - 'cache' - Performs on the response before it's stored in the cache
43
+ # - 'response' - Performs on the response before delivering to the client
44
+
45
+ ##
46
+ # :attr: dst
47
+ #
48
+ # Header to set
49
+
50
+ ##
51
+ # :attr: src
52
+ #
53
+ # Variable to be used as a source for the header content. Does not apply
54
+ # to the 'delete' action.
55
+
56
+ ##
57
+ # :attr: regexp
58
+ #
59
+ # Regular expression to use with the 'regex' and 'regex_repeat' actions.
60
+
61
+ ##
62
+ # :attr: substitution
63
+ #
64
+ # Value to substitute in place of regular expression. (Only applies to
65
+ # 'regex' and 'regex_repeat'.)
66
+
67
+ ##
68
+ # :attr: priority
69
+ #
70
+ # Lower priorities execute first.
71
+
72
+ ##
73
+ # :attr: request_condition
74
+ #
75
+ # Optional name of a request condition to apply
76
+
77
+ ##
78
+ # :attr: cache_condition
79
+ #
80
+ # Optional name of a cache condition to apply
81
+
82
+ ##
83
+ # :attr: response_condition
84
+ #
85
+ # Optional name of a response condition to apply
86
+
87
+ end
88
+ end
@@ -0,0 +1,90 @@
1
+ class Fastly
2
+ # customize request handing. Best used with conditions
3
+ class RequestSetting < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :force_miss, :force_ssl, :action, :bypass_busy_wait, :max_stale_age, :hash_keys, :xff, :time_support, :geo_headers, :default_host, :request_condition
5
+
6
+ ##
7
+ # :attr: service_id
8
+ #
9
+ # The id of the service this belongs to.
10
+
11
+ ##
12
+ # :attr: version
13
+ #
14
+ # The number of the version this belongs to.
15
+
16
+ ##
17
+ # :attr: name
18
+ #
19
+ # The name of the request setting
20
+
21
+ ##
22
+ # :attr: force_miss
23
+ #
24
+ # Allows you to force a cache miss for the request. Replaces the item
25
+ # in the cache if the content is cacheable
26
+
27
+ ##
28
+ # :attr: force_ssl
29
+ #
30
+ # Force the request to use SSL, redirecting a non-SSL request to SSL.
31
+
32
+ ##
33
+ # :attr: action
34
+ #
35
+ # Allows you to terminate request handling and immediately perform an
36
+ # action. When set it can be lookup or pass (ignore the cache completely)
37
+
38
+ ##
39
+ # :attr: bypass_busy_wait
40
+ #
41
+ # Disable collapsed forwarding, so you don't wait for other objects to
42
+ # origin
43
+
44
+ ##
45
+ # :attr: max_stale_age
46
+ #
47
+ # How old an object is allowed to be to serve stale-if-error or
48
+ # state-while-revalidate
49
+
50
+ ##
51
+ # :attr: hash_keys
52
+ #
53
+ # Comma separated list of varnish request object fields that should be
54
+ # in the hash key
55
+
56
+ ##
57
+ # :attr: xff
58
+ #
59
+ # X-Forwarded-For: should be clear, leave, append, append_all, or
60
+ # overwrite
61
+
62
+ ##
63
+ # :attr: timer_support
64
+ #
65
+ # Injects the X-Timer info into the request for viewing origin fetch
66
+ # durations
67
+
68
+ ##
69
+ # :attr: geo_headers
70
+ #
71
+ # Injects Fastly-Geo-Country, Fastly-Geo-City, and Fastly-Geo-Region
72
+ # into the request headers
73
+
74
+ ##
75
+ # :attr: default_host
76
+ #
77
+ # Sets the host header
78
+
79
+ ##
80
+ # :attr: request_condition
81
+ #
82
+ # Name of condition object used to test whether or not these settings
83
+ # should be used
84
+
85
+ private
86
+ def self.path
87
+ self.to_s.split("::")[-1].underscore + "s"
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,54 @@
1
+ class Fastly
2
+ # Set up a response object. Best used with conditions.
3
+ class ResponseObject < BelongsToServiceAndVersion
4
+ attr_accessor :service_id, :name, :cache_condition, :request_condition, :status, :response, :content, :content_type
5
+
6
+ ##
7
+ # :attr: service_id
8
+ #
9
+ # The id of the service this belongs to.
10
+
11
+ ##
12
+ # :attr: version
13
+ #
14
+ # The number of the version this belongs to.
15
+
16
+ ##
17
+ # :attr: name
18
+ #
19
+ # The name of the response object
20
+
21
+ ##
22
+ # :attr: cache_condition
23
+ #
24
+ # Name of the cache condition used to test whether this response object
25
+ # should be used.
26
+
27
+ ##
28
+ # :attr: request_condition
29
+ #
30
+ # Name of the request condition used to test whether this response object
31
+ # should be used.
32
+
33
+ ##
34
+ # :attr: status
35
+ #
36
+ # The HTTP status code, defaults to 200
37
+
38
+ ##
39
+ # :attr: response
40
+ #
41
+ # The HTTP response, defaults to "Ok"
42
+
43
+ ##
44
+ # :attr: content
45
+ #
46
+ # The content to deliver for the response object, can be empty.
47
+
48
+ ##
49
+ # :attr: content_type
50
+ #
51
+ # The MIME type of the content, can be empty.
52
+
53
+ end
54
+ end