An unofficial, mostly Bitwarden-compatible API server written in Ruby (Sinatra and ActiveRecord)
at master 50 lines 1.5 kB view raw
1# 2# Copyright (c) 2017 joshua stein <jcs@jcs.org> 3# 4# Permission to use, copy, modify, and distribute this software for any 5# purpose with or without fee is hereby granted, provided that the above 6# copyright notice and this permission notice appear in all copies. 7# 8# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15# 16 17class Attachment < DBModel 18 self.table_name = "attachments" 19 20 before_create :generate_uuid_primary_key 21 22 belongs_to :cipher, 23 foreign_key: :cipher_uuid, 24 inverse_of: :attachments 25 26 def self.build_from_params(params) 27 Attachment.new(filename: params[:filename], size: params[:size], 28 file: params[:file]) 29 end 30 31 def to_hash 32 { 33 "Id" => self.uuid, 34 "Url" => self.url, 35 "FileName" => self.filename.to_s, 36 "Size" => self.size, 37 "SizeName" => human_file_size, 38 "Object" => "attachment" 39 } 40 end 41 42 def url 43 "#{::ATTACHMENTS_URL}/#{self.cipher_uuid}/#{self.id}" 44 end 45 46private 47 def human_file_size 48 ActiveSupport::NumberHelper.number_to_human_size(self.size) 49 end 50end