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.
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
+