corset 0.0.1
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.
- data/.gitignore +1 -0
- data/Gemfile +10 -0
- data/README.md +28 -0
- data/Rakefile +10 -0
- data/bin/corset +14 -0
- data/corset.gemspec +20 -0
- data/lib/corset.rb +1 -0
- data/lib/corset/cli.rb +37 -0
- data/lib/corset/version.rb +3 -0
- metadata +87 -0
data/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Gemfile.lock
|
data/Gemfile
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
source :rubygems
|
|
2
|
+
|
|
3
|
+
# Specify your gem's dependencies in corset.gemspec
|
|
4
|
+
gemspec
|
|
5
|
+
|
|
6
|
+
# `put_bucket_cors` hasn't made it into a release yet. This should
|
|
7
|
+
# be removed when fog 1.8.1 is released.
|
|
8
|
+
#
|
|
9
|
+
# See https://github.com/fog/fog/pull/1343
|
|
10
|
+
gem 'fog', github: 'fog/fog'
|
data/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
## Corset
|
|
2
|
+
|
|
3
|
+
A simple ruby gem to set the right CORS configuration for an S3 bucket.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
$ gem install corset
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Usage
|
|
12
|
+
|
|
13
|
+
Create a `.env` file with:
|
|
14
|
+
|
|
15
|
+
* `AWS_ACCESS_KEY_ID`
|
|
16
|
+
* `AWS_SECRET_ACCESS_KEY`
|
|
17
|
+
* `FOG_DIRECTORY` (the S3 bucket name)
|
|
18
|
+
* `AWS_CORS_ALLOWED_ORIGIN` (the allowed origin)
|
|
19
|
+
|
|
20
|
+
Note that you can't use `*` as the allowed origin if you plan on distributing
|
|
21
|
+
the bucket via Cloudfront. Currently Cloudfront caches the origin of the first
|
|
22
|
+
request.
|
|
23
|
+
|
|
24
|
+
Then run:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
$ export $(cat .env) && corset set
|
|
28
|
+
```
|
data/Rakefile
ADDED
data/bin/corset
ADDED
data/corset.gemspec
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
require File.expand_path('../lib/corset/version', __FILE__)
|
|
3
|
+
|
|
4
|
+
Gem::Specification.new do |gem|
|
|
5
|
+
gem.authors = ["Maximilian Schoening, Eric Holmes"]
|
|
6
|
+
gem.email = ["mschoening@me.com, eric@ejholmes.net"]
|
|
7
|
+
gem.description = %q{A ruby gem to set the right CORS configuration for an S3 bucket.}
|
|
8
|
+
gem.summary = %q{A ruby gem to set the right CORS configuration for an S3 bucket.}
|
|
9
|
+
gem.homepage = "https://github.com/max/corset"
|
|
10
|
+
|
|
11
|
+
gem.files = `git ls-files`.split($\)
|
|
12
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
13
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
14
|
+
gem.name = "corset"
|
|
15
|
+
gem.require_paths = ["lib"]
|
|
16
|
+
gem.version = Corset::VERSION
|
|
17
|
+
|
|
18
|
+
gem.add_dependency 'fog'
|
|
19
|
+
gem.add_dependency 'thor'
|
|
20
|
+
end
|
data/lib/corset.rb
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
require 'fog'
|
data/lib/corset/cli.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'corset'
|
|
2
|
+
require 'thor'
|
|
3
|
+
|
|
4
|
+
module Corset
|
|
5
|
+
class CLI < Thor
|
|
6
|
+
|
|
7
|
+
desc 'set', 'Set the CORS configuration on the bucket.'
|
|
8
|
+
|
|
9
|
+
method_option :key, aliases: '-k', desc: 'AWS access key', default: ENV['AWS_ACCESS_KEY_ID'], required: true
|
|
10
|
+
method_option :secret, aliases: '-s', desc: 'AWS access secret', default: ENV['AWS_SECRET_ACCESS_KEY'], required: true
|
|
11
|
+
method_option :bucket, aliases: '-b', desc: 'AWS S3 bucket to use.', default: ENV['FOG_DIRECTORY'], required: true
|
|
12
|
+
method_option :origin, aliases: '-o', desc: 'Allowed origin.', default: ENV['AWS_CORS_ALLOWED_ORIGIN'] || '*', required: true
|
|
13
|
+
|
|
14
|
+
def set
|
|
15
|
+
storage.put_bucket_cors(options[:bucket], cors)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
private
|
|
19
|
+
|
|
20
|
+
def storage
|
|
21
|
+
@storage ||= Fog::Storage.new(
|
|
22
|
+
provider: 'aws',
|
|
23
|
+
aws_access_key_id: options[:key],
|
|
24
|
+
aws_secret_access_key: options[:secret]
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def cors
|
|
29
|
+
{ 'CORSConfiguration' => [{
|
|
30
|
+
'AllowedHeader' => ['Content-*', 'Host'],
|
|
31
|
+
'AllowedMethod' => 'GET',
|
|
32
|
+
'AllowedOrigin' => options[:origin],
|
|
33
|
+
'MaxAgeSeconds' => '3000' }] }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: corset
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Maximilian Schoening, Eric Holmes
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-01-07 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: fog
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: thor
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :runtime
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
description: A ruby gem to set the right CORS configuration for an S3 bucket.
|
|
47
|
+
email:
|
|
48
|
+
- mschoening@me.com, eric@ejholmes.net
|
|
49
|
+
executables:
|
|
50
|
+
- corset
|
|
51
|
+
extensions: []
|
|
52
|
+
extra_rdoc_files: []
|
|
53
|
+
files:
|
|
54
|
+
- .gitignore
|
|
55
|
+
- Gemfile
|
|
56
|
+
- README.md
|
|
57
|
+
- Rakefile
|
|
58
|
+
- bin/corset
|
|
59
|
+
- corset.gemspec
|
|
60
|
+
- lib/corset.rb
|
|
61
|
+
- lib/corset/cli.rb
|
|
62
|
+
- lib/corset/version.rb
|
|
63
|
+
homepage: https://github.com/max/corset
|
|
64
|
+
licenses: []
|
|
65
|
+
post_install_message:
|
|
66
|
+
rdoc_options: []
|
|
67
|
+
require_paths:
|
|
68
|
+
- lib
|
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
70
|
+
none: false
|
|
71
|
+
requirements:
|
|
72
|
+
- - ! '>='
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
|
+
none: false
|
|
77
|
+
requirements:
|
|
78
|
+
- - ! '>='
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '0'
|
|
81
|
+
requirements: []
|
|
82
|
+
rubyforge_project:
|
|
83
|
+
rubygems_version: 1.8.23
|
|
84
|
+
signing_key:
|
|
85
|
+
specification_version: 3
|
|
86
|
+
summary: A ruby gem to set the right CORS configuration for an S3 bucket.
|
|
87
|
+
test_files: []
|