Class: Gcloud::Storage::Bucket::Cors

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

Overview

Bucket Cors

A special-case Array for managing the website CORS rules for a bucket. Accessed via a block argument to Project#create_bucket, #cors, or #update.

Examples:

require "gcloud"

gcloud = Gcloud.new
storage = gcloud.storage
bucket = storage.bucket "my-todo-app"

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:

Instance Method Summary collapse

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 and simple headers.

Examples:

require "gcloud"

gcloud = Gcloud.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

100
101
102
103
104
105
# File 'lib/gcloud/storage/bucket/cors.rb', line 100

def add_rule origin, methods, headers: nil, max_age: nil
  rule = { "origin" => Array(origin), "method" => Array(methods) }
  rule["responseHeader"] = Array(headers) || []
  rule["maxAgeSeconds"]  = max_age || 1800
  push rule
end