From 615df28364b2f2d9c6c55ed1722947d1f980b175 Mon Sep 17 00:00:00 2001 From: Garcia Fabien Date: Tue, 9 Jul 2024 13:07:41 +0200 Subject: [PATCH] [FEATURE] Add info to skynet (#6) * [FEATURE] Add info to skynet Add file info to skynet --- Gemfile.lock | 2 +- lib/skynet/client.rb | 9 +++++++-- lib/skynet/version.rb | 2 +- spec/client_spec.rb | 29 ++++++++++++++++++++++++++++- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index a8e54a2..1981b7b 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -7,7 +7,7 @@ GIT PATH remote: . specs: - skynet (0.1.2) + skynet (0.2.0) httparty (~> 0.22.0) jwt (~> 2.8.0) redis_stream (~> 0.1.3) diff --git a/lib/skynet/client.rb b/lib/skynet/client.rb index 6292d2d..8156dfa 100644 --- a/lib/skynet/client.rb +++ b/lib/skynet/client.rb @@ -23,14 +23,19 @@ def agent_session(agent_session_id) end def upload(file) - self.class.post("/uploads", body: {file: file}) + self.class.post("/uploads", body: {file: file})["file"] end def download(uuid) self.class.get("/uploads/#{uuid}") end - def jwt_token(secret:, iss:, exp: 4.hours.from_now.to_i) + def file_info(uuid) + self.class.get("/uploads/#{uuid}/info")["file"] + end + + def jwt_token(secret:, iss:) + exp = (Time.now + 4 * 3600).to_i payload = {iss: iss, exp: exp} header_fields = {alg: "HS256"} ::JWT.encode payload, secret, "HS256", header_fields diff --git a/lib/skynet/version.rb b/lib/skynet/version.rb index db52f09..cebb857 100644 --- a/lib/skynet/version.rb +++ b/lib/skynet/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Skynet - VERSION = "0.1.3" + VERSION = "0.2.0" end diff --git a/spec/client_spec.rb b/spec/client_spec.rb index bf9542b..d7de209 100644 --- a/spec/client_spec.rb +++ b/spec/client_spec.rb @@ -43,7 +43,34 @@ response = described_class.new.upload(file) expect(stub_api).to have_been_requested - expect(response["file"]["id"]).to eq(file_id) + expect(response["id"]).to eq(file_id) + end + end + + describe "#file_info" do + let(:file_id) { SecureRandom.uuid } + let(:response_api) do + { + file: { + id: file_id, + name: "file.txt", + size: 1024, + mime_type: "text/plain", + url: "https://www.skynet.com/uploads/#{file_id}" + } + } + end + + it "return the info of the file" do + stub_request(:get, "https://www.skynet.com/uploads/#{file_id}/info") + .to_return(status: 200, body: response_api.to_json) + + response = described_class.new.file_info(file_id) + expect(response["id"]).to eq(file_id) + expect(response["name"]).to eq("file.txt") + expect(response["size"]).to eq(1024) + expect(response["mime_type"]).to eq("text/plain") + expect(response["url"]).to eq("https://www.skynet.com/uploads/#{file_id}") end end end