internetbs 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: