s3_website_revived 4.0.0
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.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/LICENSE +42 -0
- data/README.md +591 -0
- data/Rakefile +2 -0
- data/additional-docs/debugging.md +21 -0
- data/additional-docs/development.md +29 -0
- data/additional-docs/example-configurations.md +113 -0
- data/additional-docs/running-from-ec2-with-dropbox.md +6 -0
- data/additional-docs/setting-up-aws-credentials.md +52 -0
- data/assembly.sbt +3 -0
- data/bin/s3_website +285 -0
- data/build.sbt +48 -0
- data/changelog.md +596 -0
- data/lib/s3_website/version.rb +3 -0
- data/lib/s3_website.rb +7 -0
- data/project/assembly.sbt +1 -0
- data/project/build.properties +1 -0
- data/project/plugins.sbt +1 -0
- data/release +41 -0
- data/resources/configuration_file_template.yml +67 -0
- data/resources/s3_website.jar.md5 +1 -0
- data/s3_website-4.0.0.jar +0 -0
- data/s3_website.gemspec +34 -0
- data/sbt +3 -0
- data/src/main/resources/log4j.properties +6 -0
- data/src/main/scala/s3/website/ByteHelper.scala +18 -0
- data/src/main/scala/s3/website/CloudFront.scala +144 -0
- data/src/main/scala/s3/website/Logger.scala +67 -0
- data/src/main/scala/s3/website/Push.scala +246 -0
- data/src/main/scala/s3/website/Ruby.scala +14 -0
- data/src/main/scala/s3/website/S3.scala +239 -0
- data/src/main/scala/s3/website/UploadHelper.scala +76 -0
- data/src/main/scala/s3/website/model/Config.scala +249 -0
- data/src/main/scala/s3/website/model/S3Endpoint.scala +35 -0
- data/src/main/scala/s3/website/model/Site.scala +159 -0
- data/src/main/scala/s3/website/model/push.scala +225 -0
- data/src/main/scala/s3/website/model/ssg.scala +30 -0
- data/src/main/scala/s3/website/package.scala +182 -0
- data/src/test/scala/s3/website/AwsSdkSpec.scala +15 -0
- data/src/test/scala/s3/website/ConfigSpec.scala +150 -0
- data/src/test/scala/s3/website/S3EndpointSpec.scala +15 -0
- data/src/test/scala/s3/website/S3WebsiteSpec.scala +1480 -0
- data/src/test/scala/s3/website/UnitTest.scala +11 -0
- data/vagrant/Vagrantfile +25 -0
- metadata +195 -0
@@ -0,0 +1,150 @@
|
|
1
|
+
package s3.website
|
2
|
+
import com.amazonaws.auth.profile.ProfileCredentialsProvider
|
3
|
+
import com.amazonaws.auth.{BasicAWSCredentials, BasicSessionCredentials, DefaultAWSCredentialsProviderChain, STSAssumeRoleSessionCredentialsProvider}
|
4
|
+
import org.specs2.mutable.Specification
|
5
|
+
import s3.website.model.{Config, S3Endpoint}
|
6
|
+
|
7
|
+
class ConfigSpec extends Specification {
|
8
|
+
|
9
|
+
"Config#awsCredentials" should {
|
10
|
+
s"return ${classOf[BasicSessionCredentials]} when s3_id, s3_secret and session_token are defined in the config" in {
|
11
|
+
Config.awsCredentials(Config(
|
12
|
+
s3_id = Some("test"),
|
13
|
+
s3_secret = Some("secret"),
|
14
|
+
session_token = Some("Token"),
|
15
|
+
profile = None,
|
16
|
+
profile_assume_role_arn = None,
|
17
|
+
s3_bucket = "foo",
|
18
|
+
s3_endpoint = S3Endpoint.defaultEndpoint,
|
19
|
+
site = None,
|
20
|
+
max_age = None,
|
21
|
+
cache_control = None,
|
22
|
+
gzip = None,
|
23
|
+
gzip_zopfli = None,
|
24
|
+
s3_key_prefix = None,
|
25
|
+
ignore_on_server = None,
|
26
|
+
exclude_from_upload = None,
|
27
|
+
s3_reduced_redundancy = None,
|
28
|
+
cloudfront_distribution_id = None,
|
29
|
+
cloudfront_invalidate_root = None,
|
30
|
+
content_type = None,
|
31
|
+
redirects = None,
|
32
|
+
concurrency_level = 1,
|
33
|
+
cloudfront_wildcard_invalidation = None,
|
34
|
+
treat_zero_length_objects_as_redirects = None
|
35
|
+
)).getCredentials must beAnInstanceOf[BasicSessionCredentials]
|
36
|
+
}
|
37
|
+
|
38
|
+
s"return ${classOf[BasicAWSCredentials]} when s3_id and s3_secret are defined in the config" in {
|
39
|
+
Config.awsCredentials(Config(
|
40
|
+
s3_id = Some("test"),
|
41
|
+
s3_secret = Some("secret"),
|
42
|
+
session_token = None,
|
43
|
+
profile = None,
|
44
|
+
profile_assume_role_arn = None,
|
45
|
+
s3_bucket = "foo",
|
46
|
+
s3_endpoint = S3Endpoint.defaultEndpoint,
|
47
|
+
site = None,
|
48
|
+
max_age = None,
|
49
|
+
cache_control = None,
|
50
|
+
gzip = None,
|
51
|
+
gzip_zopfli = None,
|
52
|
+
s3_key_prefix = None,
|
53
|
+
ignore_on_server = None,
|
54
|
+
exclude_from_upload = None,
|
55
|
+
s3_reduced_redundancy = None,
|
56
|
+
cloudfront_distribution_id = None,
|
57
|
+
cloudfront_invalidate_root = None,
|
58
|
+
content_type = None,
|
59
|
+
redirects = None,
|
60
|
+
concurrency_level = 1,
|
61
|
+
cloudfront_wildcard_invalidation = None,
|
62
|
+
treat_zero_length_objects_as_redirects = None
|
63
|
+
)).getCredentials must beAnInstanceOf[BasicAWSCredentials]
|
64
|
+
}
|
65
|
+
|
66
|
+
s"return ${classOf[STSAssumeRoleSessionCredentialsProvider]} when profile and profile_assume_role_arn are defined in the config" in {
|
67
|
+
Config.awsCredentials(Config(
|
68
|
+
s3_id = None,
|
69
|
+
s3_secret = None,
|
70
|
+
session_token = None,
|
71
|
+
profile = Some("profile_name"),
|
72
|
+
profile_assume_role_arn = Some("arn:aws:iam::account-id:role/role-name"),
|
73
|
+
s3_bucket = "foo",
|
74
|
+
s3_endpoint = S3Endpoint.defaultEndpoint,
|
75
|
+
site = None,
|
76
|
+
max_age = None,
|
77
|
+
cache_control = None,
|
78
|
+
gzip = None,
|
79
|
+
gzip_zopfli = None,
|
80
|
+
s3_key_prefix = None,
|
81
|
+
ignore_on_server = None,
|
82
|
+
exclude_from_upload = None,
|
83
|
+
s3_reduced_redundancy = None,
|
84
|
+
cloudfront_distribution_id = None,
|
85
|
+
cloudfront_invalidate_root = None,
|
86
|
+
content_type = None,
|
87
|
+
redirects = None,
|
88
|
+
concurrency_level = 1,
|
89
|
+
cloudfront_wildcard_invalidation = None,
|
90
|
+
treat_zero_length_objects_as_redirects = None
|
91
|
+
)) must beAnInstanceOf[STSAssumeRoleSessionCredentialsProvider]
|
92
|
+
}
|
93
|
+
|
94
|
+
s"return ${classOf[ProfileCredentialsProvider]} when profile is defined in the config" in {
|
95
|
+
Config.awsCredentials(Config(
|
96
|
+
s3_id = None,
|
97
|
+
s3_secret = None,
|
98
|
+
session_token = None,
|
99
|
+
profile = Some("profile_name"),
|
100
|
+
profile_assume_role_arn = None,
|
101
|
+
s3_bucket = "foo",
|
102
|
+
s3_endpoint = S3Endpoint.defaultEndpoint,
|
103
|
+
site = None,
|
104
|
+
max_age = None,
|
105
|
+
cache_control = None,
|
106
|
+
gzip = None,
|
107
|
+
gzip_zopfli = None,
|
108
|
+
s3_key_prefix = None,
|
109
|
+
ignore_on_server = None,
|
110
|
+
exclude_from_upload = None,
|
111
|
+
s3_reduced_redundancy = None,
|
112
|
+
cloudfront_distribution_id = None,
|
113
|
+
cloudfront_invalidate_root = None,
|
114
|
+
content_type = None,
|
115
|
+
redirects = None,
|
116
|
+
concurrency_level = 1,
|
117
|
+
cloudfront_wildcard_invalidation = None,
|
118
|
+
treat_zero_length_objects_as_redirects = None
|
119
|
+
)) must beAnInstanceOf[ProfileCredentialsProvider]
|
120
|
+
}
|
121
|
+
|
122
|
+
s"return ${classOf[DefaultAWSCredentialsProviderChain]} when s3_id, s3_secret, profile and profile_assume_role_arn are not defined in the config" in {
|
123
|
+
Config.awsCredentials(Config(
|
124
|
+
s3_id = None,
|
125
|
+
s3_secret = None,
|
126
|
+
session_token = None,
|
127
|
+
profile = None,
|
128
|
+
profile_assume_role_arn = None,
|
129
|
+
s3_bucket = "foo",
|
130
|
+
s3_endpoint = S3Endpoint.defaultEndpoint,
|
131
|
+
site = None,
|
132
|
+
max_age = None,
|
133
|
+
cache_control = None,
|
134
|
+
gzip = None,
|
135
|
+
gzip_zopfli = None,
|
136
|
+
s3_key_prefix = None,
|
137
|
+
ignore_on_server = None,
|
138
|
+
exclude_from_upload = None,
|
139
|
+
s3_reduced_redundancy = None,
|
140
|
+
cloudfront_distribution_id = None,
|
141
|
+
cloudfront_invalidate_root = None,
|
142
|
+
content_type = None,
|
143
|
+
redirects = None,
|
144
|
+
concurrency_level = 1,
|
145
|
+
cloudfront_wildcard_invalidation = None,
|
146
|
+
treat_zero_length_objects_as_redirects = None
|
147
|
+
)) must beAnInstanceOf[DefaultAWSCredentialsProviderChain]
|
148
|
+
}
|
149
|
+
}
|
150
|
+
}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
package s3.website
|
2
|
+
|
3
|
+
import org.specs2.mutable.Specification
|
4
|
+
import s3.website.model.S3Endpoint
|
5
|
+
|
6
|
+
class S3EndpointSpec extends Specification {
|
7
|
+
|
8
|
+
"S3Endpoint" should {
|
9
|
+
"map EU to eu-west-1" in {
|
10
|
+
S3Endpoint.fromString("EU").s3WebsiteHostname must equalTo("s3-website-eu-west-1.amazonaws.com")
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
}
|
15
|
+
|