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.
@@ -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: []