Class: HetznerDNS::Client
- Inherits:
-
Object
- Object
- HetznerDNS::Client
- Defined in:
- lib/hetzner_dns/client.rb
Constant Summary collapse
- BASE_URL =
"https://dns.hetzner.com/api/v1"
Class Method Summary collapse
- .connection ⇒ Object
- .delete_request(url, headers: {}) ⇒ Object
- .get_request(url, params: {}, headers: {}) ⇒ Object
- .handle_response(response) ⇒ Object
- .patch_request(url, body:, headers: {}) ⇒ Object
- .post_request(url, body: {}, headers: {}) ⇒ Object
- .put_request(url, body:, headers: {}) ⇒ Object
Class Method Details
.connection ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 |
# File 'lib/hetzner_dns/client.rb', line 8 def connection @connection ||= Faraday.new(BASE_URL) do |conn| conn.headers = { "Auth-API-Token" => HetznerDNS.config.api_token, "User-Agent" => "hetzner_dns/v#{VERSION} (github.com/deanpcmad/hetzner_dns)" } conn.request :json conn.response :json, content_type: "application/json" end end |
.delete_request(url, headers: {}) ⇒ Object
37 38 39 |
# File 'lib/hetzner_dns/client.rb', line 37 def delete_request(url, headers: {}) handle_response connection.delete(url, headers) end |
.get_request(url, params: {}, headers: {}) ⇒ Object
21 22 23 |
# File 'lib/hetzner_dns/client.rb', line 21 def get_request(url, params: {}, headers: {}) handle_response connection.get(url, params, headers) end |
.handle_response(response) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/hetzner_dns/client.rb', line 41 def handle_response(response) case response.status when 400 raise Error, "Error 400: Your request was malformed. '#{response.body["message"]}'" when 401 raise Error, "Error 401: You did not supply valid authentication credentials. '#{response.body["message"]}'" when 403 raise Error, "Error 403: You are not allowed to perform that action. '#{response.body["message"]}'" when 404 raise Error, "Error 404: No results were found for your request. '#{response.body["message"]}'" when 409 raise Error, "Error 409: Your request was a conflict. '#{response.body["message"]}'" when 422 raise Error, "Error 422: Unprocessable Content. '#{response.body["message"]}'" when 429 raise Error, "Error 429: Your request exceeded the API rate limit. '#{response.body["message"]}'" when 500 raise Error, "Error 500: We were unable to perform the request due to server-side problems. '#{response.body["message"]}'" when 503 raise Error, "Error 503: You have been rate limited for sending more than 20 requests per second. '#{response.body["message"]}'" when 501 raise Error, "Error 501: This resource has not been implemented. '#{response.body["message"]}'" when 204 return true end response end |
.patch_request(url, body:, headers: {}) ⇒ Object
33 34 35 |
# File 'lib/hetzner_dns/client.rb', line 33 def patch_request(url, body:, headers: {}) handle_response connection.patch(url, body, headers) end |
.post_request(url, body: {}, headers: {}) ⇒ Object
25 26 27 |
# File 'lib/hetzner_dns/client.rb', line 25 def post_request(url, body: {}, headers: {}) handle_response connection.post(url, body, headers) end |
.put_request(url, body:, headers: {}) ⇒ Object
29 30 31 |
# File 'lib/hetzner_dns/client.rb', line 29 def put_request(url, body:, headers: {}) handle_response connection.put(url, body, headers) end |