globessl 1.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,51 @@
1
+ module GlobeSSL
2
+ class Product < Base
3
+ attribute :errors, Array[String]
4
+ attribute :id, Integer
5
+ attribute :name, String
6
+ attribute :validation, String
7
+ attribute :wildcard, Boolean
8
+ attribute :multi_domain, Boolean
9
+ attribute :min_domains, Integer
10
+ attribute :max_domains, Integer
11
+ attribute :brand, String
12
+
13
+ def fetch
14
+ @errors.clear
15
+
16
+ unless @id
17
+ @errors << "product id is required"
18
+ return false
19
+ end
20
+
21
+ response = Client.get('/products/details', { 'product_id' => @id })
22
+
23
+ case response.code
24
+ when '200'
25
+ json = response.body
26
+ hash = JSON.parse(json)
27
+
28
+ @name = hash["name"]
29
+ @validation = hash["validation"]
30
+ @wildcard = hash["wildcard"] == 1 ? true : false
31
+ @multi_domain = hash["mdc"] == 1 ? true : false
32
+ @min_domains = hash["mdc_min"]
33
+ @max_domains = hash["mdc_max"]
34
+ @brand = hash["brand"]
35
+
36
+ return true
37
+ when '400', '401', '403'
38
+ set_errors(response)
39
+ return false
40
+ else
41
+ return false
42
+ end
43
+ end
44
+
45
+ def set_errors(response)
46
+ json = response.body
47
+ hash = JSON.parse(json)
48
+ @errors << hash["message"]
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,46 @@
1
+ module GlobeSSL
2
+ class Products < Base
3
+ attribute :errors, Array[String]
4
+ attribute :list, Array[Product]
5
+
6
+ def fetch
7
+ @errors.clear
8
+ @list.clear
9
+
10
+ response = Client.get('/products/list')
11
+
12
+ case response.code
13
+ when '200'
14
+ json = response.body
15
+ hash = JSON.parse(json)
16
+
17
+ collection = hash["products"].inject([]) { |memo, element| memo << element.last }
18
+
19
+ collection.each do |product|
20
+ @list << Product.new(
21
+ :id => product["id"],
22
+ :name => product["name"],
23
+ :validation => product["validation"],
24
+ :wildcard => product["wildcard"],
25
+ :mdc => product["mdc"],
26
+ :mdc_min => product["mdc_min"],
27
+ :mdc_max => product["mdc_max"],
28
+ :brand => product["brand"]
29
+ )
30
+ end
31
+ return true
32
+ when '400', '401', '403'
33
+ set_errors(response)
34
+ return false
35
+ else
36
+ return false
37
+ end
38
+ end
39
+
40
+ def set_errors(response)
41
+ json = response.body
42
+ hash = JSON.parse(json)
43
+ @errors << hash["message"]
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,250 @@
1
+ module GlobeSSL
2
+ class SSLCertificate < Base
3
+ attribute :id, Integer
4
+ attribute :order_id, Integer
5
+ attribute :partner_order_id, Integer
6
+ attribute :status, String
7
+ attribute :status_description, String
8
+ attribute :dcv_method, String
9
+ attribute :dcv_email, String
10
+ attribute :product, Product
11
+ attribute :domain, String
12
+ attribute :domains, String
13
+ attribute :total_domains, Integer
14
+ attribute :period, Integer
15
+ attribute :valid_from, Date
16
+ attribute :valid_till, Date
17
+ attribute :csr_code, String
18
+ attribute :crt_code, String
19
+ attribute :ca_code, String
20
+ attribute :webserver_type, Integer
21
+
22
+ def fetch
23
+ @errors.clear
24
+
25
+ unless @id
26
+ @errors << "cerificate id is required"
27
+ return false
28
+ end
29
+
30
+ response = Client.get('/certificates/get', { "id" => @id })
31
+
32
+ case response.code
33
+ when '200'
34
+ json = response.body
35
+ hash = JSON.parse(json)
36
+
37
+ @order_id = hash["order_id"]
38
+ @partner_order_id = hash["partner_order_id"]
39
+ @status = hash["status"]
40
+ @status_description = hash["status_description"]
41
+ @dcv_method = hash["dcv_method"]
42
+ @dcv_email = hash["dcv_email"]
43
+ @domain = hash["domain"]
44
+ @domains = hash["domains"]
45
+ @total_domains = hash["total_domains"]
46
+ @period = hash["period"]
47
+ @valid_from = hash["valid_from"]
48
+ @valid_till = hash["valid_till"]
49
+ @csr_code = hash["csr_code"]
50
+ @crt_code = hash["crt_code"]
51
+ @ca_code = hash["ca_code"]
52
+
53
+ @product = Product.new(:id => hash["product_id"])
54
+ @product.fetch
55
+
56
+ return true
57
+ when '400', '401', '403'
58
+ set_errors(response)
59
+ return false
60
+ else
61
+ return false
62
+ end
63
+ end
64
+
65
+ def reissue
66
+ @errors.clear
67
+ return false unless valid?
68
+
69
+ params = {
70
+ "id" => @id,
71
+ "csr" => @csr_code,
72
+ "dcv_method" => @dcv_method,
73
+ "webserver_type" => @webserver_type
74
+ }
75
+
76
+ if @dcv_method == "email" && @product.validation == "dv"
77
+ email_params = {
78
+ "approver_email" => @approver_email
79
+ }
80
+ params.merge!(email_params)
81
+
82
+ if @product.multi_domain
83
+ multi_domain_params = {
84
+ "dns_names" => @domains,
85
+ "approver_emails" => @approver_emails
86
+ }
87
+ params.merge!(multi_domain_params)
88
+ end
89
+ end
90
+
91
+ request = Client.post('/certificates/reissue', params)
92
+
93
+ case response.code
94
+ when '200'
95
+ return true
96
+ when '400', '401', '403'
97
+ set_errors(response)
98
+ return false
99
+ else
100
+ return false
101
+ end
102
+ end
103
+
104
+ def set_errors(response)
105
+ json = response.body
106
+ hash = JSON.parse(json)
107
+ @errors << hash["message"]
108
+ end
109
+
110
+ def valid?
111
+ validate
112
+ end
113
+
114
+ def validate
115
+ unless @dcv_method
116
+ @errors << "dcv_method is required"
117
+ else
118
+ unless DomainControlValidation::METHODS.include?(@dcv_method)
119
+ @errors << "dcv_method must be one of 'email', 'http' or 'https'"
120
+ end
121
+ end
122
+
123
+ if @product.multi_domain
124
+ unless @dns_names.size > (@product.min_domains - 1)
125
+ @errors << "dns_names are required"
126
+ end
127
+ end
128
+
129
+ if @dcv_method == "email"
130
+ unless @approver_email
131
+ @errors << "approver_email is required"
132
+ end
133
+
134
+ if @product.multi_domain
135
+ unless @approver_emails.size == @dns_names.size
136
+ @errors << "approver_emails are required"
137
+ end
138
+ end
139
+ end
140
+
141
+ unless @product.validation == "dv" # if not domain validation
142
+ unless @admin_org
143
+ @errors << "admin_org is required"
144
+ end
145
+
146
+ unless @admin_address
147
+ @errors << "admin_address is required"
148
+ end
149
+
150
+ unless @admin_city
151
+ @errors << "admin_city is required"
152
+ end
153
+
154
+ unless @admin_country
155
+ @errors << "admin_country is required"
156
+ else
157
+ unless COUNTRY_CODES.has_key?(@admin_country)
158
+ @errors << "admin_country must be one in COUNTRY_CODES"
159
+ end
160
+ end
161
+
162
+ unless @org_name
163
+ @errors << "org_name is required"
164
+ end
165
+
166
+ unless @org_division
167
+ @errors << "org_division is required"
168
+ end
169
+
170
+ unless @org_address
171
+ @errors << "org_address is required"
172
+ end
173
+
174
+ unless @org_city
175
+ @errors << "org_city is required"
176
+ end
177
+
178
+ unless @org_state
179
+ @errors << "org_state is required"
180
+ end
181
+
182
+ unless @org_country
183
+ @errors << "org_country is required"
184
+ else
185
+ unless COUNTRY_CODES.has_key?(@org_country)
186
+ @errors << "org_country must be one in COUNTRY_CODES"
187
+ end
188
+ end
189
+
190
+ unless @org_postalcode
191
+ @errors << "org_postalcode is required"
192
+ end
193
+
194
+ unless @org_phone
195
+ @errors << "org_phone is required"
196
+ end
197
+ end
198
+
199
+ unless @admin_firstname
200
+ @errors << "admin_firstname is required"
201
+ end
202
+
203
+ unless @admin_lastname
204
+ @errors << "admin_lastname is required"
205
+ end
206
+
207
+ unless @admin_email
208
+ @errors << "admin_email is required"
209
+ end
210
+
211
+ unless @admin_jobtitle
212
+ @errors << "admin_jobtitle is required"
213
+ end
214
+
215
+ unless @admin_phone
216
+ @errors << "admin_phone is required"
217
+ end
218
+
219
+ unless @admin_phone
220
+ @errors << "admin_phone is required"
221
+ end
222
+
223
+ unless @csr
224
+ @errors << "certificate signing request (csr) is required"
225
+ end
226
+
227
+ unless @period
228
+ @errors << "period is required"
229
+ else
230
+ unless EXPIRY_PERIODS.include?(@period)
231
+ @errors << "period must be 1, 2 or 3 years or 0 if product is free"
232
+ end
233
+ end
234
+
235
+ unless @webserver_type
236
+ @errors << "webserver_type is required"
237
+ end
238
+
239
+ unless @product
240
+ @errors << "product is required"
241
+ end
242
+
243
+ if @errors.any?
244
+ return false
245
+ else
246
+ return true
247
+ end
248
+ end
249
+ end
250
+ end
@@ -0,0 +1,10 @@
1
+ module GlobeSSL
2
+ module VERSION
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ TINY = 1
6
+ REVISION = nil
7
+ STRING = [MAJOR, MINOR, TINY, REVISION].compact.join('.')
8
+ SUMMARY = "GlobeSSL Ruby Client v#{STRING}"
9
+ end
10
+ end
@@ -0,0 +1,6 @@
1
+ module GlobeSSL
2
+ class Webserver < Base
3
+ attribute :id, Integer
4
+ attribute :name, String
5
+ end
6
+ end
@@ -0,0 +1,32 @@
1
+ module GlobeSSL
2
+ class Webservers < Base
3
+ attribute :errors, Array[String]
4
+ attribute :list, Array[Product]
5
+
6
+ def fetch
7
+ @errors.clear
8
+ @list.clear
9
+
10
+ response = Client.get('/tools/webservers')
11
+
12
+ case response.code
13
+ when '200'
14
+ json = response.body
15
+ hash = JSON.parse(json)
16
+ hash.each_pair { |key, value| @list << Webserver.new(:id => key, :name => value) }
17
+ return true
18
+ when '400', '401', '403'
19
+ set_errors(response)
20
+ return false
21
+ else
22
+ return false
23
+ end
24
+ end
25
+
26
+ def set_errors(response)
27
+ json = response.body
28
+ hash = JSON.parse(json)
29
+ @errors << hash["message"]
30
+ end
31
+ end
32
+ end
metadata ADDED
@@ -0,0 +1,82 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: globessl
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jurgen Jocubeit
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-10-13 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: virtus
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.0.3
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.0.3
27
+ description: A Ruby API client for GlobeSSL CA resellers. This client provides almost
28
+ all of the functionality exposed by v2 of their API.
29
+ email: support@brightcommerce.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".gitignore"
35
+ - Gemfile
36
+ - LICENSE
37
+ - README.md
38
+ - globessl.gemspec
39
+ - lib/globessl.rb
40
+ - lib/globessl/account_balance.rb
41
+ - lib/globessl/account_details.rb
42
+ - lib/globessl/base.rb
43
+ - lib/globessl/certificate_signing_request.rb
44
+ - lib/globessl/client.rb
45
+ - lib/globessl/configuration.rb
46
+ - lib/globessl/country_codes.rb
47
+ - lib/globessl/domain_control_validation.rb
48
+ - lib/globessl/domain_emails.rb
49
+ - lib/globessl/order_ssl_certificate.rb
50
+ - lib/globessl/product.rb
51
+ - lib/globessl/products.rb
52
+ - lib/globessl/ssl_certificate.rb
53
+ - lib/globessl/version.rb
54
+ - lib/globessl/webserver.rb
55
+ - lib/globessl/webservers.rb
56
+ homepage: https://github.com/brightcommerce/globessl
57
+ licenses:
58
+ - MIT
59
+ metadata:
60
+ copyright: Copyright 2015 Brightcommerce, Inc.
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.0.0
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.4.5
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: GlobeSSL Ruby Client v1.0.1
81
+ test_files: []
82
+ has_rdoc: