components/storage.rb in nano-bots-0.0.10 vs components/storage.rb in nano-bots-0.1.0
- old
+ new
@@ -6,40 +6,50 @@
require_relative './crypto'
module NanoBot
module Components
class Storage
+ def self.end_user(cartridge, environment)
+ user = ENV.fetch('NANO_BOTS_END_USER', nil)
+
+ if cartridge[:provider][:id] == 'openai' &&
+ !cartridge[:provider][:settings][:user].nil? &&
+ !cartridge[:provider][:settings][:user].to_s.strip.empty?
+ user = cartridge[:provider][:settings][:user]
+ end
+
+ candidate = environment && (
+ environment['NANO_BOTS_END_USER'] ||
+ environment[:NANO_BOTS_END_USER]
+ )
+
+ user = candidate if !candidate.nil? && !candidate.to_s.strip.empty?
+
+ user = if user.nil? || user.to_s.strip.empty?
+ 'unknown'
+ else
+ user.to_s.strip
+ end
+
+ Crypto.encrypt(user, soft: true)
+ end
+
def self.build_path_and_ensure_state_file!(key, cartridge, environment: {})
path = [
Logic::Helpers::Hash.fetch(cartridge, %i[state directory]),
ENV.fetch('NANO_BOTS_STATE_DIRECTORY', nil)
].find do |candidate|
!candidate.nil? && !candidate.empty?
end
path = "#{user_home!.sub(%r{/$}, '')}/.local/state/nano-bots" if path.nil?
- prefix = environment && (
- environment['NANO_BOTS_USER_IDENTIFIER'] ||
- environment[:NANO_BOTS_USER_IDENTIFIER]
- )
+ path = "#{path.sub(%r{/$}, '')}/ruby-nano-bots"
- path = "#{path.sub(%r{/$}, '')}/ruby-nano-bots/vault"
-
- if prefix
- normalized = prefix.split('/').map do |part|
- Crypto.encrypt(
- part.to_s.gsub('.', '-').force_encoding('UTF-8').to_slug.normalize,
- soft: true
- )
- end.join('/')
-
- path = "#{path}/#{normalized}"
- end
-
path = "#{path}/#{cartridge[:meta][:author].to_slug.normalize}"
path = "#{path}/#{cartridge[:meta][:name].to_slug.normalize}"
path = "#{path}/#{cartridge[:meta][:version].to_s.gsub('.', '-').to_slug.normalize}"
+ path = "#{path}/#{end_user(cartridge, environment)}"
path = "#{path}/#{Crypto.encrypt(key, soft: true)}"
path = "#{path}/state.json"
FileUtils.mkdir_p(File.dirname(path))