pocketvault-client 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/pocketvault.rb +60 -0
- metadata +47 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 8d77b40e4136b7acf0ce6992b474f11775a6e78d27187377403c4ae2032822bb
|
|
4
|
+
data.tar.gz: 6d841ba84d24be784e38e7cc46ecdb3572a124b40bfdde9ac155f5e748121bfb
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 515830c771fdf9871d62d6928a8cccd3cc323a65d29b046c61d3613c4833bcb959969f56319c1bba8637abb0527e98bf15f00ab66cc7f04d8fe18179f5c47645
|
|
7
|
+
data.tar.gz: 4a4b668913664f9cff293e951ce6727c8b68e1c9ebda9b7923e058d37c32ba74b68f4f6228c0d4c330767fffd640ed782331ecfe2f807b6ade9688b88db59e83
|
data/lib/pocketvault.rb
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
require "net/http"
|
|
2
|
+
require "json"
|
|
3
|
+
require "uri"
|
|
4
|
+
|
|
5
|
+
class PocketVault
|
|
6
|
+
VERSION = "0.1.0"
|
|
7
|
+
|
|
8
|
+
attr_reader :url, :environment
|
|
9
|
+
|
|
10
|
+
def initialize(url:, token:, environment: "production", refresh_interval: nil)
|
|
11
|
+
@url = url.chomp("/")
|
|
12
|
+
@token = token
|
|
13
|
+
@environment = environment
|
|
14
|
+
@cache = {}
|
|
15
|
+
@loaded_at = nil
|
|
16
|
+
@refresh_interval = refresh_interval
|
|
17
|
+
@mutex = Mutex.new
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def get(key)
|
|
21
|
+
load! if stale?
|
|
22
|
+
@cache[key]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def all
|
|
26
|
+
load! if stale?
|
|
27
|
+
@cache.dup
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def load!
|
|
31
|
+
@mutex.synchronize do
|
|
32
|
+
uri = URI("#{@url}/api/v1/secrets?environment=#{@environment}")
|
|
33
|
+
req = Net::HTTP::Get.new(uri)
|
|
34
|
+
req["Authorization"] = "Bearer #{@token}"
|
|
35
|
+
|
|
36
|
+
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
|
|
37
|
+
http.request(req)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
raise "PocketVault error: #{res.code} #{res.body}" unless res.is_a?(Net::HTTPSuccess)
|
|
41
|
+
|
|
42
|
+
secrets = JSON.parse(res.body)
|
|
43
|
+
@cache = secrets.each_with_object({}) { |s, h| h[s["key"]] = s["value"] }
|
|
44
|
+
@loaded_at = Time.now
|
|
45
|
+
end
|
|
46
|
+
self
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def to_env
|
|
50
|
+
all.each { |k, v| ENV[k] = v }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
private
|
|
54
|
+
|
|
55
|
+
def stale?
|
|
56
|
+
return true if @loaded_at.nil?
|
|
57
|
+
return false if @refresh_interval.nil?
|
|
58
|
+
Time.now - @loaded_at > @refresh_interval
|
|
59
|
+
end
|
|
60
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: pocketvault-client
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Tendy Rivaldo
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2026-05-30 00:00:00.000000000 Z
|
|
12
|
+
dependencies: []
|
|
13
|
+
description: Fetch, cache, and auto-refresh secrets from a PocketVault instance
|
|
14
|
+
email:
|
|
15
|
+
- itupatti@gmail.com
|
|
16
|
+
executables: []
|
|
17
|
+
extensions: []
|
|
18
|
+
extra_rdoc_files: []
|
|
19
|
+
files:
|
|
20
|
+
- lib/pocketvault.rb
|
|
21
|
+
homepage: https://github.com/pattipeilohy/pocketvault.git
|
|
22
|
+
licenses:
|
|
23
|
+
- MIT
|
|
24
|
+
metadata:
|
|
25
|
+
homepage_uri: https://github.com/pattipeilohy/pocketvault.git
|
|
26
|
+
source_code_uri: https://github.com/pattipeilohy/pocketvault.git
|
|
27
|
+
changelog_uri: https://github.com/pattipeilohy/pocketvault.git/blob/main/CHANGELOG.md
|
|
28
|
+
post_install_message:
|
|
29
|
+
rdoc_options: []
|
|
30
|
+
require_paths:
|
|
31
|
+
- lib
|
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
33
|
+
requirements:
|
|
34
|
+
- - ">="
|
|
35
|
+
- !ruby/object:Gem::Version
|
|
36
|
+
version: '2.7'
|
|
37
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
38
|
+
requirements:
|
|
39
|
+
- - ">="
|
|
40
|
+
- !ruby/object:Gem::Version
|
|
41
|
+
version: '0'
|
|
42
|
+
requirements: []
|
|
43
|
+
rubygems_version: 3.4.1
|
|
44
|
+
signing_key:
|
|
45
|
+
specification_version: 4
|
|
46
|
+
summary: Ruby client for PocketVault secret manager
|
|
47
|
+
test_files: []
|