require "date"
module Fog
  module DNS
    class Google
      ##
      # Creates a new Managed Zone.
      #
      # @see https://developers.google.com/cloud-dns/api/v1/managedZones/create
      class Real
        def create_managed_zone(name, dns_name, description)
          api_method = @dns.managed_zones.create
          parameters = {
            "project" => @project
          }

          body_object = {
            "name" => name,
            "dnsName" => dns_name,
            "description" => description
          }

          request(api_method, parameters, body_object)
        end
      end

      class Mock
        def create_managed_zone(name, dns_name, description)
          id = Fog::Mock.random_numbers(19).to_s
          data = {
            "kind" => 'dns#managedZone',
            "id" => id,
            "creationTime" => DateTime.now.strftime("%FT%T.%LZ"),
            "name" => name,
            "dnsName" => dns_name,
            "description" => description,
            "nameServers" => [
              "ns-cloud-e1.googledomains.com.",
              "ns-cloud-e2.googledomains.com.",
              "ns-cloud-e3.googledomains.com.",
              "ns-cloud-e4.googledomains.com."
            ]
          }
          self.data[:managed_zones][id] = data
          self.data[:resource_record_sets][id] = [
            {
              "kind" => 'dns#resourceRecordSet',
              "name" => dns_name,
              "type" => "NS",
              "ttl" => 21_600,
              "rrdatas" => [
                "ns-cloud-c1.googledomains.com.",
                "ns-cloud-c2.googledomains.com.",
                "ns-cloud-c3.googledomains.com.",
                "ns-cloud-c4.googledomains.com."
              ]
            },
            {
              "kind" => 'dns#resourceRecordSet',
              "name" => dns_name,
              "type" => "SOA",
              "ttl" => 21_600,
              "rrdatas" => [
                "ns-cloud-c1.googledomains.com. dns-admin.google.com. 0 21600 3600 1209600 300"
              ]
            }
          ]
          self.data[:changes][id] = [
            {
              "kind" => 'dns#change',
              "id" => "0",
              "startTime" => DateTime.now.strftime("%FT%T.%LZ"),
              "status" => "done",
              "additions" => self.data[:resource_record_sets][id]
            }
          ]

          build_excon_response(data)
        end
      end
    end
  end
end
