dnsimple-ruby 1.4.1 → 1.5.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.
- checksums.yaml +7 -0
 - data/.gitignore +0 -3
 - data/.ruby-version +1 -1
 - data/.travis.yml +1 -0
 - data/CHANGELOG.md +8 -0
 - data/README.md +2 -4
 - data/dnsimple-ruby.gemspec +3 -6
 - data/features/README.md +9 -0
 - data/lib/dnsimple/certificate.rb +37 -36
 - data/lib/dnsimple/client.rb +7 -4
 - data/lib/dnsimple/contact.rb +49 -48
 - data/lib/dnsimple/domain.rb +79 -79
 - data/lib/dnsimple/extended_attribute.rb +1 -1
 - data/lib/dnsimple/record.rb +7 -12
 - data/lib/dnsimple/service.rb +2 -2
 - data/lib/dnsimple/template.rb +11 -17
 - data/lib/dnsimple/template_record.rb +4 -4
 - data/lib/dnsimple/transfer_order.rb +1 -1
 - data/lib/dnsimple/user.rb +6 -14
 - data/lib/dnsimple/version.rb +1 -1
 - data/spec/ci/.dnsimple.test +1 -1
 - data/spec/dnsimple/certificate_spec.rb +40 -30
 - data/spec/dnsimple/client_spec.rb +9 -9
 - data/spec/dnsimple/contact_spec.rb +34 -26
 - data/spec/dnsimple/domain_spec.rb +21 -74
 - data/spec/dnsimple/extended_attributes_spec.rb +42 -9
 - data/spec/dnsimple/record_spec.rb +35 -43
 - data/spec/dnsimple/template_spec.rb +27 -5
 - data/spec/dnsimple/user_spec.rb +22 -14
 - data/spec/files/certificates/index/success.http +19 -0
 - data/spec/files/certificates/show/notfound.http +17 -0
 - data/spec/files/certificates/show/success.http +19 -0
 - data/spec/files/contacts/show/notfound.http +17 -0
 - data/spec/files/contacts/show/success.http +19 -0
 - data/spec/files/domains/show/notfound.http +17 -0
 - data/spec/files/domains/show/success.http +19 -0
 - data/spec/files/extended_attributes/ca.http +19 -0
 - data/spec/files/extended_attributes/com.http +19 -0
 - data/spec/files/extended_attributes/success.http +19 -0
 - data/spec/files/records/index/success.http +19 -0
 - data/spec/files/records/show/notfound.http +17 -0
 - data/spec/files/records/show/success.http +19 -0
 - data/spec/files/templates/show/notfound.http +17 -0
 - data/spec/files/templates/show/success.http +19 -0
 - data/spec/files/users/me/success.http +19 -0
 - data/spec/spec_helper.rb +14 -17
 - data/spec/support/helpers.rb +15 -0
 - data/spec/support/webmock.rb +11 -0
 - metadata +65 -84
 - data/features/README +0 -12
 - data/fixtures/vcr_cassettes/DNSimple_Certificate/_all.yml +0 -57
 - data/fixtures/vcr_cassettes/DNSimple_Certificate/_purchase.yml +0 -57
 - data/fixtures/vcr_cassettes/DNSimple_Certificate/_submit.yml +0 -57
 - data/fixtures/vcr_cassettes/DNSimple_Contact/a_new_contact.yml +0 -50
 - data/fixtures/vcr_cassettes/DNSimple_Contact/an_existing_contact.yml +0 -50
 - data/fixtures/vcr_cassettes/DNSimple_Domain/_all.yml +0 -149
 - data/fixtures/vcr_cassettes/DNSimple_Domain/applying_templates.yml +0 -246
 - data/fixtures/vcr_cassettes/DNSimple_Domain/creating_a_new_domain.yml +0 -51
 - data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_id.yml +0 -51
 - data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_name.yml +0 -51
 - data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_a_new_registrant_contact.yml +0 -52
 - data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_an_existing_contact.yml +0 -52
 - data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_ca.yml +0 -273
 - data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_com.yml +0 -46
 - data/fixtures/vcr_cassettes/DNSimple_Record/_all.yml +0 -195
 - data/fixtures/vcr_cassettes/DNSimple_Record/creating_a_new_record.yml +0 -51
 - data/fixtures/vcr_cassettes/DNSimple_Record/find_a_record.yml +0 -51
 - data/fixtures/vcr_cassettes/DNSimple_Template/a_template.yml +0 -53
 - data/fixtures/vcr_cassettes/DNSimple_User/_me.yml +0 -49
 - data/spec/README +0 -10
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1ad2f0f53848ebf458ce24ef1c93ffcc13987d20
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 8dc6ab4a793415fa47675c1b32b98a9cdf8188e1
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 9047c85d1d90c5da44eacf36e79cd729e346efaed3defb34340bf482605d763bad9099ee2446af89787de2bb64149a51953f36bd61ae7d4743616f34a9d1a2eb
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: cde66935f2047f166573598bc7358d7785b659e0aedbec6693dda775186ed4418adba10b348b656e65a3eb889daf01ee90bafd399d247578377e331b48e880e1
         
     | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.ruby-version
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            ruby- 
     | 
| 
      
 1 
     | 
    
         
            +
            ruby-2.0
         
     | 
    
        data/.travis.yml
    CHANGED
    
    
    
        data/CHANGELOG.md
    CHANGED
    
    
    
        data/README.md
    CHANGED
    
    | 
         @@ -1,8 +1,6 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            # DNSimple Ruby Client
         
     | 
