internetbs 1.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 (47) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +3 -0
  3. data/Gemfile +5 -0
  4. data/LICENSE +19 -0
  5. data/README.md +758 -0
  6. data/internetbs.gemspec +18 -0
  7. data/lib/internetbs.rb +64 -0
  8. data/lib/internetbs/account_balance.rb +8 -0
  9. data/lib/internetbs/account_balances.rb +40 -0
  10. data/lib/internetbs/account_domain.rb +11 -0
  11. data/lib/internetbs/account_domains.rb +100 -0
  12. data/lib/internetbs/account_price.rb +19 -0
  13. data/lib/internetbs/account_prices.rb +70 -0
  14. data/lib/internetbs/account_transaction.rb +9 -0
  15. data/lib/internetbs/account_transactions.rb +54 -0
  16. data/lib/internetbs/additional_attributes.rb +41 -0
  17. data/lib/internetbs/base.rb +33 -0
  18. data/lib/internetbs/client.rb +49 -0
  19. data/lib/internetbs/configuration.rb +61 -0
  20. data/lib/internetbs/country_codes.rb +288 -0
  21. data/lib/internetbs/domain_availability.rb +37 -0
  22. data/lib/internetbs/domain_contact.rb +109 -0
  23. data/lib/internetbs/domain_host.rb +46 -0
  24. data/lib/internetbs/domain_hosts.rb +101 -0
  25. data/lib/internetbs/domain_information.rb +128 -0
  26. data/lib/internetbs/domain_push.rb +33 -0
  27. data/lib/internetbs/domain_record.rb +31 -0
  28. data/lib/internetbs/domain_records.rb +172 -0
  29. data/lib/internetbs/domain_total.rb +8 -0
  30. data/lib/internetbs/dot_asia_attributes.rb +56 -0
  31. data/lib/internetbs/dot_de_attributes.rb +64 -0
  32. data/lib/internetbs/dot_eu_attributes.rb +20 -0
  33. data/lib/internetbs/dot_fr_attributes.rb +138 -0
  34. data/lib/internetbs/dot_it_attributes.rb +182 -0
  35. data/lib/internetbs/dot_nl_attributes.rb +47 -0
  36. data/lib/internetbs/dot_uk_attributes.rb +60 -0
  37. data/lib/internetbs/dot_us_attributes.rb +54 -0
  38. data/lib/internetbs/error.rb +38 -0
  39. data/lib/internetbs/language_codes.rb +27 -0
  40. data/lib/internetbs/order_domain.rb +78 -0
  41. data/lib/internetbs/private_whois.rb +81 -0
  42. data/lib/internetbs/registrar_lock.rb +73 -0
  43. data/lib/internetbs/registry_status.rb +39 -0
  44. data/lib/internetbs/renew_domain.rb +43 -0
  45. data/lib/internetbs/update_domain.rb +71 -0
  46. data/lib/internetbs/version.rb +10 -0
  47. metadata +104 -0
