acmesmith-google-cloud-storage 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d8b3ee45e88b95d60bdd915a101a5117b283f2d
|
4
|
+
data.tar.gz: 1895c236bc86563184792b343329ef4b0351720e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a58f61d4b008abbac7308d685d4a9540e4a4e35601b30d3c9a97894872c0f32af0ceb2bd078d58b39c160fdea3db54f3abdd50c63719fa8e0a67d38c9f06b68
|
7
|
+
data.tar.gz: 61be0ee2f6b92cf7377c812be2a9ef048eff118e13d577cd9e436496989a7f93e04e256534a01e516dab0c65c8b69c320e0ebcdc3faf361cbae0ce3072744504
|
@@ -11,7 +11,7 @@ module Acmesmith
|
|
11
11
|
class GoogleCloudStorage < Base
|
12
12
|
attr_reader :bucket, :prefix, :compute_engine_service_account, :private_key_json_file
|
13
13
|
|
14
|
-
def initialize(bucket:, prefix
|
14
|
+
def initialize(bucket:, prefix:nil, compute_engine_service_account:nil, private_key_json_file:nil)
|
15
15
|
@bucket = bucket
|
16
16
|
@prefix = prefix
|
17
17
|
if @prefix && !@prefix.end_with?('/')
|
@@ -39,9 +39,8 @@ module Acmesmith
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def get_account_key
|
42
|
-
|
43
|
-
|
44
|
-
AccountKey.new media
|
42
|
+
@api.get_object(bucket, account_key_key)
|
43
|
+
AccountKey.new @api.get_object(bucket, account_key_key, download_dest: StringIO.new).string
|
45
44
|
rescue Google::Apis::ClientError => e
|
46
45
|
if e.status_code == 404
|
47
46
|
raise NotExist.new("Account key doesn't exist")
|
@@ -97,9 +96,13 @@ module Acmesmith
|
|
97
96
|
def get_certificate(common_name, version: 'current')
|
98
97
|
version = certificate_current(common_name) if version == 'current'
|
99
98
|
|
100
|
-
|
101
|
-
|
102
|
-
|
99
|
+
get = ->(key) do
|
100
|
+
@api.get_object(bucket, key, download_dest: StringIO.new).string
|
101
|
+
end
|
102
|
+
|
103
|
+
certificate = get.call(certificate_key(common_name, version))
|
104
|
+
chain = get.call(chain_key(common_name, version))
|
105
|
+
private_key = get.call(private_key_key(common_name, version))
|
103
106
|
Certificate.new(certificate, chain, private_key)
|
104
107
|
rescue Google::Apis::ClientError => e
|
105
108
|
if e.status_code == 404
|
@@ -111,24 +114,34 @@ module Acmesmith
|
|
111
114
|
|
112
115
|
def list_certificates
|
113
116
|
certs_prefix = "#{prefix}certs/"
|
114
|
-
|
115
|
-
|
117
|
+
certs_prefix_regexp = /\A#{Regexp.escape(certs_prefix)}/
|
118
|
+
list = []
|
119
|
+
page_token = nil
|
120
|
+
loop do
|
121
|
+
objects = @api.list_objects(bucket, prefix: certs_prefix, delimiter: '/', page_token: page_token)
|
122
|
+
if objects.prefixes
|
123
|
+
list.concat objects.prefixes.map{|_| _.sub(certs_prefix_regexp, '').sub(/\/.+\z/,'').sub(/\/\z/, '')}
|
124
|
+
end
|
125
|
+
break if objects.next_page_token.nil? || objects.next_page_token == page_token
|
126
|
+
page_token = objects.next_page_token
|
116
127
|
end
|
117
|
-
|
118
|
-
regexp = /\A#{Regexp.escape(certs_prefix)}/
|
119
|
-
obj.name.sub(regexp, '').sub(/\/.+\z/, '').sub(/\/\z/, '')
|
120
|
-
}.uniq
|
128
|
+
list.uniq
|
121
129
|
end
|
122
130
|
|
123
131
|
def list_certificate_versions(common_name)
|
124
132
|
cert_ver_prefix = "#{prefix}certs/#{common_name}/"
|
125
|
-
|
126
|
-
|
133
|
+
cert_ver_prefix_regexp = /\A#{Regexp.escape(cert_ver_prefix)}/
|
134
|
+
list = []
|
135
|
+
page_token = nil
|
136
|
+
loop do
|
137
|
+
objects = @api.list_objects(bucket, prefix: cert_ver_prefix, delimiter: '/', page_token: page_token)
|
138
|
+
if objects.prefixes
|
139
|
+
list.concat objects.prefixes.map{|_| _.sub(cert_ver_prefix_regexp, '').sub(/\/.+\z/, '').sub(/\/\z/, '') }
|
140
|
+
end
|
141
|
+
break if objects.next_page_token.nil? || objects.next_page_token == page_token
|
142
|
+
page_token = objects.next_page_token
|
127
143
|
end
|
128
|
-
|
129
|
-
regexp = /\A#{Regexp.escape(cert_ver_prefix)}/
|
130
|
-
obj.name.sub(regexp, '').sub(/\/.+\z/, '').sub(/\/\z/, '')
|
131
|
-
}.uniq.reject { |_| _ == 'current' }
|
144
|
+
list.uniq.reject{ |_| _ == 'current' }
|
132
145
|
end
|
133
146
|
|
134
147
|
def get_current_certificate_version(common_name)
|
@@ -150,8 +163,8 @@ module Acmesmith
|
|
150
163
|
end
|
151
164
|
|
152
165
|
def certificate_current(cn)
|
153
|
-
|
154
|
-
|
166
|
+
@api.get_object(bucket, certificate_current_key(cn))
|
167
|
+
@api.get_object(bucket, certificate_current_key(cn), download_dest: StringIO.new).string.chomp
|
155
168
|
rescue Google::Apis::ClientError => e
|
156
169
|
if e.status_code == 404
|
157
170
|
raise NotExist.new("Certificate for #{cn.inspect} of current version doesn't exist")
|
@@ -176,10 +189,6 @@ module Acmesmith
|
|
176
189
|
"#{certificate_base_key(cn, ver)}/fullchain.pem"
|
177
190
|
end
|
178
191
|
|
179
|
-
def get_media(media_link)
|
180
|
-
open(media_link, {'Authorization' => "Bearer #{@api.authorization.access_token}"}).read
|
181
|
-
end
|
182
|
-
|
183
192
|
def load_json_key(filepath)
|
184
193
|
obj = JSON.parse(File.read(filepath))
|
185
194
|
{
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acmesmith-google-cloud-storage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- YAMADA Tsuyoshi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: acmesmith
|