| 
      
 1 
     | 
    
         
            +
            # DNSimple Ruby Client  [](http://travis-ci.org/aetrion/dnsimple-ruby)
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            A Ruby command line utility and wrapper for the [DNSimple API]( 
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
            [](http://travis-ci.org/aetrion/dnsimple-ruby)
         
     | 
| 
      
 3 
     | 
    
         
            +
            A Ruby command line utility and wrapper for the [DNSimple API](http://developer.dnsimple.com/).
         
     | 
| 
       6 
4 
     | 
    
         | 
| 
       7 
5 
     | 
    
         
             
            [DNSimple](https://dnsimple.com/) provides DNS hosting
         
     | 
| 
       8 
6 
     | 
    
         
             
            and domain registration that is simple and friendly.
         
     | 
    
        data/dnsimple-ruby.gemspec
    CHANGED
    
    | 
         @@ -15,18 +15,15 @@ Gem::Specification.new do |s| 
     | 
|
| 
       15 
15 
     | 
    
         
             
              s.files            = `git ls-files`.split("\n")
         
     | 
| 
       16 
16 
     | 
    
         
             
              s.test_files       = `git ls-files -- {test,spec,features}/*`.split("\n")
         
     | 
| 
       17 
17 
     | 
    
         
             
              s.extra_rdoc_files = %w( README.md CHANGELOG.md LICENSE )
         
     | 
| 
       18 
     | 
    
         
            -
              s.executables      = `git ls-files -- bin/*`.split("\n").collect { |f|
         
     | 
| 
       19 
     | 
    
         
            -
                File.basename(f)
         
     | 
| 
       20 
     | 
    
         
            -
              }
         
     | 
| 
      
 18 
     | 
    
         
            +
              s.executables      = `git ls-files -- bin/*`.split("\n").collect { |f| File.basename(f) }
         
     | 
| 
       21 
19 
     | 
    
         | 
| 
       22 
     | 
    
         
            -
              s. 
     | 
| 
      
 20 
     | 
    
         
            +
              s.add_dependency  'httparty', RUBY_VERSION < "1.9.3" ? [">= 0.10", "< 0.12"] : "~> 0.12"
         
     | 
| 
       23 
21 
     | 
    
         | 
| 
       24 
22 
     | 
    
         
             
              s.add_development_dependency 'rake'
         
     | 
| 
       25 
23 
     | 
    
         
             
              s.add_development_dependency 'aruba'
         
     | 
| 
       26 
24 
     | 
    
         
             
              s.add_development_dependency 'cucumber'
         
     | 
| 
       27 
     | 
    
         
            -
              s.add_development_dependency 'fakeweb'
         
     | 
| 
       28 
25 
     | 
    
         
             
              s.add_development_dependency 'mocha'
         
     | 
| 
       29 
26 
     | 
    
         
             
              s.add_development_dependency 'rspec'
         
     | 
| 
       30 
     | 
    
         
            -
              s.add_development_dependency 'vcr'
         
     | 
| 
       31 
27 
     | 
    
         
             
              s.add_development_dependency 'yard'
         
     | 
| 
      
 28 
     | 
    
         
            +
              s.add_development_dependency 'webmock'
         
     | 
| 
       32 
29 
     | 
    
         
             
            end
         
     | 
    
        data/features/README.md
    ADDED
    
    | 
         @@ -0,0 +1,9 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Before running the DNSimple Ruby Client cucumber feature files, you must do the following:
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            1. If you haven't already go to https://sandbox.dnsimple.com and create an account. Activate your account to the Platinum level using the credit card number of "1".
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            2. Create a file in your home directory called .dnsimple.test and include the following:
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                    username: YOUR_USERNAME
         
     | 
| 
      
 8 
     | 
    
         
            +
                    password: YOUR_PASSWORD
         
     | 
| 
      
 9 
     | 
    
         
            +
                    base_uri: https://api.sandbox.dnsimple.com/
         
     | 
    
        data/lib/dnsimple/certificate.rb
    CHANGED
    
    | 
         @@ -14,57 +14,36 @@ module DNSimple 
     | 
|
| 
       14 
14 
     | 
    
         
             
                # The subdomain on the certificate
         
     | 
| 
       15 
15 
     | 
    
         
             
                attr_accessor :name
         
     | 
| 
       16 
16 
     | 
    
         | 
| 
       17 
     | 
    
         
            -
                # The private key, if DNSimple generated the Certificate Signing Request
         
     | 
| 
       18 
     | 
    
         
            -
                attr_accessor :private_key
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                # The SSL certificate, if it has been issued by the Certificate Authority
         
     | 
| 
       21 
     | 
    
         
            -
                attr_accessor :ssl_certificate
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
17 
     | 
    
         
             
                # The Certificate Signing Request
         
     | 
| 
       24 
18 
     | 
    
         
             
                attr_accessor :csr
         
     | 
| 
       25 
19 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                # The Certificate  
     | 
| 
       27 
     | 
    
         
            -
                attr_accessor : 
     | 
| 
       28 
     | 
    
         
            -
             
     | 
| 
       29 
     | 
    
         
            -
                # The date the Certificate order was placed
         
     | 
| 
       30 
     | 
    
         
            -
                attr_accessor :order_date
         
     | 
| 
      
 20 
     | 
    
         
            +
                # The SSL certificate, if it has been issued by the Certificate Authority
         
     | 
| 
      
 21 
     | 
    
         
            +
                attr_accessor :ssl_certificate
         
     | 
| 
       31 
22 
     | 
    
         | 
| 
       32 
     | 
    
         
            -
                # The  
     | 
| 
       33 
     | 
    
         
            -
                attr_accessor : 
     | 
| 
      
 23 
     | 
    
         
            +
                # The private key, if DNSimple generated the Certificate Signing Request
         
     | 
| 
      
 24 
     | 
    
         
            +
                attr_accessor :private_key
         
     | 
| 
       34 
25 
     | 
    
         | 
| 
       35 
26 
     | 
    
         
             
                # The approver email address
         
     | 
| 
       36 
27 
     | 
    
         
             
                attr_accessor :approver_email
         
     | 
| 
       37 
28 
     | 
    
         | 
| 
       38 
     | 
    
         
            -
                # An array of all emails that can be used to approve the certificate
         
     | 
| 
       39 
     | 
    
         
            -
                attr_accessor :available_approver_emails
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
29 
     | 
    
         
             
                # When the certificate was purchased
         
     | 
| 
       42 
30 
     | 
    
         
             
                attr_accessor :created_at
         
     | 
| 
       43 
31 
     | 
    
         | 
| 
       44 
32 
     | 
    
         
             
                # When the certificate was last updated
         
     | 
| 
       45 
33 
     | 
    
         
             
                attr_accessor :updated_at
         
     | 
| 
       46 
34 
     | 
    
         | 
| 
      
 35 
     | 
    
         
            +
                # An array of all emails that can be used to approve the certificate
         
     | 
| 
      
 36 
     | 
    
         
            +
                attr_accessor :available_approver_emails
         
     | 
| 
       47 
37 
     | 
    
         | 
| 
       48 
     | 
    
         
            -
                #  
     | 
| 
       49 
     | 
    
         
            -
                 
     | 
| 
       50 
     | 
    
         
            -
                def fqdn
         
     | 
| 
       51 
     | 
    
         
            -
                  [name, domain.name].delete_if { |p| p !~ DNSimple::BLANK_REGEX }.join(".")
         
     | 
| 
       52 
     | 
    
         
            -
                end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
                def submit(approver_email, options={})
         
     | 
| 
       55 
     | 
    
         
            -
                  raise DNSimple::Error, "Approver email is required" unless approver_email
         
     | 
| 
      
 38 
     | 
    
         
            +
                # The Certificate status
         
     | 
| 
      
 39 
     | 
    
         
            +
                attr_accessor :certificate_status
         
     | 
| 
       56 
40 
     | 
    
         | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
      
 41 
     | 
    
         
            +
                # The date the Certificate order was placed
         
     | 
| 
      
 42 
     | 
    
         
            +
                attr_accessor :order_date
         
     | 
| 
       58 
43 
     | 
    
         | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
      
 44 
     | 
    
         
            +
                # The date the Certificate will expire
         
     | 
| 
      
 45 
     | 
    
         
            +
                attr_accessor :expiration_date
         
     | 
| 
       60 
46 
     | 
    
         | 
| 
       61 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       62 
     | 
    
         
            -
                  when 200
         
     | 
| 
       63 
     | 
    
         
            -
                    Certificate.new({ :domain => domain }.merge(response["certificate"]))
         
     | 
| 
       64 
     | 
    
         
            -
                  else
         
     | 
| 
       65 
     | 
    
         
            -
                    raise RequestError.new("Error submitting certificate", response)
         
     | 
| 
       66 
     | 
    
         
            -
                  end
         
     | 
| 
       67 
     | 
    
         
            -
                end
         
     | 
| 
       68 
47 
     | 
    
         | 
| 
       69 
48 
     | 
    
         
             
                # Purchase a certificate under the given domain with the given name. The
         
     | 
| 
       70 
49 
     | 
    
         
             
                # name will be appended to the domain name, and thus should only be the
         
     | 
| 
         @@ -86,7 +65,7 @@ module DNSimple 
     | 
|
| 
       86 
65 
     | 
    
         | 
| 
       87 
66 
     | 
    
         
             
                  options.merge!({:body => {:certificate => certificate_hash}})
         
     | 
| 
       88 
67 
     | 
    
         | 
| 
       89 
     | 
    
         
            -
                  response = DNSimple::Client.post("domains/#{domain.name}/certificates", options)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  response = DNSimple::Client.post("/v1/domains/#{domain.name}/certificates", options)
         
     | 
| 
       90 
69 
     | 
    
         | 
| 
       91 
70 
     | 
    
         
             
                  case response.code
         
     | 
| 
       92 
71 
     | 
    
         
             
                  when 201
         
     | 
| 
         @@ -100,7 +79,7 @@ module DNSimple 
     | 
|
| 
       100 
79 
     | 
    
         | 
| 
       101 
80 
     | 
    
         
             
                # Get an array of all certificates for the given domain.
         
     | 
| 
       102 
81 
     | 
    
         
             
                def self.all(domain, options={})
         
     | 
| 
       103 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{domain.name}/certificates", options)
         
     | 
| 
      
 82 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{domain.name}/certificates", options)
         
     | 
| 
       104 
83 
     | 
    
         | 
| 
       105 
84 
     | 
    
         
             
                  case response.code
         
     | 
| 
       106 
85 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -112,7 +91,7 @@ module DNSimple 
     | 
|
| 
       112 
91 
     | 
    
         | 
| 
       113 
92 
     | 
    
         
             
                # Find a specific certificate for the given domain.
         
     | 
| 
       114 
93 
     | 
    
         
             
                def self.find(domain, id, options = {})
         
     | 
| 
       115 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{domain.name}/certificates/#{id}", options)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{domain.name}/certificates/#{id}", options)
         
     | 
| 
       116 
95 
     | 
    
         | 
| 
       117 
96 
     | 
    
         
             
                  case response.code
         
     | 
| 
       118 
97 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -124,5 +103,27 @@ module DNSimple 
     | 
|
| 
       124 
103 
     | 
    
         
             
                  end
         
     | 
| 
       125 
104 
     | 
    
         
             
                end
         
     | 
| 
       126 
105 
     | 
    
         | 
| 
      
 106 
     | 
    
         
            +
             
     | 
| 
      
 107 
     | 
    
         
            +
                # Get the fully-qualified domain name for the certificate. This is the
         
     | 
| 
      
 108 
     | 
    
         
            +
                # domain.name joined with the certificate name, separated by a period.
         
     | 
| 
      
 109 
     | 
    
         
            +
                def fqdn
         
     | 
| 
      
 110 
     | 
    
         
            +
                  [name, domain.name].delete_if { |p| p !~ DNSimple::BLANK_REGEX }.join(".")
         
     | 
| 
      
 111 
     | 
    
         
            +
                end
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                def submit(approver_email, options={})
         
     | 
| 
      
 114 
     | 
    
         
            +
                  raise DNSimple::Error, "Approver email is required" unless approver_email
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                  options.merge!(:body => {:certificate => {:approver_email => approver_email}})
         
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
                  response = DNSimple::Client.put("/v1/domains/#{domain.name}/certificates/#{id}/submit", options)
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 121 
     | 
    
         
            +
                    when 200
         
     | 
| 
      
 122 
     | 
    
         
            +
                      Certificate.new({ :domain => domain }.merge(response["certificate"]))
         
     | 
| 
      
 123 
     | 
    
         
            +
                    else
         
     | 
| 
      
 124 
     | 
    
         
            +
                      raise RequestError.new("Error submitting certificate", response)
         
     | 
| 
      
 125 
     | 
    
         
            +
                  end
         
     | 
| 
      
 126 
     | 
    
         
            +
                end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
       127 
128 
     | 
    
         
             
              end
         
     | 
| 
       128 
129 
     | 
    
         
             
            end
         
     | 
    
        data/lib/dnsimple/client.rb
    CHANGED
    
    | 
         @@ -3,6 +3,9 @@ require 'yaml' 
     | 
|
| 
       3 
3 
     | 
    
         
             
            module DNSimple
         
     | 
| 
       4 
4 
     | 
    
         
             
              class Client
         
     | 
| 
       5 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
                API_BASE_URI = "https://api.dnsimple.com/"
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
       6 
9 
     | 
    
         
             
                def self.debug?
         
     | 
| 
       7 
10 
     | 
    
         
             
                  @debug
         
     | 
| 
       8 
11 
     | 
    
         
             
                end
         
     | 
| 
         @@ -39,7 +42,7 @@ module DNSimple 
     | 
|
| 
       39 
42 
     | 
    
         
             
                #
         
     | 
| 
       40 
43 
     | 
    
         
             
                # @return [String] The qualified API base uri.
         
     | 
| 
       41 
44 
     | 
    
         
             
                def self.base_uri
         
     | 
| 
       42 
     | 
    
         
            -
                  @base_uri ||=  
     | 
| 
      
 45 
     | 
    
         
            +
                  @base_uri ||= API_BASE_URI.chomp("/")
         
     | 
| 
       43 
46 
     | 
    
         
             
                end
         
     | 
| 
       44 
47 
     | 
    
         | 
| 
       45 
48 
     | 
    
         
             
                # Sets the qualified API base uri.
         
     | 
| 
         @@ -67,13 +70,13 @@ module DNSimple 
     | 
|
| 
       67 
70 
     | 
    
         | 
| 
       68 
71 
     | 
    
         
             
                def self.load_credentials(path = config_path)
         
     | 
| 
       69 
72 
     | 
    
         
             
                  begin
         
     | 
| 
       70 
     | 
    
         
            -
                    credentials = YAML. 
     | 
| 
      
 73 
     | 
    
         
            +
                    credentials = YAML.load_file(File.expand_path(path))
         
     | 
| 
       71 
74 
     | 
    
         
             
                    self.username   ||= credentials['username']
         
     | 
| 
       72 
75 
     | 
    
         
             
                    self.password   ||= credentials['password']
         
     | 
| 
       73 
76 
     | 
    
         
             
                    self.api_token  ||= credentials['api_token']
         
     | 
| 
       74 
77 
     | 
    
         
             
                    self.base_uri     = credentials['site']       if credentials['site']
         
     | 
| 
       75 
78 
     | 
    
         
             
                    self.base_uri     = credentials['base_uri']   if credentials['base_uri']
         
     | 
| 
       76 
     | 
    
         
            -
                    self.http_proxy   = { :addr => credentials['proxy_addr'], :port => credentials['proxy_port'] }
         
     | 
| 
      
 79 
     | 
    
         
            +
                    self.http_proxy   = { :addr => credentials['proxy_addr'], :port => credentials['proxy_port'] } if credentials['proxy_addr'] || credentials['proxy_port']
         
     | 
| 
       77 
80 
     | 
    
         
             
                    @credentials_loaded = true
         
     | 
| 
       78 
81 
     | 
    
         
             
                    puts "Credentials loaded from #{path}"
         
     | 
| 
       79 
82 
     | 
    
         
             
                  rescue => error
         
     | 
| 
         @@ -127,7 +130,7 @@ module DNSimple 
     | 
|
| 
       127 
130 
     | 
    
         
             
                end
         
     | 
| 
       128 
131 
     | 
    
         | 
| 
       129 
132 
     | 
    
         
             
                def self.request(method, path, options)
         
     | 
| 
       130 
     | 
    
         
            -
                  response = HTTParty.send(method, "#{base_uri} 
     | 
| 
      
 133 
     | 
    
         
            +
                  response = HTTParty.send(method, "#{base_uri}#{path}",
         
     | 
| 
       131 
134 
     | 
    
         
             
                    standard_options.merge(options))
         
     | 
| 
       132 
135 
     | 
    
         | 
| 
       133 
136 
     | 
    
         
             
                  if response.code == 401
         
     | 
    
        data/lib/dnsimple/contact.rb
    CHANGED
    
    | 
         @@ -15,19 +15,30 @@ module DNSimple 
     | 
|
| 
       15 
15 
     | 
    
         
             
                # The contact ID in DNSimple
         
     | 
| 
       16 
16 
     | 
    
         
             
                attr_accessor :id
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
                # The name of the organization in which the contact works
         
     | 
| 
       19 
     | 
    
         
            -
                # (may be omitted)
         
     | 
| 
       20 
     | 
    
         
            -
                attr_accessor :organization_name
         
     | 
| 
       21 
     | 
    
         
            -
             
     | 
| 
       22 
18 
     | 
    
         
             
                # The contact first name
         
     | 
| 
       23 
19 
     | 
    
         
             
                attr_accessor :first_name
         
     | 
| 
       24 
20 
     | 
    
         | 
| 
       25 
21 
     | 
    
         
             
                # The contact last name
         
     | 
| 
       26 
22 
     | 
    
         
             
                attr_accessor :last_name
         
     | 
| 
       27 
23 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
                # The contact's job title 
     | 
| 
      
 24 
     | 
    
         
            +
                # The contact's job title
         
     | 
| 
       29 
25 
     | 
    
         
             
                attr_accessor :job_title
         
     | 
| 
       30 
26 
     | 
    
         | 
| 
      
 27 
     | 
    
         
            +
                # The name of the organization in which the contact works
         
     | 
| 
      
 28 
     | 
    
         
            +
                attr_accessor :organization_name
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                # The contact email address
         
     | 
| 
      
 31 
     | 
    
         
            +
                attr_accessor :email_address
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                # The contact phone number
         
     | 
| 
      
 34 
     | 
    
         
            +
                attr_accessor :phone
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                # The contact phone extension (may be omitted)
         
     | 
| 
      
 37 
     | 
    
         
            +
                attr_accessor :phone_ext
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                # The contact fax number (may be omitted)
         
     | 
| 
      
 40 
     | 
    
         
            +
                attr_accessor :fax
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
       31 
42 
     | 
    
         
             
                # The contact street address
         
     | 
| 
       32 
43 
     | 
    
         
             
                attr_accessor :address1
         
     | 
| 
       33 
44 
     | 
    
         | 
| 
         @@ -46,52 +57,12 @@ module DNSimple 
     | 
|
| 
       46 
57 
     | 
    
         
             
                # The contact country (as a 2-character country code)
         
     | 
| 
       47 
58 
     | 
    
         
             
                attr_accessor :country
         
     | 
| 
       48 
59 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                # The contact email address
         
     | 
| 
       50 
     | 
    
         
            -
                attr_accessor :email_address
         
     | 
| 
       51 
     | 
    
         
            -
             
     | 
| 
       52 
     | 
    
         
            -
                # The contact phone number
         
     | 
| 
       53 
     | 
    
         
            -
                attr_accessor :phone
         
     | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
       55 
     | 
    
         
            -
                # The contact phone extension (may be omitted)
         
     | 
| 
       56 
     | 
    
         
            -
                attr_accessor :phone_ext
         
     | 
| 
       57 
     | 
    
         
            -
             
     | 
| 
       58 
     | 
    
         
            -
                # The contact fax number (may be omitted)
         
     | 
| 
       59 
     | 
    
         
            -
                attr_accessor :fax
         
     | 
| 
       60 
     | 
    
         
            -
             
     | 
| 
       61 
60 
     | 
    
         
             
                # When the contact was created in DNSimple
         
     | 
| 
       62 
61 
     | 
    
         
             
                attr_accessor :created_at
         
     | 
| 
       63 
62 
     | 
    
         | 
| 
       64 
63 
     | 
    
         
             
                # When the contact was last updated in DNSimple
         
     | 
| 
       65 
64 
     | 
    
         
             
                attr_accessor :updated_at
         
     | 
| 
       66 
65 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                def name
         
     | 
| 
       68 
     | 
    
         
            -
                  [first_name, last_name].join(' ')
         
     | 
| 
       69 
     | 
    
         
            -
                end
         
     | 
| 
       70 
     | 
    
         
            -
             
     | 
| 
       71 
     | 
    
         
            -
                def save(options={})
         
     | 
| 
       72 
     | 
    
         
            -
                  contact_hash = {}
         
     | 
| 
       73 
     | 
    
         
            -
                  %w(first_name last_name organization_name job_title address1 address2 city
         
     | 
| 
       74 
     | 
    
         
            -
                  state_province postal_code country email_address phone phone_ext fax).each do |attribute|
         
     | 
| 
       75 
     | 
    
         
            -
                    contact_hash[DNSimple::Contact.resolve(attribute)] = self.send(attribute)
         
     | 
| 
       76 
     | 
    
         
            -
                  end
         
     | 
| 
       77 
     | 
    
         
            -
             
     | 
| 
       78 
     | 
    
         
            -
                  options.merge!({:body => {:contact => contact_hash}})
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
                  response = DNSimple::Client.put("contacts/#{id}", options)
         
     | 
| 
       81 
     | 
    
         
            -
             
     | 
| 
       82 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       83 
     | 
    
         
            -
                  when 200
         
     | 
| 
       84 
     | 
    
         
            -
                    return self
         
     | 
| 
       85 
     | 
    
         
            -
                  else
         
     | 
| 
       86 
     | 
    
         
            -
                    raise RequestError.new("Error updating contact", response)
         
     | 
| 
       87 
     | 
    
         
            -
                  end
         
     | 
| 
       88 
     | 
    
         
            -
                end
         
     | 
| 
       89 
     | 
    
         
            -
             
     | 
| 
       90 
     | 
    
         
            -
                # Delete the contact from DNSimple. WARNING: this cannot be undone.
         
     | 
| 
       91 
     | 
    
         
            -
                def delete(options={})
         
     | 
| 
       92 
     | 
    
         
            -
                  DNSimple::Client.delete("contacts/#{id}", options)
         
     | 
| 
       93 
     | 
    
         
            -
                end
         
     | 
| 
       94 
     | 
    
         
            -
                alias :destroy :delete
         
     | 
| 
       95 
66 
     | 
    
         | 
| 
       96 
67 
     | 
    
         
             
                # Map an aliased field name to it's real name. For example, if you
         
     | 
| 
       97 
68 
     | 
    
         
             
                # pass "first" it will be resolved to "first_name", "email" is resolved
         
     | 
| 
         @@ -115,7 +86,7 @@ module DNSimple 
     | 
|
| 
       115 
86 
     | 
    
         
             
                  contact_hash = resolve_attributes(attributes)
         
     | 
| 
       116 
87 
     | 
    
         | 
| 
       117 
88 
     | 
    
         
             
                  options.merge!({:body => {:contact => contact_hash}})
         
     | 
| 
       118 
     | 
    
         
            -
                  response = DNSimple::Client.post("contacts", options)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  response = DNSimple::Client.post("/v1/contacts", options)
         
     | 
| 
       119 
90 
     | 
    
         | 
| 
       120 
91 
     | 
    
         
             
                  case response.code
         
     | 
| 
       121 
92 
     | 
    
         
             
                  when 201
         
     | 
| 
         @@ -126,7 +97,7 @@ module DNSimple 
     | 
|
| 
       126 
97 
     | 
    
         
             
                end
         
     | 
| 
       127 
98 
     | 
    
         | 
| 
       128 
99 
     | 
    
         
             
                def self.find(id, options={})
         
     | 
| 
       129 
     | 
    
         
            -
                  response = DNSimple::Client.get("contacts/#{id}", options)
         
     | 
| 
      
 100 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/contacts/#{id}", options)
         
     | 
| 
       130 
101 
     | 
    
         | 
| 
       131 
102 
     | 
    
         
             
                  case response.code
         
     | 
| 
       132 
103 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -139,7 +110,7 @@ module DNSimple 
     | 
|
| 
       139 
110 
     | 
    
         
             
                end
         
     | 
| 
       140 
111 
     | 
    
         | 
| 
       141 
112 
     | 
    
         
             
                def self.all(options={})
         
     | 
| 
       142 
     | 
    
         
            -
                  response = DNSimple::Client.get("contacts", options)
         
     | 
| 
      
 113 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/contacts", options)
         
     | 
| 
       143 
114 
     | 
    
         | 
| 
       144 
115 
     | 
    
         
             
                  case response.code
         
     | 
| 
       145 
116 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -149,5 +120,35 @@ module DNSimple 
     | 
|
| 
       149 
120 
     | 
    
         
             
                  end
         
     | 
| 
       150 
121 
     | 
    
         
             
                end
         
     | 
| 
       151 
122 
     | 
    
         | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                def name
         
     | 
| 
      
 125 
     | 
    
         
            +
                  [first_name, last_name].join(' ')
         
     | 
| 
      
 126 
     | 
    
         
            +
                end
         
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
                def save(options={})
         
     | 
| 
      
 129 
     | 
    
         
            +
                  contact_hash = {}
         
     | 
| 
      
 130 
     | 
    
         
            +
                  %w(first_name last_name organization_name job_title address1 address2 city
         
     | 
| 
      
 131 
     | 
    
         
            +
                  state_province postal_code country email_address phone phone_ext fax).each do |attribute|
         
     | 
| 
      
 132 
     | 
    
         
            +
                    contact_hash[DNSimple::Contact.resolve(attribute)] = self.send(attribute)
         
     | 
| 
      
 133 
     | 
    
         
            +
                  end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                  options.merge!({:body => {:contact => contact_hash}})
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
                  response = DNSimple::Client.put("/v1/contacts/#{id}", options)
         
     | 
| 
      
 138 
     | 
    
         
            +
             
     | 
| 
      
 139 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 140 
     | 
    
         
            +
                    when 200
         
     | 
| 
      
 141 
     | 
    
         
            +
                      return self
         
     | 
| 
      
 142 
     | 
    
         
            +
                    else
         
     | 
| 
      
 143 
     | 
    
         
            +
                      raise RequestError.new("Error updating contact", response)
         
     | 
| 
      
 144 
     | 
    
         
            +
                  end
         
     | 
| 
      
 145 
     | 
    
         
            +
                end
         
     | 
| 
      
 146 
     | 
    
         
            +
             
     | 
| 
      
 147 
     | 
    
         
            +
                # Delete the contact from DNSimple. WARNING: this cannot be undone.
         
     | 
| 
      
 148 
     | 
    
         
            +
                def delete(options={})
         
     | 
| 
      
 149 
     | 
    
         
            +
                  DNSimple::Client.delete("/v1/contacts/#{id}", options)
         
     | 
| 
      
 150 
     | 
    
         
            +
                end
         
     | 
| 
      
 151 
     | 
    
         
            +
                alias :destroy :delete
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       152 
153 
     | 
    
         
             
              end
         
     | 
| 
       153 
154 
     | 
    
         
             
            end
         
     | 
    
        data/lib/dnsimple/domain.rb
    CHANGED
    
    | 
         @@ -1,7 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module DNSimple
         
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
              # Represents a single domain.
         
     | 
| 
       4 
2 
     | 
    
         
             
              class Domain < Base
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
       5 
4 
     | 
    
         
             
                # The domain ID in DNSimple
         
     | 
| 
       6 
5 
     | 
    
         
             
                attr_accessor :id
         
     | 
| 
       7 
6 
     | 
    
         | 
| 
         @@ -17,80 +16,10 @@ module DNSimple 
     | 
|
| 
       17 
16 
     | 
    
         
             
                # The current known name server status
         
     | 
| 
       18 
17 
     | 
    
         
             
                attr_accessor :name_server_status
         
     | 
| 
       19 
18 
     | 
    
         | 
| 
       20 
     | 
    
         
            -
                # Delete the domain from DNSimple. WARNING: this cannot
         
     | 
| 
       21 
     | 
    
         
            -
                # be undone.
         
     | 
| 
       22 
     | 
    
         
            -
                def delete(options={})
         
     | 
| 
       23 
     | 
    
         
            -
                  DNSimple::Client.delete("domains/#{name}", options)
         
     | 
| 
       24 
     | 
    
         
            -
                end
         
     | 
| 
       25 
     | 
    
         
            -
                alias :destroy :delete
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                # Apply the given named template to the domain. This will add
         
     | 
| 
       28 
     | 
    
         
            -
                # all of the records in the template to the domain.
         
     | 
| 
       29 
     | 
    
         
            -
                def apply(template, options={})
         
     | 
| 
       30 
     | 
    
         
            -
                  options.merge!(:body => {})
         
     | 
| 
       31 
     | 
    
         
            -
                  template = resolve_template(template)
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                  DNSimple::Client.post("domains/#{name}/templates/#{template.id}/apply", options)
         
     | 
| 
       34 
     | 
    
         
            -
                end
         
     | 
| 
       35 
     | 
    
         
            -
             
     | 
| 
       36 
     | 
    
         
            -
                #:nodoc:
         
     | 
| 
       37 
     | 
    
         
            -
                def resolve_template(template)
         
     | 
| 
       38 
     | 
    
         
            -
                  case template
         
     | 
| 
       39 
     | 
    
         
            -
                  when DNSimple::Template
         
     | 
| 
       40 
     | 
    
         
            -
                    template
         
     | 
| 
       41 
     | 
    
         
            -
                  else
         
     | 
| 
       42 
     | 
    
         
            -
                    DNSimple::Template.find(template)
         
     | 
| 
       43 
     | 
    
         
            -
                  end
         
     | 
| 
       44 
     | 
    
         
            -
                end
         
     | 
| 
       45 
     | 
    
         
            -
             
     | 
| 
       46 
     | 
    
         
            -
                def applied_services(options={})
         
     | 
| 
       47 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{name}/applied_services", options)
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       50 
     | 
    
         
            -
                  when 200
         
     | 
| 
       51 
     | 
    
         
            -
                    response.map { |r| DNSimple::Service.new(r["service"]) }
         
     | 
| 
       52 
     | 
    
         
            -
                  else
         
     | 
| 
       53 
     | 
    
         
            -
                    raise RequestError.new("Error listing applied services", response)
         
     | 
| 
       54 
     | 
    
         
            -
                  end
         
     | 
| 
       55 
     | 
    
         
            -
                end
         
     | 
| 
       56 
     | 
    
         
            -
             
     | 
| 
       57 
     | 
    
         
            -
                def available_services(options={})
         
     | 
| 
       58 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{name}/available_services", options)
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       61 
     | 
    
         
            -
                  when 200
         
     | 
| 
       62 
     | 
    
         
            -
                    response.map { |r| DNSimple::Service.new(r["service"]) }
         
     | 
| 
       63 
     | 
    
         
            -
                  else
         
     | 
| 
       64 
     | 
    
         
            -
                    raise RequestError.new("Error listing available services", response)
         
     | 
| 
       65 
     | 
    
         
            -
                  end
         
     | 
| 
       66 
     | 
    
         
            -
                end
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                def add_service(id_or_short_name, options={})
         
     | 
| 
       69 
     | 
    
         
            -
                  options.merge!(:body => {:service => {:id => id_or_short_name}})
         
     | 
| 
       70 
     | 
    
         
            -
                  response = DNSimple::Client.post("domains/#{name}/applied_services", options)
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       73 
     | 
    
         
            -
                  when 200
         
     | 
| 
       74 
     | 
    
         
            -
                    true
         
     | 
| 
       75 
     | 
    
         
            -
                  else
         
     | 
| 
       76 
     | 
    
         
            -
                    raise RequestError.new("Error adding service", response)
         
     | 
| 
       77 
     | 
    
         
            -
                  end
         
     | 
| 
       78 
     | 
    
         
            -
                end
         
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
                def remove_service(id, options={})
         
     | 
| 
       81 
     | 
    
         
            -
                  response = DNSimple::Client.delete("domains/#{name}/applied_services/#{id}", options)
         
     | 
| 
       82 
     | 
    
         
            -
             
     | 
| 
       83 
     | 
    
         
            -
                  case response.code
         
     | 
| 
       84 
     | 
    
         
            -
                  when 200
         
     | 
| 
       85 
     | 
    
         
            -
                    true
         
     | 
| 
       86 
     | 
    
         
            -
                  else
         
     | 
| 
       87 
     | 
    
         
            -
                    raise RequestError.new("Error removing service", response)
         
     | 
| 
       88 
     | 
    
         
            -
                  end
         
     | 
| 
       89 
     | 
    
         
            -
                end
         
     | 
| 
       90 
19 
     | 
    
         | 
| 
       91 
20 
     | 
    
         
             
                # Check the availability of a name
         
     | 
| 
       92 
21 
     | 
    
         
             
                def self.check(name, options={})
         
     | 
| 
       93 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{name}/check", options)
         
     | 
| 
      
 22 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{name}/check", options)
         
     | 
| 
       94 
23 
     | 
    
         | 
| 
       95 
24 
     | 
    
         
             
                  case response.code
         
     | 
| 
       96 
25 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -108,7 +37,7 @@ module DNSimple 
     | 
|
| 
       108 
37 
     | 
    
         
             
                def self.create(name, options={})
         
     | 
| 
       109 
38 
     | 
    
         
             
                  options.merge!({:body => {:domain => {:name => name}}})
         
     | 
| 
       110 
39 
     | 
    
         | 
| 
       111 
     | 
    
         
            -
                  response = DNSimple::Client.post("domains", options)
         
     | 
| 
      
 40 
     | 
    
         
            +
                  response = DNSimple::Client.post("/v1/domains", options)
         
     | 
| 
       112 
41 
     | 
    
         | 
| 
       113 
42 
     | 
    
         
             
                  case response.code
         
     | 
| 
       114 
43 
     | 
    
         
             
                  when 201
         
     | 
| 
         @@ -131,7 +60,7 @@ module DNSimple 
     | 
|
| 
       131 
60 
     | 
    
         
             
                  body.merge!(:extended_attribute => extended_attributes)
         
     | 
| 
       132 
61 
     | 
    
         
             
                  options.merge!({:body => body})
         
     | 
| 
       133 
62 
     | 
    
         | 
| 
       134 
     | 
    
         
            -
                  response = DNSimple::Client.post("domain_registrations", options)
         
     | 
| 
      
 63 
     | 
    
         
            +
                  response = DNSimple::Client.post("/v1/domain_registrations", options)
         
     | 
| 
       135 
64 
     | 
    
         | 
| 
       136 
65 
     | 
    
         
             
                  case response.code
         
     | 
| 
       137 
66 
     | 
    
         
             
                  when 201
         
     | 
| 
         @@ -143,9 +72,8 @@ module DNSimple 
     | 
|
| 
       143 
72 
     | 
    
         | 
| 
       144 
73 
     | 
    
         
             
                # Find a specific domain in the account either by the numeric ID
         
     | 
| 
       145 
74 
     | 
    
         
             
                # or by the fully-qualified domain name.
         
     | 
| 
       146 
     | 
    
         
            -
                def self.find( 
     | 
| 
       147 
     | 
    
         
            -
                   
     | 
| 
       148 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains/#{id}", options)
         
     | 
| 
      
 75 
     | 
    
         
            +
                def self.find(id, options={})
         
     | 
| 
      
 76 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{id}", options)
         
     | 
| 
       149 
77 
     | 
    
         | 
| 
       150 
78 
     | 
    
         
             
                  case response.code
         
     | 
| 
       151 
79 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -159,7 +87,7 @@ module DNSimple 
     | 
|
| 
       159 
87 
     | 
    
         | 
| 
       160 
88 
     | 
    
         
             
                # Get all domains for the account.
         
     | 
| 
       161 
89 
     | 
    
         
             
                def self.all(options={})
         
     | 
| 
       162 
     | 
    
         
            -
                  response = DNSimple::Client.get("domains", options)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains", options)
         
     | 
| 
       163 
91 
     | 
    
         | 
| 
       164 
92 
     | 
    
         
             
                  case response.code
         
     | 
| 
       165 
93 
     | 
    
         
             
                  when 200
         
     | 
| 
         @@ -169,5 +97,77 @@ module DNSimple 
     | 
|
| 
       169 
97 
     | 
    
         
             
                  end
         
     | 
| 
       170 
98 
     | 
    
         
             
                end
         
     | 
| 
       171 
99 
     | 
    
         | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
                # Delete the domain from DNSimple. WARNING: this cannot
         
     | 
| 
      
 102 
     | 
    
         
            +
                # be undone.
         
     | 
| 
      
 103 
     | 
    
         
            +
                def delete(options={})
         
     | 
| 
      
 104 
     | 
    
         
            +
                  DNSimple::Client.delete("/v1/domains/#{name}", options)
         
     | 
| 
      
 105 
     | 
    
         
            +
                end
         
     | 
| 
      
 106 
     | 
    
         
            +
                alias :destroy :delete
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
                # Apply the given named template to the domain. This will add
         
     | 
| 
      
 109 
     | 
    
         
            +
                # all of the records in the template to the domain.
         
     | 
| 
      
 110 
     | 
    
         
            +
                def apply(template, options={})
         
     | 
| 
      
 111 
     | 
    
         
            +
                  options.merge!(:body => {})
         
     | 
| 
      
 112 
     | 
    
         
            +
                  template = resolve_template(template)
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                  DNSimple::Client.post("/v1/domains/#{name}/templates/#{template.id}/apply", options)
         
     | 
| 
      
 115 
     | 
    
         
            +
                end
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                #:nodoc:
         
     | 
| 
      
 118 
     | 
    
         
            +
                def resolve_template(template)
         
     | 
| 
      
 119 
     | 
    
         
            +
                  case template
         
     | 
| 
      
 120 
     | 
    
         
            +
                  when DNSimple::Template
         
     | 
| 
      
 121 
     | 
    
         
            +
                    template
         
     | 
| 
      
 122 
     | 
    
         
            +
                  else
         
     | 
| 
      
 123 
     | 
    
         
            +
                    DNSimple::Template.find(template)
         
     | 
| 
      
 124 
     | 
    
         
            +
                  end
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                def applied_services(options={})
         
     | 
| 
      
 128 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{name}/applied_services", options)
         
     | 
| 
      
 129 
     | 
    
         
            +
             
     | 
| 
      
 130 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 131 
     | 
    
         
            +
                  when 200
         
     | 
| 
      
 132 
     | 
    
         
            +
                    response.map { |r| DNSimple::Service.new(r["service"]) }
         
     | 
| 
      
 133 
     | 
    
         
            +
                  else
         
     | 
| 
      
 134 
     | 
    
         
            +
                    raise RequestError.new("Error listing applied services", response)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  end
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                def available_services(options={})
         
     | 
| 
      
 139 
     | 
    
         
            +
                  response = DNSimple::Client.get("/v1/domains/#{name}/available_services", options)
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 142 
     | 
    
         
            +
                  when 200
         
     | 
| 
      
 143 
     | 
    
         
            +
                    response.map { |r| DNSimple::Service.new(r["service"]) }
         
     | 
| 
      
 144 
     | 
    
         
            +
                  else
         
     | 
| 
      
 145 
     | 
    
         
            +
                    raise RequestError.new("Error listing available services", response)
         
     | 
| 
      
 146 
     | 
    
         
            +
                  end
         
     | 
| 
      
 147 
     | 
    
         
            +
                end
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                def add_service(id_or_short_name, options={})
         
     | 
| 
      
 150 
     | 
    
         
            +
                  options.merge!(:body => {:service => {:id => id_or_short_name}})
         
     | 
| 
      
 151 
     | 
    
         
            +
                  response = DNSimple::Client.post("/v1/domains/#{name}/applied_services", options)
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 154 
     | 
    
         
            +
                  when 200
         
     | 
| 
      
 155 
     | 
    
         
            +
                    true
         
     | 
| 
      
 156 
     | 
    
         
            +
                  else
         
     | 
| 
      
 157 
     | 
    
         
            +
                    raise RequestError.new("Error adding service", response)
         
     | 
| 
      
 158 
     | 
    
         
            +
                  end
         
     | 
| 
      
 159 
     | 
    
         
            +
                end
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                def remove_service(id, options={})
         
     | 
| 
      
 162 
     | 
    
         
            +
                  response = DNSimple::Client.delete("/v1/domains/#{name}/applied_services/#{id}", options)
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                  case response.code
         
     | 
| 
      
 165 
     | 
    
         
            +
                  when 200
         
     | 
| 
      
 166 
     | 
    
         
            +
                    true
         
     | 
| 
      
 167 
     | 
    
         
            +
                  else
         
     | 
| 
      
 168 
     | 
    
         
            +
                    raise RequestError.new("Error removing service", response)
         
     | 
| 
      
 169 
     | 
    
         
            +
                  end
         
     | 
| 
      
 170 
     | 
    
         
            +
                end
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
       172 
172 
     | 
    
         
             
              end
         
     | 
| 
       173 
173 
     | 
    
         
             
            end
         
     |