Source code for pontoon.lib.Domain

# -*- coding: utf-8 -*-
from .Record import Record
from .baseapi import BaseAPI, GET, POST, DELETE


[docs]class Domain(BaseAPI): def __init__(self, *args, **kwargs): self.name = None self.ttl = None self.zone_file = None self.ip_address = None super(Domain, self).__init__(*args, **kwargs) @classmethod
[docs] def get_object(cls, api_token, domain_name, mocked): """ Class method that will return a Domain object by ID. """ domain = cls(token=api_token, name=domain_name, mocked=mocked) domain.mock_data = "domains/single.json" domain.load() return domain
[docs] def load(self): # URL https://api.digitalocean.com/v2/domains domains = self.get_data("domains/%s" % self.name) domain = domains['domain'] for attr in domain.keys(): setattr(self, attr, domain[attr])
[docs] def destroy(self): """ Destroy the domain by name """ self.mock_status = 204 # URL https://api.digitalocean.com/v2/domains/[NAME] return self.get_data("domains/%s" % self.name, type=DELETE)
[docs] def create_new_domain_record(self, *args, **kwargs): """ Create new domain record. https://developers.digitalocean.com/#create-a-new-domain-record Args: @type The record type (A, MX, CNAME, etc). @name The host name, alias, or service being defined by the record @data Variable data depending on record type. Optional Args: @priority The priority of the host @port The port that the service is accessible on @weight The weight of records with the same priority """ data = { "type": kwargs.get("type", None), "name": kwargs.get("name", None), "data": kwargs.get("data", None) } #  Optional Args if kwargs.get("priority", None): data['priority'] = kwargs.get("priority", None) if kwargs.get("port", None): data['port'] = kwargs.get("port", None) if kwargs.get("weight", None): data['weight'] = kwargs.get("weight", None) self.mock_data = "domains/create_record.json" self.mock_status = 201 return self.get_data( "domains/%s/records" % self.name, type=POST, params=data )
[docs] def create(self): """ Create new domain """ # URL https://api.digitalocean.com/v2/domains data = { "name": self.name, "ip_address": self.ip_address, } self.mock_data = "domains/create.json" self.mock_status = 201 domain = self.get_data("domains", type=POST, params=data) return domain
[docs] def get_records(self, params=None): """ Returns a list of Record objects """ if params is None: params = {} self.mock_data = "domains/records.json" # URL https://api.digitalocean.com/v2/domains/[NAME]/records/ records = [] data = self.get_data("domains/%s/records/" % self.name, type=GET, params=params) for record_data in data['domain_records']: record = Record(domain_name=self.name, **record_data) record.token = self.token records.append(record) return records
def __str__(self): return "%s" % self.name