require 'gandinet/version' require 'uri' require 'net/http' require 'json' # Usage # require 'gandinet' # client = GandiNet::Client.new("KEY", dryrun: false) # Be careful with dry run! # client.domains # Get them module GandiNet class Error < StandardError; end class Client attr_accessor :key attr_accessor :dryun def initialize(key=nil, dryrun:true) puts "Please provide an API Key." unless key @key = key @dryrun = dryrun end def domains url = URI("https://api.gandi.net/v5/domain/domains") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["authorization"] = "Apikey #{key}" response = http.request(request) JSON.parse(response.read_body) end # client.create("...","...",...) def create(fqdn,given,family,country,streetaddr,orgname,email,phone,zip,city) url = URI("https://api.gandi.net/v5/domain/domains") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["authorization"] = "Apikey #{key}" request["dry-run"] = "1" if @dryrun request["content-type"] = 'application/json' #puts { fqdn: fqdn, owner: { given: given, family: family, country: country, streetaddr: streetaddr, type: "1", orgname: orgname, email: email, phone: phone, zip: zip, city: city}}.to_json request.body = "{\"fqdn\":\"#{fqdn}\",\"owner\":{\"given\":\"#{given}\",\"family\":\"#{family}\",\"country\":\"#{country}\",\"streetaddr\":\"#{streetaddr}\",\"type\":1,\"orgname\":\"#{orgname}\",\"email\":\"#{email}\",\"phone\":\"#{phone}\",\"zip\":\"#{zip}\",\"city\":\"#{city}\"}}" response = http.request(request) JSON.parse(response.read_body) end # client.info("DOMAIN") def info(fqdn) url = URI("https://api.gandi.net/v5/domain/domains/#{fqdn}") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["authorization"] = "Apikey #{key}" response = http.request(request) JSON.parse(response.read_body) end end end