@@ -0,0 +1,81 @@
1
+ module InternetBS
2
+ class PrivateWhois < Base
3
+ attribute :domain, String
4
+ attribute :privacy_status, String # FULL or PARTIAL or DISABLED or FAILURE
5
+
6
+ def disable
7
+ set_private_whois_status :disable
8
+ end
9
+
10
+ def enable
11
+ set_private_whois_status :enable
12
+ end
13
+
14
+ def fetch
15
+ ensure_attribute_has_value :domain
16
+ return false if @errors.any?
17
+
18
+ params = {'domain' => @domain}
19
+ response = Client.get('/domain/privatewhois/status', params)
20
+ code = response.code rescue ""
21
+
22
+ case code
23
+ when '200'
24
+ hash = JSON.parse(response.body)
25
+
26
+ @status = hash['status']
27
+ @transaction_id = hash['transactid']
28
+
29
+ if @status == 'SUCCESS'
30
+ @privacy_status = hash['privatewhoisstatus']
31
+ else
32
+ set_errors(response)
33
+ return false
34
+ end
35
+
36
+ return true
37
+ else
38
+ set_errors(response)
39
+ return false
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ # Expects an action of either :enable or :disable.
46
+ def set_private_whois_status(action)
47
+ ensure_attribute_has_value :domain
48
+ return false if @errors.any?
49
+
50
+ params = {'domain' => @domain}
51
+
52
+ if action == 'enable' && @privacy_status
53
+ optional_params = {'type' => @privacy_status}
54
+ params.merge!(optional_params)
55
+ end
56
+
57
+ response = Client.post("/domain/privatewhois/#{action.to_s}", params)
58
+ code = response.code rescue ""
59
+
60
+ case code
61
+ when '200'
62
+ hash = JSON.parse(response.body)
63
+
64
+ @status = hash['status']
65
+ @transaction_id = hash['transactid']
66
+
67
+ if @status == 'SUCCESS'
68
+ @privacy_status = hash['privatewhoisstatus']
69
+ else
70
+ set_errors(response)
71
+ return false
72
+ end
73
+
74
+ return true
75
+ else
76
+ set_errors(response)
77
+ return false
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,73 @@
1
+ module InternetBS
2
+ class RegistrarLock < Base
3
+ attribute :domain, String
4
+ attribute :lock_status, String # LOCKED or UNLOCKED
5
+
6
+ def disable
7
+ set_registrar_lock_status :disable
8
+ end
9
+
10
+ def enable
11
+ set_registrar_lock_status :enable
12
+ end
13
+
14
+ def fetch
15
+ ensure_attribute_has_value :domain
16
+ return false if @errors.any?
17
+
18
+ params = {'domain' => @domain}
19
+ response = Client.get('/domain/registrarlock/status', params)
20
+ code = response.code rescue ""
21
+
22
+ case code
23
+ when '200'
24
+ hash = JSON.parse(response.body)
25
+
26
+ @status = hash['status']
27
+ @transaction_id = hash['transactid']
28
+
29
+ if @status == 'SUCCESS'
30
+ @lock_status = hash['registrar_lock_status']
31
+ else
32
+ set_errors(response)
33
+ return false
34
+ end
35
+
36
+ return true
37
+ else
38
+ set_errors(response)
39
+ return false
40
+ end
41
+ end
42
+
43
+ private
44
+
45
+ # Expects an action of either :enable or :disable.
46
+ def set_registrar_lock_status(action)
47
+ ensure_attribute_has_value :domain
48
+ return false if @errors.any?
49
+
50
+ params = {'domain' => @domain}
51
+ response = Client.post("/domain/registrarlock/#{action.to_s}", params)
52
+ code = response.code rescue ""
53
+
54
+ case code
55
+ when '200'
56
+ hash = JSON.parse(response.body)
57
+
58
+ @status = hash['status']
59
+ @transaction_id = hash['transactid']
60
+
61
+ unless @status == 'SUCCESS'
62
+ set_errors(response)
63
+ return false
64
+ end
65
+
66
+ return true
67
+ else
68
+ set_errors(response)
69
+ return false
70
+ end
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,39 @@
1
+ module InternetBS
2
+ class RegistryStatus < Base
3
+ attribute :domain, String
4
+ attribute :registry_status, String # clientTransferProhibited
5
+
6
+ def fetch
7
+ ensure_attribute_has_value :domain
8
+ return false if @errors.any?
9
+
10
+ params = {'domain' => @domain}
11
+ response = Client.get('/domain/registrystatus', params)
12
+ code = response.code rescue ""
13
+
14
+ case code
15
+ when '200'
16
+ hash = JSON.parse(response.body)
17
+
18
+ @status = hash['status']
19
+ @transaction_id = hash['transactid']
20
+
21
+ if @status == 'SUCCESS'
22
+ if hash['registrystatus'].is_a?(Array)
23
+ @registry_status = hash['registrystatus'].first
24
+ else
25
+ @registry_status = hash['registrystatus']
26
+ end
27
+ else
28
+ set_errors(response)
29
+ return false
30
+ end
31
+
32
+ return true
33
+ else
34
+ set_errors(response)
35
+ return false
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,43 @@
1
+ module InternetBS
2
+ class RenewDomain < Base
3
+ attribute :currency, String, :default => 'USD'
4
+ attribute :discount_code, String
5
+ attribute :domain, String
6
+ attribute :period, String, :default => '1Y' # 1Y, 2Y up to 10Y
7
+ attribute :total_price, Float
8
+
9
+ def purchase!
10
+ ensure_attribute_has_value :domain
11
+ return false if @errors.any?
12
+
13
+ params = {'domain' => @domain}
14
+ params.merge!({'period' => @period}) if @period
15
+ params.merge!({'discountcode' => @discount_code}) if @discount_code
16
+
17
+ response = Client.post('/domain/renew', params)
18
+ code = response.code rescue ""
19
+
20
+ case code
21
+ when '200'
22
+ hash = JSON.parse(response.body)
23
+
24
+ @status = hash['status']
25
+ @transaction_id = hash['transactid']
26
+
27
+ if @status == 'SUCCESS'
28
+ @currency = hash['currency']
29
+ @total_price = hash['price']
30
+ else
31
+ set_errors(response)
32
+ return false
33
+ end
34
+
35
+ return true
36
+ else
37
+ set_errors(response)
38
+ return false
39
+ end
40
+ end
41
+
42
+ end
43
+ end
@@ -0,0 +1,71 @@
1
+ module InternetBS
2
+ class UpdateDomain < Base
3
+ attribute :auto_renew, Boolean # YES or NO
4
+ attribute :contacts, Array[DomainContact]
5
+ attribute :domain, String
6
+ attribute :domain_extension, String
7
+ attribute :nameservers, Array[String]
8
+ attribute :private_whois, String # DISABLED or FULL or PARTIAL
9
+ attribute :registrar_lock, String # ENABLED or DISABLED or NOTADMITTED
10
+ attribute :tel_hosting_account, String # .tel domains only
11
+ attribute :tel_hosting_password, String # .tel domains only
12
+ attribute :tel_hide_whois_data, Boolean # .tel domains only, either YES or NO
13
+ attribute :transfer_auth_info, String
14
+
15
+ def update!
16
+ ensure_attribute_has_value :domain
17
+ return false if @errors.any?
18
+
19
+ @domain_extension = @domain.split('.').last
20
+
21
+ params = {'domain' => @domain}
22
+
23
+ params.merge!({'transferauthinfo' => @transfer_auth_info}) if @transfer_auth_info
24
+ parmas.merge!({'registrarlock' => @registrar_lock}) if @registrar_lock
25
+ params.merge!({'privatewhois' => @private_whois}) if @private_whois
26
+ params.merge!({'autorenew' => @auto_renew ? 'YES' : 'NO'}) if @auto_renew
27
+
28
+ if @nameservers.any?
29
+ params.merge!({'ns_list' => @nameservers.join(',')})
30
+ end
31
+
32
+ if @contacts.any?
33
+ @contacts.each do |contact|
34
+ contact.domain_extension = @domain_extension
35
+ params.merge!(contact.params)
36
+ end
37
+ end
38
+
39
+ if @domain_extension == "tel"
40
+ params.merge!({'telhostingaccount' => @tel_hosting_account}) if @tel_hosting_account
41
+ params.merge!({'telhostingpassword' => @tel_hosting_password}) if @tel_hosting_password
42
+ params.merge!({'telhidewhoisdata' => @tel_hide_whois_data ? 'YES' : 'NO'}) if @tel_hide_whois_data
43
+ end
44
+
45
+ response = Client.post('/domain/update', params)
46
+ code = response.code rescue ""
47
+
48
+ case code
49
+ when '200'
50
+ hash = JSON.parse(response.body)
51
+
52
+ @status = hash['status']
53
+ @transaction_id = hash['transactid']
54
+
55
+ if @status == 'SUCCESS'
56
+
57
+ debugger
58
+ else
59
+ set_errors(response)
60
+ return false
61
+ end
62
+
63
+ return true
64
+ else
65
+ set_errors(response)
66
+ return false
67
+ end
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,10 @@
1
+ module InternetBS
2
+ module VERSION
3
+ MAJOR = 1
4
+ MINOR = 0
5
+ TINY = 0
6
+ REVISION = nil
7
+ STRING = [MAJOR, MINOR, TINY, REVISION].compact.join('.')
8
+ SUMMARY = "InternetBS Ruby Client v#{STRING}"
9
+ end
10
+ end
metadata ADDED
@@ -0,0 +1,104 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: internetbs
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jurgen Jocubeit
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-23 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 InternetBS resellers.
28
+ email: support@brightcommerce.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - ".gitignore"
34
+ - Gemfile
35
+ - LICENSE
36
+ - README.md
37
+ - internetbs.gemspec
38
+ - lib/internetbs.rb
39
+ - lib/internetbs/account_balance.rb
40
+ - lib/internetbs/account_balances.rb
41
+ - lib/internetbs/account_domain.rb
42
+ - lib/internetbs/account_domains.rb
43
+ - lib/internetbs/account_price.rb
44
+ - lib/internetbs/account_prices.rb
45
+ - lib/internetbs/account_transaction.rb
46
+ - lib/internetbs/account_transactions.rb
47
+ - lib/internetbs/additional_attributes.rb
48
+ - lib/internetbs/base.rb
49
+ - lib/internetbs/client.rb
50
+ - lib/internetbs/configuration.rb
51
+ - lib/internetbs/country_codes.rb
52
+ - lib/internetbs/domain_availability.rb
53
+ - lib/internetbs/domain_contact.rb
54
+ - lib/internetbs/domain_host.rb
55
+ - lib/internetbs/domain_hosts.rb
56
+ - lib/internetbs/domain_information.rb
57
+ - lib/internetbs/domain_push.rb
58
+ - lib/internetbs/domain_record.rb
59
+ - lib/internetbs/domain_records.rb
60
+ - lib/internetbs/domain_total.rb
61
+ - lib/internetbs/dot_asia_attributes.rb
62
+ - lib/internetbs/dot_de_attributes.rb
63
+ - lib/internetbs/dot_eu_attributes.rb
64
+ - lib/internetbs/dot_fr_attributes.rb
65
+ - lib/internetbs/dot_it_attributes.rb
66
+ - lib/internetbs/dot_nl_attributes.rb
67
+ - lib/internetbs/dot_uk_attributes.rb
68
+ - lib/internetbs/dot_us_attributes.rb
69
+ - lib/internetbs/error.rb
70
+ - lib/internetbs/language_codes.rb
71
+ - lib/internetbs/order_domain.rb
72
+ - lib/internetbs/private_whois.rb
73
+ - lib/internetbs/registrar_lock.rb
74
+ - lib/internetbs/registry_status.rb
75
+ - lib/internetbs/renew_domain.rb
76
+ - lib/internetbs/update_domain.rb
77
+ - lib/internetbs/version.rb
78
+ homepage: https://github.com/brightcommerce/internetbs
79
+ licenses:
80
+ - MIT
81
+ metadata:
82
+ copyright: Copyright 2015 Brightcommerce, Inc.
83
+ post_install_message:
84
+ rdoc_options: []
85
+ require_paths:
86
+ - lib
87
+ required_ruby_version: !ruby/object:Gem::Requirement
88
+ requirements:
89
+ - - ">="
90
+ - !ruby/object:Gem::Version
91
+ version: 2.0.0
92
+ required_rubygems_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ requirements: []
98
+ rubyforge_project:
99
+ rubygems_version: 2.4.5
100
+ signing_key:
101
+ specification_version: 4
102
+ summary: InternetBS Ruby Client v1.0.0
103
+ test_files: []
104
+ has_rdoc: