sparqcode-dnsimple-ruby 1.2.6

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 (118) hide show
  1. data/.bundle/config +3 -0
  2. data/.rvmrc +1 -0
  3. data/Gemfile +16 -0
  4. data/Gemfile.lock +71 -0
  5. data/LICENSE +22 -0
  6. data/README +125 -0
  7. data/README.rdoc +125 -0
  8. data/README.textile +161 -0
  9. data/Rakefile +33 -0
  10. data/VERSION +1 -0
  11. data/bin/dnsimple +4 -0
  12. data/bin/dnsimple.rb +153 -0
  13. data/dnsimple-ruby.gemspec +191 -0
  14. data/features/README +12 -0
  15. data/features/cli/certificates/purchase_certificate.feature +10 -0
  16. data/features/cli/contacts/create_contact.feature +10 -0
  17. data/features/cli/domains/check_domain.feature +10 -0
  18. data/features/cli/domains/create_domain.feature +10 -0
  19. data/features/cli/domains/delete_domain.feature +11 -0
  20. data/features/cli/domains/register_domain.feature +10 -0
  21. data/features/cli/records/create_ptr_record.feature +11 -0
  22. data/features/cli/records/create_record.feature +12 -0
  23. data/features/cli/records/delete_record.feature +14 -0
  24. data/features/cli/templates/apply_template.feature +11 -0
  25. data/features/step_definitions/certificate_steps.rb +3 -0
  26. data/features/step_definitions/cli_steps.rb +8 -0
  27. data/features/step_definitions/domain_steps.rb +32 -0
  28. data/features/step_definitions/record_steps.rb +38 -0
  29. data/features/step_definitions/template_steps.rb +9 -0
  30. data/features/support/env.rb +17 -0
  31. data/fixtures/vcr_cassettes/DNSimple_Certificate/_all.yml +44 -0
  32. data/fixtures/vcr_cassettes/DNSimple_Certificate/_purchase.yml +44 -0
  33. data/fixtures/vcr_cassettes/DNSimple_Certificate/_submit.yml +44 -0
  34. data/fixtures/vcr_cassettes/DNSimple_Contact/a_new_contact.yml +42 -0
  35. data/fixtures/vcr_cassettes/DNSimple_Contact/an_existing_contact.yml +42 -0
  36. data/fixtures/vcr_cassettes/DNSimple_Domain/_all.yml +130 -0
  37. data/fixtures/vcr_cassettes/DNSimple_Domain/applying_templates.yml +216 -0
  38. data/fixtures/vcr_cassettes/DNSimple_Domain/creating_a_new_domain.yml +44 -0
  39. data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_id.yml +44 -0
  40. data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_name.yml +44 -0
  41. data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_a_new_registrant_contact.yml +44 -0
  42. data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_an_existing_contact.yml +44 -0
  43. data/fixtures/vcr_cassettes/DNSimple_Domain/setting_name_servers.yml +30 -0
  44. data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_ca.yml +40 -0
  45. data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_com.yml +40 -0
  46. data/fixtures/vcr_cassettes/DNSimple_Record/_all.yml +173 -0
  47. data/fixtures/vcr_cassettes/DNSimple_Record/creating_a_new_record.yml +44 -0
  48. data/fixtures/vcr_cassettes/DNSimple_Record/find_a_record.yml +44 -0
  49. data/fixtures/vcr_cassettes/DNSimple_Template/a_template.yml +44 -0
  50. data/fixtures/vcr_cassettes/DNSimple_User/_me.yml +42 -0
  51. data/lib/dnsimple.rb +19 -0
  52. data/lib/dnsimple/certificate.rb +158 -0
  53. data/lib/dnsimple/cli.rb +122 -0
  54. data/lib/dnsimple/client.rb +74 -0
  55. data/lib/dnsimple/command.rb +10 -0
  56. data/lib/dnsimple/commands/add_service.rb +16 -0
  57. data/lib/dnsimple/commands/add_template_record.rb +18 -0
  58. data/lib/dnsimple/commands/apply_template.rb +15 -0
  59. data/lib/dnsimple/commands/check_domain.rb +11 -0
  60. data/lib/dnsimple/commands/clear_domain.rb +16 -0
  61. data/lib/dnsimple/commands/create_contact.rb +21 -0
  62. data/lib/dnsimple/commands/create_domain.rb +16 -0
  63. data/lib/dnsimple/commands/create_record.rb +20 -0
  64. data/lib/dnsimple/commands/create_template.rb +14 -0
  65. data/lib/dnsimple/commands/delete_contact.rb +14 -0
  66. data/lib/dnsimple/commands/delete_domain.rb +14 -0
  67. data/lib/dnsimple/commands/delete_record.rb +16 -0
  68. data/lib/dnsimple/commands/delete_template.rb +13 -0
  69. data/lib/dnsimple/commands/delete_template_record.rb +16 -0
  70. data/lib/dnsimple/commands/describe_certificate.rb +34 -0
  71. data/lib/dnsimple/commands/describe_contact.rb +25 -0
  72. data/lib/dnsimple/commands/describe_domain.rb +14 -0
  73. data/lib/dnsimple/commands/describe_record.rb +16 -0
  74. data/lib/dnsimple/commands/describe_service.rb +12 -0
  75. data/lib/dnsimple/commands/describe_user.rb +18 -0
  76. data/lib/dnsimple/commands/list_applied_services.rb +16 -0
  77. data/lib/dnsimple/commands/list_available_services.rb +16 -0
  78. data/lib/dnsimple/commands/list_certificates.rb +15 -0
  79. data/lib/dnsimple/commands/list_contacts.rb +13 -0
  80. data/lib/dnsimple/commands/list_domains.rb +13 -0
  81. data/lib/dnsimple/commands/list_extended_attributes.rb +25 -0
  82. data/lib/dnsimple/commands/list_records.rb +21 -0
  83. data/lib/dnsimple/commands/list_services.rb +14 -0
  84. data/lib/dnsimple/commands/list_template_records.rb +17 -0
  85. data/lib/dnsimple/commands/list_templates.rb +13 -0
  86. data/lib/dnsimple/commands/purchase_certificate.rb +19 -0
  87. data/lib/dnsimple/commands/register_domain.rb +33 -0
  88. data/lib/dnsimple/commands/remove_service.rb +14 -0
  89. data/lib/dnsimple/commands/submit_certificate.rb +19 -0
  90. data/lib/dnsimple/commands/transfer_domain.rb +21 -0
  91. data/lib/dnsimple/commands/update_contact.rb +25 -0
  92. data/lib/dnsimple/commands/update_record.rb +23 -0
  93. data/lib/dnsimple/contact.rb +181 -0
  94. data/lib/dnsimple/domain.rb +246 -0
  95. data/lib/dnsimple/error.rb +32 -0
  96. data/lib/dnsimple/extended_attribute.rb +73 -0
  97. data/lib/dnsimple/record.rb +128 -0
  98. data/lib/dnsimple/service.rb +58 -0
  99. data/lib/dnsimple/template.rb +91 -0
  100. data/lib/dnsimple/template_record.rb +103 -0
  101. data/lib/dnsimple/transfer_order.rb +45 -0
  102. data/lib/dnsimple/user.rb +44 -0
  103. data/spec/README +10 -0
  104. data/spec/certificate_spec.rb +46 -0
  105. data/spec/command_spec.rb +19 -0
  106. data/spec/commands/add_service_spec.rb +29 -0
  107. data/spec/commands/create_record_spec.rb +23 -0
  108. data/spec/commands/list_records_spec.rb +34 -0
  109. data/spec/commands/purchase_certificate_spec.rb +24 -0
  110. data/spec/commands/submit_certificate_spec.rb +19 -0
  111. data/spec/contact_spec.rb +35 -0
  112. data/spec/domain_spec.rb +97 -0
  113. data/spec/extended_attributes_spec.rb +19 -0
  114. data/spec/record_spec.rb +59 -0
  115. data/spec/spec_helper.rb +22 -0
  116. data/spec/template_spec.rb +11 -0
  117. data/spec/user_spec.rb +23 -0
  118. metadata +353 -0
