Class: Renuo::Cli::Services::Hetzner::Client
- Inherits:
-
Object
- Object
- Renuo::Cli::Services::Hetzner::Client
- Defined in:
- lib/renuo/cli/services/hetzner.rb
Constant Summary collapse
- BASE_URL =
"https://api.hetzner.cloud/v1/"
Instance Method Summary collapse
- #get(resource) ⇒ Object
-
#initialize(token) ⇒ Client
constructor
A new instance of Client.
- #list_servers ⇒ Object
Constructor Details
#initialize(token) ⇒ Client
Returns a new instance of Client.
29 30 31 |
# File 'lib/renuo/cli/services/hetzner.rb', line 29 def initialize(token) @token = token end |
Instance Method Details
#get(resource) ⇒ Object
52 53 54 55 56 57 58 59 60 |
# File 'lib/renuo/cli/services/hetzner.rb', line 52 def get(resource) uri = URI("#{BASE_URL}#{resource}") req = Net::HTTP::Get.new(uri) req["Authorization"] = "Bearer #{@token}" Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http| http.request(req) end end |
#list_servers ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/renuo/cli/services/hetzner.rb', line 35 def list_servers response = get("servers") raise "Error fetching Hetzner servers: #{response.body}" unless response.is_a?(Net::HTTPSuccess) data = JSON.parse(response.body) data["servers"].map do |server| { id: server["id"], name: server["name"], status: server["status"], public_ip: server.dig("public_net", "ipv4", "ip"), private_ip: server.dig("private_net", 0, "ip"), fqdn: server.dig("public_net", "ipv4", "dns_ptr") } end end |