dnsimple-ruby 1.7.1 → 2.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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +3 -9
  4. data/{CHANGELOG.markdown → CHANGELOG.md} +4 -0
  5. data/Gemfile +0 -2
  6. data/LICENSE +1 -1
  7. data/README.md +5 -0
  8. data/Rakefile +0 -15
  9. data/dnsimple-ruby.gemspec +11 -19
  10. data/lib/dnsimple-ruby.rb +2 -0
  11. metadata +20 -288
  12. data/README.markdown +0 -159
  13. data/bin/dnsimple +0 -4
  14. data/bin/dnsimple.rb +0 -156
  15. data/features/README.md +0 -9
  16. data/features/cli/certificates/purchase_certificate.feature +0 -10
  17. data/features/cli/contacts/create_contact.feature +0 -10
  18. data/features/cli/domains/check_domain.feature +0 -10
  19. data/features/cli/domains/create_domain.feature +0 -10
  20. data/features/cli/domains/delete_domain.feature +0 -11
  21. data/features/cli/domains/register_domain.feature +0 -10
  22. data/features/cli/records/create_ptr_record.feature +0 -11
  23. data/features/cli/records/create_record.feature +0 -12
  24. data/features/cli/records/delete_record.feature +0 -14
  25. data/features/cli/templates/apply_template.feature +0 -11
  26. data/features/step_definitions/certificate_steps.rb +0 -3
  27. data/features/step_definitions/cli_steps.rb +0 -8
  28. data/features/step_definitions/domain_steps.rb +0 -32
  29. data/features/step_definitions/record_steps.rb +0 -38
  30. data/features/step_definitions/template_steps.rb +0 -9
  31. data/features/support/env.rb +0 -19
  32. data/lib/dnsimple.rb +0 -33
  33. data/lib/dnsimple/base.rb +0 -10
  34. data/lib/dnsimple/certificate.rb +0 -140
  35. data/lib/dnsimple/cli.rb +0 -121
  36. data/lib/dnsimple/client.rb +0 -128
  37. data/lib/dnsimple/commands/certificate_describe.rb +0 -34
  38. data/lib/dnsimple/commands/certificate_list.rb +0 -15
  39. data/lib/dnsimple/commands/certificate_purchase.rb +0 -17
  40. data/lib/dnsimple/commands/certificate_submit.rb +0 -17
  41. data/lib/dnsimple/commands/contact_create.rb +0 -23
  42. data/lib/dnsimple/commands/contact_delete.rb +0 -14
  43. data/lib/dnsimple/commands/contact_describe.rb +0 -25
  44. data/lib/dnsimple/commands/contact_list.rb +0 -13
  45. data/lib/dnsimple/commands/contact_update.rb +0 -25
  46. data/lib/dnsimple/commands/domain_apply_template.rb +0 -15
  47. data/lib/dnsimple/commands/domain_check.rb +0 -11
  48. data/lib/dnsimple/commands/domain_clear.rb +0 -16
  49. data/lib/dnsimple/commands/domain_create.rb +0 -16
  50. data/lib/dnsimple/commands/domain_delete.rb +0 -14
  51. data/lib/dnsimple/commands/domain_describe.rb +0 -14
  52. data/lib/dnsimple/commands/domain_list.rb +0 -13
  53. data/lib/dnsimple/commands/domain_register.rb +0 -33
  54. data/lib/dnsimple/commands/domain_transfer.rb +0 -21
  55. data/lib/dnsimple/commands/extended_attribute_list.rb +0 -25
  56. data/lib/dnsimple/commands/me.rb +0 -18
  57. data/lib/dnsimple/commands/record_create.rb +0 -18
  58. data/lib/dnsimple/commands/record_delete.rb +0 -16
  59. data/lib/dnsimple/commands/record_describe.rb +0 -16
  60. data/lib/dnsimple/commands/record_list.rb +0 -19
  61. data/lib/dnsimple/commands/record_update.rb +0 -23
  62. data/lib/dnsimple/commands/service_add.rb +0 -14
  63. data/lib/dnsimple/commands/service_describe.rb +0 -12
  64. data/lib/dnsimple/commands/service_list.rb +0 -14
  65. data/lib/dnsimple/commands/service_list_applied.rb +0 -16
  66. data/lib/dnsimple/commands/service_list_available.rb +0 -16
  67. data/lib/dnsimple/commands/service_remove.rb +0 -14
  68. data/lib/dnsimple/commands/template_create.rb +0 -14
  69. data/lib/dnsimple/commands/template_delete.rb +0 -13
  70. data/lib/dnsimple/commands/template_list.rb +0 -13
  71. data/lib/dnsimple/commands/template_record_create.rb +0 -18
  72. data/lib/dnsimple/commands/template_record_delete.rb +0 -16
  73. data/lib/dnsimple/commands/template_record_list.rb +0 -17
  74. data/lib/dnsimple/contact.rb +0 -154
  75. data/lib/dnsimple/domain.rb +0 -217
  76. data/lib/dnsimple/error.rb +0 -32
  77. data/lib/dnsimple/extended_attribute.rb +0 -52
  78. data/lib/dnsimple/record.rb +0 -94
  79. data/lib/dnsimple/service.rb +0 -42
  80. data/lib/dnsimple/template.rb +0 -63
  81. data/lib/dnsimple/template_record.rb +0 -80
  82. data/lib/dnsimple/transfer_order.rb +0 -34
  83. data/lib/dnsimple/user.rb +0 -51
  84. data/lib/dnsimple/version.rb +0 -3
  85. data/spec/ci/.dnsimple.test +0 -3
  86. data/spec/commands/certificate_purchase_spec.rb +0 -25
  87. data/spec/commands/certificate_submit_spec.rb +0 -18
  88. data/spec/commands/record_create_spec.rb +0 -23
  89. data/spec/commands/record_list_spec.rb +0 -23
  90. data/spec/commands/service_add_spec.rb +0 -20
  91. data/spec/dnsimple/certificate_spec.rb +0 -59
  92. data/spec/dnsimple/client_spec.rb +0 -154
  93. data/spec/dnsimple/contact_spec.rb +0 -45
  94. data/spec/dnsimple/domain_spec.rb +0 -133
  95. data/spec/dnsimple/extended_attributes_spec.rb +0 -54
  96. data/spec/dnsimple/record_spec.rb +0 -51
  97. data/spec/dnsimple/template_spec.rb +0 -31
  98. data/spec/dnsimple/user_spec.rb +0 -70
  99. data/spec/files/2fa/error-badtoken.http +0 -22
  100. data/spec/files/2fa/error-required.http +0 -23
  101. data/spec/files/2fa/exchange-token.http +0 -25
  102. data/spec/files/account/user/success.http +0 -19
  103. data/spec/files/certificates/index/success.http +0 -19
  104. data/spec/files/certificates/show/notfound.http +0 -17
  105. data/spec/files/certificates/show/success.http +0 -19
  106. data/spec/files/contacts/show/notfound.http +0 -17
  107. data/spec/files/contacts/show/success.http +0 -19
  108. data/spec/files/domains/auto_renewal_disable/notfound.http +0 -21
  109. data/spec/files/domains/auto_renewal_disable/success.http +0 -23
  110. data/spec/files/domains/auto_renewal_enable/notfound.http +0 -21
  111. data/spec/files/domains/auto_renewal_enable/success.http +0 -23
  112. data/spec/files/domains/show/notfound.http +0 -17
  113. data/spec/files/domains/show/success.http +0 -19
  114. data/spec/files/extended_attributes/ca.http +0 -19
  115. data/spec/files/extended_attributes/com.http +0 -19
  116. data/spec/files/extended_attributes/success.http +0 -19
  117. data/spec/files/records/index/success.http +0 -19
  118. data/spec/files/records/show/notfound.http +0 -17
  119. data/spec/files/records/show/success.http +0 -19
  120. data/spec/files/templates/show/notfound.http +0 -17
  121. data/spec/files/templates/show/success.http +0 -19
  122. data/spec/spec_helper.rb +0 -39
  123. data/spec/support/helpers.rb +0 -15
  124. data/spec/support/webmock.rb +0 -11
