diff options
author | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-10 22:45:18 +0200 |
---|---|---|
committer | Kaarle Ritvanen <kaarle.ritvanen@datakunkku.fi> | 2014-03-24 01:18:13 +0200 |
commit | 7d9c43916b0600ac4879dfe9793eab807a83ab2b (patch) | |
tree | ec54ed64c9a557b6ea4ad88d31138a02d3e0cd04 /aconf/model/binary.lua | |
parent | cb6c243dc356ef1d46d7ddb96e6ea6ae007c6cca (diff) | |
download | aconf-7d9c43916b0600ac4879dfe9793eab807a83ab2b.tar.bz2 aconf-7d9c43916b0600ac4879dfe9793eab807a83ab2b.tar.xz |
rename ACF2 to Alpine Configurator (aconf)
Diffstat (limited to 'aconf/model/binary.lua')
-rw-r--r-- | aconf/model/binary.lua | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/aconf/model/binary.lua b/aconf/model/binary.lua new file mode 100644 index 0000000..fcff3ea --- /dev/null +++ b/aconf/model/binary.lua @@ -0,0 +1,50 @@ +--[[ +Copyright (c) 2012-2014 Kaarle Ritvanen +See LICENSE file for license details +--]] + +local M = {} + +local object = require('aconf.object') +local class = object.class +local super = object.super + + +local b64 = require('b64') + +local magic = require('magic') +magic = magic.open(magic.MIME_TYPE) +magic:load() + + +M.Data = class() + +function M.Data:init(path, data) + self.path = path + self.data = data + self.type = magic:buffer(data) +end + +function M.Data:encode() + return 'data:'..self.type..';base64,'..b64.encode(self.data) +end + + +M.Audio = class(require('aconf.model.field').Field) + +function M.Audio:init(params) + super(self, M.Audio):init(params) + self.dtype = 'binary' + self.widget = 'audio' +end + +function M.Audio:load(context) + local value = super(self, M.Audio):load(context) + return type(value) == 'string' and M.Data(context.path, value) or value +end + +-- not yet implemented +function M.Audio:save(context, value) end + + +return M |