Class: Google::Cloud::Storage::Bucket::Cors

Inherits:
Array
  • Object
show all
Defined in:
lib/google/cloud/storage/bucket/cors.rb

Overview

# Bucket Cors

A special-case Array for managing the website CORS rules for a bucket. Accessed via #cors.

Examples:

require "google/cloud"

gcloud = Google::Cloud.new
storage = gcloud.storage
bucket = storage.bucket "my-todo-app"

bucket = storage.bucket "my-bucket"
bucket.cors do |c|
  # Remove the last CORS rule from the array
  c.pop
  # Remove all existing rules with the https protocol
  c.delete_if { |r| r.origin.include? "http://example.com" }
  c.add_rule ["http://example.org", "https://example.org"],
             ["GET", "POST", "DELETE"],
             response_headers: ["X-My-Custom-Header"],
             max_age: 3600
end

See Also:

Defined Under Namespace

Classes: Rule

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(rules = []) ⇒ Cors

rules, if any.



54
55
56
57
# File 'lib/google/cloud/storage/bucket/cors.rb', line 54

def initialize rules = []
  super rules
  @original = to_gapi.map(&:to_json)
end

Class Method Details

.from_gapi(gapi_list) ⇒ Object



112
113
114
115
# File 'lib/google/cloud/storage/bucket/cors.rb', line 112

def self.from_gapi gapi_list
  rules = Array(gapi_list).map { |gapi| Rule.from_gapi gapi }
  new rules
end

Instance Method Details

#add_rule(origin, methods, headers: nil, max_age: nil) ⇒ Object

Add a CORS rule to the CORS rules for a bucket. Accepts options for setting preflight response headers. Preflight requests and responses are required if the request method and headers are not both [simple methods](www.w3.org/TR/cors/#simple-method) and [simple headers](www.w3.org/TR/cors/#simple-header).

Examples:

require "google/cloud"

gcloud = Google::Cloud.new
storage = gcloud.storage

bucket = storage.create_bucket "my-bucket" do |c|
  c.add_rule ["http://example.org", "https://example.org"],
             "*",
             response_headers: ["X-My-Custom-Header"],
             max_age: 300
end

Parameters:

  • origin (String, Array<String>)

    The [origin](tools.ietf.org/html/rfc6454) or origins permitted for cross origin resource sharing with the bucket. Note: “*” is permitted in the list of origins, and means “any Origin”.

  • methods (String, Array<String>)

    The list of HTTP methods permitted in cross origin resource sharing with the bucket. (GET, OPTIONS, POST, etc) Note: “*” is permitted in the list of methods, and means “any method”.

  • headers (String, Array<String>) (defaults to: nil)

    The list of header field names to send in the Access-Control-Allow-Headers header in the preflight response. Indicates the custom request headers that may be used in the actual request.

  • max_age (Integer) (defaults to: nil)

    The value to send in the Access-Control-Max-Age header in the preflight response. Indicates how many seconds the results of a preflight request can be cached in a preflight result cache. The default value is ‘1800` (30 minutes.)



102
103
104
# File 'lib/google/cloud/storage/bucket/cors.rb', line 102

def add_rule origin, methods, headers: nil, max_age: nil
  push Rule.new(origin, methods, headers: headers, max_age: max_age)
end

#changed?Boolean

Returns:

  • (Boolean)


60
61
62
# File 'lib/google/cloud/storage/bucket/cors.rb', line 60

def changed?
  @original != to_gapi.map(&:to_json)
end

#freezeObject



118
119
120
121
# File 'lib/google/cloud/storage/bucket/cors.rb', line 118

def freeze
  each(&:freeze)
  super
end

#to_gapiObject



107
108
109
# File 'lib/google/cloud/storage/bucket/cors.rb', line 107

def to_gapi
  map(&:to_gapi)
end