@@ -1,3 +0,0 @@
1
- Then /^the output should show that a certificate was purchased$/ do
2
- steps %Q(Then the output should contain "Purchased certificate for #{@domain_name}")
3
- end
@@ -1,8 +0,0 @@
1
- Given /^I have set up my credentials$/ do
2
- path = DNSimple::Client.config_path
3
- File.exists?(File.expand_path(path)).should be_truthy, "Please set up your #{path} file to continue"
4
- credentials = YAML.load(File.new(File.expand_path(path)))
5
- expect(credentials['username']).to_not be_nil, "You must specify a username in your #{path} file"
6
- expect(credentials['password']).to_not be_nil, "You must specify a password in your #{path} file"
7
- expect(credentials['base_uri']).to_not be_nil, "For cucumber to run, you must specify a base_uri in your #{path} file"
8
- end
@@ -1,32 +0,0 @@
1
- When /^I run `(.*)` with a new domain$/ do |cmd|
2
- @domain_name = "cli-test-#{Time.now.to_i}.com"
3
- steps %Q(When I run `#{cmd} #{@domain_name}`)
4
- end
5
-
6
- When /^I run `(.*)` with a in\-addr\.arpa domain$/ do |cmd|
7
- @domain_name = '0.0.10.in-addr.arpa'
8
- steps %Q(When I run `#{cmd} #{@domain_name}`)
9
- end
10
-
11
- When /^I run `(.*)` with a domain I created$/ do |cmd|
12
- steps %Q(
13
- When I run `dnsimple create` with a new domain
14
- )
15
- steps %Q(
16
- And I run `#{cmd} #{@domain_name}`
17
- )
18
- end
19
-
20
- Then /^the output should show that the domain was created$/ do
21
- steps %Q(Then the output should contain "Created #{@domain_name}")
22
- end
23
-
24
- Then /^the output should show that the domain was deleted$/ do
25
- steps %Q(Then the output should contain "Deleted #{@domain_name}")
26
- end
27
-
28
- Then /^the output should show that the domain was registered$/ do
29
- steps %Q(Then the output should contain "Registered #{@domain_name}")
30
- end
31
-
32
-
@@ -1,38 +0,0 @@
1
- When /^I run `(.*)` with the domain I added and no name and the type "([^\"]*)" and the content "([^\"]*)"$/ do |cmd, type, content|
2
- steps %Q(When I run `#{cmd} #{@domain_name} '' #{type} #{content}`)
3
- end
4
-
5
- When /^I run `(.*)` with the domain I added and the name "([^\"]*)" and the type "([^\"]*)" and the content "([^\"]*)"$/ do |cmd, name, type, content|
6
- steps %Q(When I run `#{cmd} #{@domain_name} #{name} #{type} #{content}`)
7
- end
8
-
9
- When /^I run `(.*)` with the id of the record$/ do |cmd|
10
- steps %Q(When I run `#{cmd} #{@domain_name} #{@record_id}`)
11
- end
12
-
13
- When /^I note the id of the record I added$/ do
14
- ps = only_processes.last
15
- fail "No last process" unless ps
16
- m = ps.stdout.match(/id:(\d+)/)
17
- fail "Unable to find ID of record" unless m
18
- @record_id = m[1]
19
- end
20
-
21
- Then /^the output should show that the "([^\"]*)" record was created$/ do |type|
22
- steps %Q(Then the output should contain "Created #{type} record for #{@domain_name}")
23
- end
24
-
25
- Then /^the output should include the record id$/ do
26
- steps %Q(Then the output should match /id:(\\d+)/)
27
- end
28
-
29
- Then /^the output should show that the record was deleted$/ do
30
- steps %Q(Then the output should contain "Deleted #{@record_id} from #{@domain_name}")
31
- end
32
-
33
- Then /^I the domain should have (\d+) records$/ do |n|
34
- steps %Q(
35
- When I run `dnsimple record:list #{@domain_name}`
36
- Then the output should contain "Found #{n} records for #{@domain_name}"
37
- )
38
- end
@@ -1,9 +0,0 @@
1
- When /^I run `(.*)` with the domain and the template named "([^\"]*)"$/ do |cmd, template|
2
- @template_name = template
3
- steps %Q(When I run `#{cmd} #{@domain_name} #{template}`)
4
- end
5
-
6
- Then /^the output should show that the template was applied$/ do
7
- steps %Q(Then the output should contain "Applied template #{@template_name} to #{@domain_name}")
8
- end
9
-
@@ -1,19 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
- require 'aruba/cucumber'
4
-
5
- $:.unshift(File.dirname(__FILE__) + '/lib')
6
- require 'dnsimple'
7
-
8
- Before do
9
- @aruba_timeout_seconds = 30
10
- ENV['DNSIMPLE_CONFIG'] = '~/.dnsimple.test'
11
- end
12
-
13
- After do |scenario|
14
- unless ENV['NODELETE'] || scenario.source_tag_names.include?('@skip-delete')
15
- if @domain_name && (@domain_name =~ /^cli-/ || @domain_name =~ /in-addr\.arpa/)
16
- steps %Q(When I run `dnsimple delete #{@domain_name}`)
17
- end
18
- end
19
- end
@@ -1,33 +0,0 @@
1
- require 'httparty'
2
-
3
- module DNSimple
4
-
5
- BLANK_REGEX = /\S+/
6
-
7
- # Echoes a deprecation warning message.
8
- #
9
- # @param [String] message The message to display.
10
- # @return [void]
11
- #
12
- # @api internal
13
- # @private
14
- def self.deprecate(message = nil)
15
- message ||= "You are using deprecated behavior which will be removed from the next major or minor release."
16
- warn("DEPRECATION WARNING: #{message}")
17
- end
18
-
19
- end
20
-
21
- require 'dnsimple/base'
22
- require 'dnsimple/client'
23
- require 'dnsimple/error'
24
- require 'dnsimple/user'
25
- require 'dnsimple/contact'
26
- require 'dnsimple/domain'
27
- require 'dnsimple/record'
28
- require 'dnsimple/template'
29
- require 'dnsimple/template_record'
30
- require 'dnsimple/transfer_order'
31
- require 'dnsimple/extended_attribute'
32
- require 'dnsimple/service'
33
- require 'dnsimple/certificate'
@@ -1,10 +0,0 @@
1
- module DNSimple
2
- class Base
3
- def initialize(attributes = {})
4
- attributes.each do |key, value|
5
- m = "#{key}=".to_sym
6
- self.send(m, value) if self.respond_to?(m)
7
- end
8
- end
9
- end
10
- end
@@ -1,140 +0,0 @@
1
- module DNSimple
2
-
3
- # Represents an SSL certificate that has been purchased.
4
- #
5
- # The certificate must also be submitted using the #submit method
6
- # before the Certificate Authority will issue a signed certificate.
7
- class Certificate < Base
8
-
9
- # The Fixnum certificate ID in DNSimple.
10
- attr_accessor :id
11
-
12
- # The Fixnum associated domain ID.
13
- attr_accessor :domain_id
14
-
15
- # The Fixnum associated contact ID.
16
- attr_accessor :contact_id
17
-
18
- # The String subdomain on the certificate.
19
- attr_accessor :name
20
-
21
- # The String state.
22
- attr_accessor :state
23
-
24
- # The String Certificate Signing Request.
25
- attr_accessor :csr
26
-
27
- # The String SSL certificate.
28
- # It is set only if the order issued by the Certificate Authority.
29
- attr_accessor :ssl_certificate
30
-
31
- # The String private key.
32
- # It is set only if DNSimple generated the Certificate Signing Request.
33
- attr_accessor :private_key
34
-
35
- # The String approver email address
36
- # It is set only if the state is submitted.
37
- attr_accessor :approver_email
38
-
39
- # The Array of all emails that can be used to approve the certificate.
40
- # It is set only if the state is configured.
41
- attr_accessor :approver_emails
42
-
43
- # The Date the certificate was purchased
44
- attr_accessor :created_at
45
-
46
- # The Date the certificate was last updated
47
- attr_accessor :updated_at
48
-
49
- # The Date the certificate was configured
50
- attr_accessor :configured_at
51
-
52
- # The Date the Certificate will expire
53
- attr_accessor :expires_on
54
-
55
- # The associated Domain.
56
- attr_accessor :domain
57
-
58
-
59
- # Purchase a certificate under the given domain with the given name. The
60
- # name will be appended to the domain name, and thus should only be the
61
- # subdomain part.
62
- #
63
- # Example: DNSimple::Certificate.purchase(domain, 'www', contact)
64
- #
65
- # Please note that by invoking this method DNSimple will immediately charge
66
- # your credit card on file at DNSimple for the full certificate price.
67
- #
68
- # For wildcard certificates an asterisk must appear in the name.
69
- #
70
- # Example: DNSimple::Certificate.purchase(domain, '*', contact)
71
- def self.purchase(domain, name, contact, options={})
72
- certificate_hash = {
73
- :name => name,
74
- :contact_id => contact.id
75
- }
76
-
77
- options.merge!({:body => {:certificate => certificate_hash}})
78
-
79
- response = DNSimple::Client.post("/v1/domains/#{domain.name}/certificates", options)
80
-
81
- case response.code
82
- when 201
83
- new({ :domain => domain }.merge(response["certificate"]))
84
- when 406
85
- raise RecordExists, "Certificate for #{domain.name} already exists"
86
- else
87
- raise RequestError.new("Error purchasing certificate", response)
88
- end
89
- end
90
-
91
- # Get an array of all certificates for the given domain.
92
- def self.all(domain, options={})
93
- response = DNSimple::Client.get("/v1/domains/#{domain.name}/certificates", options)
94
-
95
- case response.code
96
- when 200
97
- response.map { |r| new({:domain => domain}.merge(r["certificate"])) }
98
- else
99
- raise RequestError.new("Error listing certificates", response)
100
- end
101
- end
102
-
103
- # Find a specific certificate for the given domain.
104
- def self.find(domain, id, options = {})
105
- response = DNSimple::Client.get("/v1/domains/#{domain.name}/certificates/#{id}", options)
106
-
107
- case response.code
108
- when 200
109
- new({:domain => domain}.merge(response["certificate"]))
110
- when 404
111
- raise RecordNotFound, "Could not find certificate #{id} for domain #{domain.name}"
112
- else
113
- raise RequestError.new("Error finding certificate", response)
114
- end
115
- end
116
-
117
-
118
- # Get the fully-qualified domain name for the certificate. This is the
119
- # domain.name joined with the certificate name, separated by a period.
120
- def fqdn
121
- [name, domain.name].delete_if { |p| p !~ DNSimple::BLANK_REGEX }.join(".")
122
- end
123
-
124
- def submit(approver_email, options={})
125
- raise DNSimple::Error, "Approver email is required" unless approver_email
126
-
127
- options.merge!(:body => {:certificate => {:approver_email => approver_email}})
128
-
129
- response = DNSimple::Client.put("/v1/domains/#{domain.name}/certificates/#{id}/submit", options)
130
-
131
- case response.code
132
- when 200
133
- Certificate.new({ :domain => domain }.merge(response["certificate"]))
134
- else
135
- raise RequestError.new("Error submitting certificate", response)
136
- end
137
- end
138
-
139
- end
140
- end
@@ -1,121 +0,0 @@
1
- module DNSimple
2
-
3
- class CommandNotFound < RuntimeError
4
- end
5
-
6
- class CLI
7
-
8
- def execute(command_name, args, options={})
9
- DNSimple::Client.load_credentials_if_necessary
10
- command = commands[command_name]
11
- if command
12
- begin
13
- command.new.execute(args, options)
14
- rescue DNSimple::Error => e
15
- puts "An error occurred: #{e.message}"
16
- rescue RuntimeError => e
17
- puts "An error occurred: #{e.message}"
18
- end
19
- else
20
- raise CommandNotFound, "Unknown command: #{command_name}"
21
- end
22
- end
23
-
24
- def commands
25
- {
26
- 'info' => DNSimple::Commands::Me,
27
-
28
- 'list' => DNSimple::Commands::DomainList,
29
- 'describe' => DNSimple::Commands::DomainDescribe,
30
- 'check' => DNSimple::Commands::DomainCheck,
31
- 'create' => DNSimple::Commands::DomainCreate,
32
- 'register' => DNSimple::Commands::DomainRegister,
33
- 'transfer' => DNSimple::Commands::DomainTransfer,
34
- 'delete' => DNSimple::Commands::DomainDelete,
35
- 'clear' => DNSimple::Commands::DomainClear,
36
- 'apply' => DNSimple::Commands::DomainApplyTemplate,
37
-
38
- 'record:describe' => DNSimple::Commands::RecordDescribe,
39
- 'record:create' => DNSimple::Commands::RecordCreate,
40
- 'record:list' => DNSimple::Commands::RecordList,
41
- 'record:update' => DNSimple::Commands::RecordUpdate,
42
- 'record:delete' => DNSimple::Commands::RecordDelete,
43
-
44
- 'template:create' => DNSimple::Commands::TemplateCreate,
45
- 'template:list' => DNSimple::Commands::TemplateList,
46
- 'template:delete' => DNSimple::Commands::TemplateDelete,
47
-
48
- 'template:list_records' => DNSimple::Commands::TemplateRecordList,
49
- 'template:add_record' => DNSimple::Commands::TemplateRecordCreate,
50
- 'template:delete_record' => DNSimple::Commands::TemplateRecordDelete,
51
-
52
- 'contact:create' => DNSimple::Commands::ContactCreate,
53
- 'contact:list' => DNSimple::Commands::ContactList,
54
- 'contact:describe' => DNSimple::Commands::ContactDescribe,
55
- 'contact:update' => DNSimple::Commands::ContactUpdate,
56
- 'contact:delete' => DNSimple::Commands::ContactDelete,
57
-
58
- 'extended-attributes:list' => DNSimple::Commands::ExtendedAttributeList,
59
-
60
- 'service:list' => DNSimple::Commands::ServiceList,
61
- 'service:describe' => DNSimple::Commands::ServiceDescribe,
62
-
63
- 'service:applied' => DNSimple::Commands::ServiceListApplied,
64
- 'service:available' => DNSimple::Commands::ServiceListAvailable,
65
- 'service:add' => DNSimple::Commands::ServiceAdd,
66
- 'service:remove' => DNSimple::Commands::ServiceRemove,
67
-
68
- 'certificate:list' => DNSimple::Commands::CertificateList,
69
- 'certificate:describe' => DNSimple::Commands::CertificateDescribe,
70
- 'certificate:purchase' => DNSimple::Commands::CertificatePurchase,
71
- 'certificate:submit' => DNSimple::Commands::CertificateSubmit,
72
- }
73
- end
74
- end
75
- end
76
-
77
- require 'dnsimple/commands/me'
78
-
79
- require 'dnsimple/commands/domain_list'
80
- require 'dnsimple/commands/domain_describe'
81
- require 'dnsimple/commands/domain_check'
82
- require 'dnsimple/commands/domain_create'
83
- require 'dnsimple/commands/domain_register'
84
- require 'dnsimple/commands/domain_transfer'
85
- require 'dnsimple/commands/domain_delete'
86
- require 'dnsimple/commands/domain_clear'
87
- require 'dnsimple/commands/domain_apply_template'
88
-
89
- require 'dnsimple/commands/record_list'
90
- require 'dnsimple/commands/record_describe'
91
- require 'dnsimple/commands/record_create'
92
- require 'dnsimple/commands/record_update'
93
- require 'dnsimple/commands/record_delete'
94
-
95
- require 'dnsimple/commands/template_list'
96
- require 'dnsimple/commands/template_create'
97
- require 'dnsimple/commands/template_delete'
98
- require 'dnsimple/commands/template_record_list'
99
- require 'dnsimple/commands/template_record_create'
100
- require 'dnsimple/commands/template_record_delete'
101
-
102
- require 'dnsimple/commands/contact_list'
103
- require 'dnsimple/commands/contact_describe'
104
- require 'dnsimple/commands/contact_create'
105
- require 'dnsimple/commands/contact_update'
106
- require 'dnsimple/commands/contact_delete'
107
-
108
- require 'dnsimple/commands/extended_attribute_list'
109
-
110
- require 'dnsimple/commands/service_list'
111
- require 'dnsimple/commands/service_describe'
112
-
113
- require 'dnsimple/commands/service_list_available'
114
- require 'dnsimple/commands/service_list_applied'
115
- require 'dnsimple/commands/service_add'
116
- require 'dnsimple/commands/service_remove'
117
-
118
- require 'dnsimple/commands/certificate_list'
119
- require 'dnsimple/commands/certificate_describe'
120
- require 'dnsimple/commands/certificate_purchase'
121
- require 'dnsimple/commands/certificate_submit'
@@ -1,128 +0,0 @@
1
- require 'dnsimple/version'
2
- require 'yaml'
3
-
4
- module DNSimple
5
- class Client
6
-
7
- DEFAULT_BASE_URI = "https://api.dnsimple.com/"
8
- HEADER_2FA_STRICT = "X-DNSimple-2FA-Strict"
9
- HEADER_API_TOKEN = "X-DNSimple-Token"
10
- HEADER_DOMAIN_API_TOKEN = "X-DNSimple-Domain-Token"
11
- HEADER_OTP_TOKEN = "X-DNSimple-OTP"
12
- HEADER_EXCHANGE_TOKEN = "X-DNSimple-OTP-Token"
13
-
14
- class << self
15
- # @return [Boolean] if the debug mode is enabled.
16
- # Defaults to false.
17
- attr_accessor :debug
18
-
19
- attr_accessor :username, :password, :exchange_token, :api_token, :domain_api_token
20
- end
21
-
22
- # Gets the qualified API base uri.
23
- #
24
- # @return [String] The qualified API base uri.
25
- def self.base_uri
26
- @base_uri ||= DEFAULT_BASE_URI.chomp("/")
27
- end
28
-
29
- # Sets the qualified API base uri.
30
- #
31
- # @param [String] value The qualified API base uri.
32
- def self.base_uri=(value)
33
- @base_uri = value.to_s.chomp("/")
34
- end
35
-
36
- def self.http_proxy
37
- @http_proxy
38
- end
39
-
40
- def self.load_credentials_if_necessary
41
- load_credentials unless credentials_loaded?
42
- end
43
-
44
- def self.config_path
45
- ENV['DNSIMPLE_CONFIG'] || '~/.dnsimple'
46
- end
47
-
48
- def self.load_credentials(path = config_path)
49
- begin
50
- credentials = YAML.load_file(File.expand_path(path))
51
- self.username = credentials['username']
52
- self.password = credentials['password']
53
- self.exchange_token = credentials['exchange_token']
54
- self.api_token = credentials['api_token']
55
- self.domain_api_token = credentials['domain_api_token']
56
- self.base_uri = credentials['site'] if credentials['site']
57
- self.base_uri = credentials['base_uri'] if credentials['base_uri']
58
- @http_proxy = { :addr => credentials['proxy_addr'], :port => credentials['proxy_port'] } if credentials['proxy_addr'] || credentials['proxy_port']
59
- @credentials_loaded = true
60
- puts "Credentials loaded from #{path}"
61
- rescue => error
62
- puts "Error loading your credentials: #{error.message}"
63
- exit 1
64
- end
65
- end
66
-
67
- def self.credentials_loaded?
68
- (@credentials_loaded ||= false) or domain_api_token or (username and (password or api_token))
69
- end
70
-
71
- def self.base_options
72
- options = {
73
- :format => :json,
74
- :headers => { 'Accept' => 'application/json', 'User-Agent' => "dnsimple-ruby/#{DNSimple::VERSION}" },
75
- }
76
-
77
- if http_proxy
78
- options.merge!(
79
- :http_proxyaddr => http_proxy[:addr],
80
- :http_proxyport => http_proxy[:port]
81
- )
82
- end
83
-
84
- if exchange_token
85
- options[:basic_auth] = { :username => exchange_token, :password => "x-2fa-basic" }
86
- elsif password
87
- options[:basic_auth] = { :username => username, :password => password }
88
- elsif domain_api_token
89
- options[:headers][HEADER_DOMAIN_API_TOKEN] = domain_api_token
90
- elsif api_token
91
- options[:headers][HEADER_API_TOKEN] = "#{username}:#{api_token}"
92
- else
93
- raise Error, 'A password or API token is required for all API requests.'
94
- end
95
-
96
- options
97
- end
98
-
99
- def self.get(path, options = {})
100
- request :get, path, options
101
- end
102
-
103
- def self.post(path, options = {})
104
- request :post, path, options
105
- end
106
-
107
- def self.put(path, options = {})
108
- request :put, path, options
109
- end
110
-
111
- def self.delete(path, options = {})
112
- request :delete, path, options
113
- end
114
-
115
- def self.request(method, path, options)
116
- response = HTTParty.send(method, "#{base_uri}#{path}", base_options.merge(options))
117
-
118
- if response.code == 401 && response.headers[HEADER_OTP_TOKEN] == "required"
119
- raise TwoFactorAuthenticationRequired, response["message"]
120
- elsif response.code == 401
121
- raise AuthenticationFailed, response["message"]
122
- end
123
-
124
- response
125
- end
126
-
127
- end
128
- end