@@ -0,0 +1,21 @@
1
+ module DNSimple
2
+ module Commands
3
+ class CreateContact
4
+ # Execute the contact:create command.
5
+ #
6
+ # Args expected to be:
7
+ # [name:value name:value ...]
8
+ def execute(args, options={})
9
+ attributes = {}
10
+ attributes['state_province_choice'] = 'S'
11
+ args.each do |arg|
12
+ name, value = arg.split(":")
13
+ attributes[Contact.resolve(name)] = value
14
+ end
15
+
16
+ contact = Contact.create(attributes, options)
17
+ puts "Created contact #{contact.name} (id: #{contact.id})"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class CreateDomain
4
+ def execute(args, options={})
5
+ name = args.shift
6
+ domain = Domain.create(name)
7
+ puts "Created #{domain.name}"
8
+
9
+ if template = options.delete(:template)
10
+ domain.apply(template)
11
+ puts "Applied template #{template} to #{domain.name}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,20 @@
1
+ require 'dnsimple/command'
2
+
3
+ module DNSimple
4
+ module Commands
5
+ class CreateRecord < Command
6
+ def execute(args, options={})
7
+ name = args.shift
8
+ record_name = args.shift
9
+ record_type = args.shift
10
+ content = args.shift
11
+ ttl = args.shift
12
+
13
+ domain = Domain.find(name)
14
+ record = Record.create(domain, record_name, record_type, content, :ttl => ttl, :prio => options[:prio])
15
+
16
+ say "Created #{record.record_type} record for #{domain.name} (id:#{record.id})"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class CreateTemplate
4
+ def execute(args, options={})
5
+ name = args.shift
6
+ short_name = args.shift
7
+ description = args.shift unless args.empty?
8
+
9
+ template = Template.create(name, short_name, description)
10
+ puts "Created #{template.name} (short_name:#{template.short_name})"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteContact
4
+ def execute(args, options={})
5
+ id = args.shift
6
+
7
+ contact = Contact.find(id)
8
+ contact.delete
9
+
10
+ puts "Deleted #{contact.name} (id: #{contact.id})"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteDomain
4
+ def execute(args, options={})
5
+ name_or_id = args.shift
6
+
7
+ domain = Domain.find(name_or_id)
8
+ domain.delete
9
+
10
+ puts "Deleted #{domain.name}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteRecord
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ id = args.shift
7
+
8
+ domain = Domain.find(domain_name)
9
+ record = Record.find(domain.name, id)
10
+ record.delete
11
+
12
+ puts "Deleted #{record.id} from #{domain.name}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteTemplate
4
+ def execute(args, options={})
5
+ short_name = args.shift
6
+ template = Template.find(short_name)
7
+ template.delete
8
+
9
+ puts "Deleted template #{short_name}"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteTemplateRecord
4
+ def execute(args, options={})
5
+ short_name = args.shift
6
+ id = args.shift
7
+
8
+ template = Template.find(short_name)
9
+ record = TemplateRecord.find(template.short_name, id)
10
+ record.delete
11
+
12
+ puts "Deleted #{record.id} from template #{short_name}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,34 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeCertificate
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ certificate_id = args.shift
7
+ domain = Domain.find(domain_name)
8
+ certificate = Certificate.find(domain, certificate_id)
9
+ puts "Certificate: #{certificate.fqdn}"
10
+ puts "\tID: #{certificate.id}"
11
+ puts "\tStatus: #{certificate.certificate_status}"
12
+ puts "\tCreated: #{certificate.created_at}"
13
+ puts "\tOrder Date: #{certificate.order_date}"
14
+ puts "\tExpires: #{certificate.expiration_date}"
15
+
16
+ if certificate.approver_email =~ /\S+/
17
+ puts "\tApprover email: #{certificate.approver_email}"
18
+ else
19
+ puts "\tAvailable approver emails:"
20
+ certificate.available_approver_emails.split(",").each do |email|
21
+ puts "\t\t#{email}"
22
+ end
23
+ end
24
+
25
+ puts
26
+ puts "#{certificate.csr}"
27
+ puts
28
+ puts "#{certificate.private_key}"
29
+ puts
30
+ puts "#{certificate.ssl_certificate}"
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeContact
4
+ def execute(args, options={})
5
+ id = args.shift
6
+ contact = Contact.find(id)
7
+ puts "Contact: #{contact.name}:"
8
+ puts "\tID: #{contact.id}"
9
+ puts "\tFirst Name: #{contact.first_name}"
10
+ puts "\tLast Name: #{contact.last_name}"
11
+ puts "\tOrganization Name: #{contact.organization_name}" if contact.organization_name
12
+ puts "\tJob Title: #{contact.job_title}" if contact.job_title
13
+ puts "\tAddress 1: #{contact.address1}"
14
+ puts "\tAddress 2: #{contact.address2}"
15
+ puts "\tCity: #{contact.city}"
16
+ puts "\tState or Province: #{contact.state_province}"
17
+ puts "\tPostal Code: #{contact.postal_code}"
18
+ puts "\tCountry: #{contact.country}"
19
+ puts "\tEmail: #{contact.email_address}"
20
+ puts "\tPhone: #{contact.phone}"
21
+ puts "\tPhone Ext: #{contact.phone_ext}" if contact.phone_ext
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeDomain
4
+ def execute(args, options={})
5
+ name = args.shift
6
+ domain = Domain.find(name)
7
+ puts "Domain #{domain.name}:"
8
+ puts "\tID: #{domain.id}"
9
+ puts "\tCreated: #{domain.created_at}"
10
+ puts "\tName Server Status: #{domain.name_server_status}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeRecord
4
+ def execute(args, options={})
5
+ name = args.shift
6
+ id = args.shift
7
+ record = Record.find(name, id)
8
+ puts "Record #{record.fqdn}:"
9
+ puts "\tID: #{record.id}"
10
+ puts "\tTTL: #{record.ttl}"
11
+ puts "\tPrio: #{record.prio}"
12
+ puts "\tContent: #{record.content}"
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeService
4
+ def execute(args, options={})
5
+ short_name = args.shift
6
+ service = Service.find(short_name)
7
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
8
+ puts "\t\t#{service.description}"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,18 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeUser
4
+ def execute(args, options={})
5
+ puts "Connecting to #{Client.base_uri}"
6
+ user = User.me
7
+ puts "User details:"
8
+ puts "\tID:#{user.id}"
9
+ puts "\tCreated: #{user.created_at}"
10
+ puts "\tEmail: #{user.email}"
11
+ puts "\tSuccessful logins: #{user.login_count}"
12
+ puts "\tFailed logins: #{user.failed_login_count}"
13
+ puts "\tDomains in account: #{user.domain_count}"
14
+ puts "\tDomains allowed: #{user.domain_limit}"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListAppliedServices
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ services = domain.applied_services
8
+ puts "Found #{services.length} applied services for #{domain_name}"
9
+ services.each do |service|
10
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
11
+ puts "\t\t#{service.description}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListAvailableServices
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ services = domain.available_services
8
+ puts "Found #{services.length} available services for #{domain_name}"
9
+ services.each do |service|
10
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
11
+ puts "\t\t#{service.description}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListCertificates
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = DNSimple::Domain.find(domain_name)
7
+ certificates = DNSimple::Certificate.all(domain)
8
+ puts "Found #{certificates.length} certificate for #{domain_name}"
9
+ certificates.each do |certificate|
10
+ puts "\t#{certificate.fqdn} (id: #{certificate.id}, status: #{certificate.certificate_status})"
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListContacts
4
+ def execute(args, options={})
5
+ contacts = Contact.all
6
+ puts "Found #{contacts.length} contacts:"
7
+ contacts.each do |contact|
8
+ puts "\t#{contact.name} (id:#{contact.id})"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListDomains
4
+ def execute(args, options={})
5
+ domains = Domain.all
6
+ puts "Found #{domains.length} domains:"
7
+ domains.each do |domain|
8
+ puts "\t#{domain.name}"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListExtendedAttributes
4
+ def execute(args, options={})
5
+ tld = args.shift
6
+ extended_attributes = ExtendedAttribute.find(tld)
7
+ puts "Extended attributes: "
8
+ extended_attributes.each do |extended_attribute|
9
+ o = " #{extended_attribute.name}"
10
+ o << " (required)" if extended_attribute.required
11
+ o << " : #{extended_attribute.description}\n"
12
+ unless extended_attribute.options.empty?
13
+ o << " Options:\n"
14
+ extended_attribute.options.each do |option|
15
+ o << " #{option.title}: #{option.value}"
16
+ o << " (#{option.description})" if option.description
17
+ o << "\n"
18
+ end
19
+ end
20
+ puts o
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,21 @@
1
+ require 'dnsimple/command'
2
+
3
+ module DNSimple
4
+ module Commands
5
+ class ListRecords < Command
6
+ def execute(args, options={})
7
+ domain_name = args.shift
8
+
9
+ records = Record.all(DNSimple::Domain.new(:name => domain_name))
10
+
11
+ say "Found #{records.length} records for #{domain_name}"
12
+ records.each do |record|
13
+ extra = ["ttl:#{record.ttl}", "id:#{record.id}"]
14
+ extra << "prio:#{record.prio}" if record.record_type == "MX"
15
+ extra = "(#{extra.join(', ')})"
16
+ say "\t#{record.name}.#{record.domain.name} (#{record.record_type})-> #{record.content} #{extra}"
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListServices
4
+ def execute(args, options={})
5
+ services = Service.all
6
+ puts "Found #{services.length} services:"
7
+ services.each do |service|
8
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
9
+ puts "\t\t#{service.description}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,17 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListTemplateRecords
4
+ def execute(args, options={})
5
+ short_name = args.shift
6
+ template_records = TemplateRecord.all(short_name)
7
+ puts "Found #{template_records.length} records for #{short_name}"
8
+ template_records.each do |record|
9
+ extra = ["ttl:#{record.ttl}", "id:#{record.id}"]
10
+ extra << "prio:#{record.prio}" if record.record_type == "MX"
11
+ extra = "(#{extra.join(', ')})"
12
+ puts "\t#{record.name} (#{record.record_type})-> #{record.content} #{extra}"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end