1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Xml.Linq;
  4. using clempaul.Dreamhost.ResponseData;
  5.  
  6. namespace clempaul.Dreamhost
  7. {
  8.     public class DomainRequests
  9.     {
  10.         #region Constructor
  11.  
  12.         internal DomainRequests(DreamhostAPI api)
  13.         {
  14.             this.api = api;
  15.         }
  16.  
  17.         #endregion
  18.  
  19.         #region Internal Variables
  20.  
  21.         DreamhostAPI api;
  22.  
  23.         #endregion
  24.  
  25.         #region domain-list_domains
  26.  
  27.         public IEnumerable<Domain> ListDomains()
  28.         {
  29.             XDocument response = api.SendCommand("domain-list_domains");
  30.  
  31.             var domains = from data in response.Element("dreamhost").Elements("data")
  32.                           select new Domain
  33.                           {
  34.                               account_id = data.Element("account_id").AsString(),
  35.                               domain = data.Element("domain").AsString(),
  36.                               fastcgi = data.Element("fastcgi").AsBool(),
  37.                               home = data.Element("home").AsString(),
  38.                               hosting_type = data.Element("hosting_type").AsString(),
  39.                               outside_url = data.Element("outside_url").AsString(),
  40.                               passenger = data.Element("passenger").AsBool(),
  41.                               path = data.Element("path").AsString(),
  42.                               php = data.Element("php").AsString(),
  43.                               php_fcgid = data.Element("php_fcgid").AsBool(),
  44.                               security = data.Element("security").AsBool(),
  45.                               type = data.Element("type").AsString(),
  46.                               unique_ip = data.Element("unique_ip").AsString(),
  47.                               user = data.Element("user").AsString(),
  48.                               www_or_not = data.Element("www_or_not").AsString(),
  49.                               xcache = data.Element("xcache").AsBool()
  50.                           };
  51.  
  52.             return domains;
  53.         }
  54.  
  55.         #endregion
  56.  
  57.         #region domain-list_registrations
  58.  
  59.         public IEnumerable<DomainRegistration> ListRegistrations()
  60.         {
  61.             XDocument response = api.SendCommand("domain-list_registrations");
  62.  
  63.             var registrations = from data in response.Element("dreamhost").Elements("data")
  64.                                 select new DomainRegistration
  65.                                 {
  66.                                     account_id = data.Element("account_id").ToString(),
  67.                                     domain = data.Element("domain").ToString(),
  68.                                     expires = data.Element("expires").AsDateTime(),
  69.                                     created = data.Element("created").AsDateTime(),
  70.                                     modified = data.Element("modified").AsDateTime(),
  71.                                     autorenew = data.Element("autorenew").ToString(),
  72.                                     locked = data.Element("locked").AsBool(),
  73.                                     expired = data.Element("expired").AsBool(),
  74.                                     ns1 = data.Element("ns1").AsString(),
  75.                                     ns2 = data.Element("ns2").AsString(),
  76.                                     ns3 = data.Element("ns3").AsString(),
  77.                                     ns4 = data.Element("ns4").AsString(),
  78.                                     registrant = data.Element("registrant").AsString(),
  79.                                     registrant_org = data.Element("registrant_org").AsString(),
  80.                                     registrant_street1 = data.Element("registrant_street1").AsString(),
  81.                                     registrant_street2 = data.Element("registrant_street2").AsString(),
  82.                                     registrant_city = data.Element("registrant_city").AsString(),
  83.                                     registrant_state = data.Element("registrant_state").AsString(),
  84.                                     registrant_zip = data.Element("registrant_zip").AsString(),
  85.                                     registrant_country = data.Element("registrant_country").AsString(),
  86.                                     registrant_phone = data.Element("registrant_phone").AsString(),
  87.                                     registrant_fax = data.Element("registrant_fax").AsString(),
  88.                                     registrant_email = data.Element("registrant_email").AsString(),
  89.                                     tech = data.Element("tech").AsString(),
  90.                                     tech_org = data.Element("tech_org").AsString(),
  91.                                     tech_street1 = data.Element("tech_street1").AsString(),
  92.                                     tech_street2 = data.Element("tech_street2").AsString(),
  93.                                     tech_city = data.Element("tech_city").AsString(),
  94.                                     tech_state = data.Element("tech_state").AsString(),
  95.                                     tech_zip = data.Element("tech_zip").AsString(),
  96.                                     tech_country = data.Element("tech_country").AsString(),
  97.                                     tech_phone = data.Element("tech_phone").AsString(),
  98.                                     tech_fax = data.Element("tech_fax").AsString(),
  99.                                     tech_email = data.Element("tech_email").AsString(),
  100.                                     billing = data.Element("billing").AsString(),
  101.                                     billing_org = data.Element("billing_org").AsString(),
  102.                                     billing_street1 = data.Element("billing_street1").AsString(),
  103.                                     billing_street2 = data.Element("billing_street2").AsString(),
  104.                                     billing_city = data.Element("billing_city").AsString(),
  105.                                     billing_state = data.Element("billing_state").AsString(),
  106.                                     billing_zip = data.Element("billing_zip").AsString(),
  107.                                     billing_country = data.Element("billing_country").AsString(),
  108.                                     billing_phone = data.Element("billing_phone").AsString(),
  109.                                     billing_fax = data.Element("billing_fax").AsString(),
  110.                                     billing_email = data.Element("billing_email").AsString(),
  111.                                     admin = data.Element("admin").AsString(),
  112.                                     admin_org = data.Element("admin_org").AsString(),
  113.                                     admin_street1 = data.Element("admin_street1").AsString(),
  114.                                     admin_street2 = data.Element("admin_street2").AsString(),
  115.                                     admin_city = data.Element("admin_city").AsString(),
  116.                                     admin_state = data.Element("admin_state").AsString(),
  117.                                     admin_zip = data.Element("admin_zip").AsString(),
  118.                                     admin_country = data.Element("admin_country").AsString(),
  119.                                     admin_phone = data.Element("admin_phone").AsString(),
  120.                                     admin_fax = data.Element("admin_fax").AsString(),
  121.                                     admin_email = data.Element("admin_email").AsString()
  122.                                 };
  123.  
  124.             return registrations;
  125.         }
  126.  
  127.         #endregion
  128.     }
  129. }
  130.