corset 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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'
@@ -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
+ ```
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ task :default => [:spec]
5
+
6
+ require 'rspec/core/rake_task'
7
+ desc "Run specs"
8
+ RSpec::Core::RakeTask.new do |t|
9
+ t.pattern = 'spec/**/*_spec.rb'
10
+ end
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'bundler/setup'
4
+ require 'corset'
5
+
6
+ begin
7
+ require 'corset/cli'
8
+ Corset::CLI.start
9
+ rescue Interrupt => e
10
+ puts "\nQuitting..."
11
+ exit 1
12
+ rescue SystemExit => e
13
+ exit e.status
14
+ end
@@ -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
@@ -0,0 +1 @@
1
+ require 'fog'
@@ -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
@@ -0,0 +1,3 @@
1
+ module Corset
2
+ VERSION = '0.0.1'
3
+ 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: []