From e0ec74e91858b0d1a4176193c95814ac6d4c29ed Mon Sep 17 00:00:00 2001 From: Nikola Jichev Date: Tue, 12 Sep 2017 11:14:39 +0300 Subject: [PATCH] Add support for project ssh keys. This commit adds support for creating project specific keys and retrieving project specific ssh keys. The missing http requests are described in the [docs](https://www.packet.net/developers/api/sshkeys/) The added ones are: - `GET /projects/{id}/ssh-keys` - `POST /projects/{id}/ssh-keys` I tried following the style so far, I didn't find a test file, so let me know if you want me to write some tests. I believe the code is self explanatory. --- lib/packet/client/ssh_keys.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/lib/packet/client/ssh_keys.rb b/lib/packet/client/ssh_keys.rb index 65e9820..c51512b 100644 --- a/lib/packet/client/ssh_keys.rb +++ b/lib/packet/client/ssh_keys.rb @@ -5,6 +5,11 @@ def list_ssh_keys(*args) get('ssh-keys', *args).body['ssh_keys'].map { |p| Packet::SshKey.new(p, self) } end + def list_project_ssh_keys(project_or_id, *args) + id = project_id(project_or_id) + get("project/#{id}/ssh-keys", *args).body['ssh_keys'].map { |p| Packet::SshKey.new(p, self) } + end + def get_ssh_key(id, *args) Packet::SshKey.new(get("ssh-keys/#{id}", *args).body, self) end @@ -15,6 +20,13 @@ def create_ssh_key(ssh_key) end end + def create_project_ssh_key(ssh_key, project_or_id) + id = project_id(project_or_id) + post("project/#{id}/ssh-keys", ssh_key.to_hash).tap do |response| + ssh_key.update_attributes(response.body) + end + end + def update_ssh_key(ssh_key) patch("ssh-keys/#{ssh_key.id}", ssh_key.to_hash).tap do |response| ssh_key.update_attributes(response.body) @@ -29,6 +41,16 @@ def delete_ssh_key(ssh_key_or_id) end delete("ssh-keys/#{id}") end + + private + + def project_id(project_or_id) + if project_or_id.is_a?(Packet::Project) + project_or_id.id + else + project_or_id + end + end end end end