s3_website_revived 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.travis.yml +5 -0
  4. data/Gemfile +3 -0
  5. data/LICENSE +42 -0
  6. data/README.md +591 -0
  7. data/Rakefile +2 -0
  8. data/additional-docs/debugging.md +21 -0
  9. data/additional-docs/development.md +29 -0
  10. data/additional-docs/example-configurations.md +113 -0
  11. data/additional-docs/running-from-ec2-with-dropbox.md +6 -0
  12. data/additional-docs/setting-up-aws-credentials.md +52 -0
  13. data/assembly.sbt +3 -0
  14. data/bin/s3_website +285 -0
  15. data/build.sbt +48 -0
  16. data/changelog.md +596 -0
  17. data/lib/s3_website/version.rb +3 -0
  18. data/lib/s3_website.rb +7 -0
  19. data/project/assembly.sbt +1 -0
  20. data/project/build.properties +1 -0
  21. data/project/plugins.sbt +1 -0
  22. data/release +41 -0
  23. data/resources/configuration_file_template.yml +67 -0
  24. data/resources/s3_website.jar.md5 +1 -0
  25. data/s3_website-4.0.0.jar +0 -0
  26. data/s3_website.gemspec +34 -0
  27. data/sbt +3 -0
  28. data/src/main/resources/log4j.properties +6 -0
  29. data/src/main/scala/s3/website/ByteHelper.scala +18 -0
  30. data/src/main/scala/s3/website/CloudFront.scala +144 -0
  31. data/src/main/scala/s3/website/Logger.scala +67 -0
  32. data/src/main/scala/s3/website/Push.scala +246 -0
  33. data/src/main/scala/s3/website/Ruby.scala +14 -0
  34. data/src/main/scala/s3/website/S3.scala +239 -0
  35. data/src/main/scala/s3/website/UploadHelper.scala +76 -0
  36. data/src/main/scala/s3/website/model/Config.scala +249 -0
  37. data/src/main/scala/s3/website/model/S3Endpoint.scala +35 -0
  38. data/src/main/scala/s3/website/model/Site.scala +159 -0
  39. data/src/main/scala/s3/website/model/push.scala +225 -0
  40. data/src/main/scala/s3/website/model/ssg.scala +30 -0
  41. data/src/main/scala/s3/website/package.scala +182 -0
  42. data/src/test/scala/s3/website/AwsSdkSpec.scala +15 -0
  43. data/src/test/scala/s3/website/ConfigSpec.scala +150 -0
  44. data/src/test/scala/s3/website/S3EndpointSpec.scala +15 -0
  45. data/src/test/scala/s3/website/S3WebsiteSpec.scala +1480 -0
  46. data/src/test/scala/s3/website/UnitTest.scala +11 -0
  47. data/vagrant/Vagrantfile +25 -0
  48. 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
+