--**************************************
-- requirements:
-- * saving to/loading from file: fileIO xtra
-- * encryption: crypto xtra
-- * encoding #media: crypto xtra
--
--**************************************
----------------------------------------
-- ENCODE TO FILE
-- usage:
-- v = [1,2,"hellö<>#+~",["foo":"bar", #foo2:#bar2], member("img").image]
-- saveDataToDisk( _movie.path&"test.dat", v, 1)
----------------------------------------
on saveDataToDisk( tFileName, tValue, tCompressFlag, tEncryptKey )
enc = script("BYTEARRAY_ENCODER")
ba = enc.mEncodeData(tValue)
if tCompressFlag then ba.compress()
if not voidP(tEncryptKey) then
aesKey = cx_md5_string(tEncryptKey, 1)
ba = cx_aes_encrypt_string(ba, aesKey)
end if
file_put_bytes(tFileName, ba)
end
----------------------------------------
-- DECODE FROM FILE
-- usage:
-- put loadDataFromDisk( _movie.path&"test.dat", 1)
----------------------------------------
on loadDataFromDisk( tFileName, tCompressFlag, tEncryptKey )
enc = script("BYTEARRAY_ENCODER")
ba = file_get_bytes(tFileName)
if not voidP(tEncryptKey) then
aesKey = cx_md5_string(tEncryptKey, 1)
ba = cx_aes_decrypt_string(ba, aesKey)
end if
if tCompressFlag then ba.uncompress()
return enc.mDecodeData(ba)
end
----------------------------------------
-- ENCODE TO MEMBER
-- usage:
-- v = [1,2,"hellö<>#+~",["foo":"bar", #foo2:#bar2], member("img").image]
-- saveDataToMember( member(8), v, true, "foobar" )
----------------------------------------
on saveDataToMember( tMemberRef, tValue, tCompressFlag, tEncryptKey )
enc = script("BYTEARRAY_ENCODER")
ba = enc.mEncodeData(tValue)
if tCompressFlag then ba.compress()
if not voidP(tEncryptKey) then
aesKey = cx_md5_string(tEncryptKey, 1)
ba = cx_aes_encrypt_string(ba, aesKey)
end if
m = new(#bytearray, tMemberRef)
m.bytearray = ba
end
----------------------------------------
-- DECODE FROM MEMBER
-- usage:
-- put loadDataFromMember( member(8), true, "foobar" )
----------------------------------------
on loadDataFromMember( tMemberRef, tCompressFlag, tEncryptKey )
enc = script("BYTEARRAY_ENCODER")
if tMemberRef.type<>#bytearray then return
ba = tMemberRef.bytearray
if not voidP(tEncryptKey) then
aesKey = cx_md5_string(tEncryptKey, 1)
ba = cx_aes_decrypt_string(ba, aesKey)
end if
if tCompressFlag then ba.uncompress()
return enc.mDecodeData(ba)
end
----------------------------------------
-- returns file as ByteArray
----------------------------------------
on file_get_bytes (tFile)
fp = xtra("fileIO").new()
if not objectP(fp) then return -1
fp.openFile(tFile, 1)
err = fp.status()
if (err) then return err
data = fp.readByteArray(fp.getLength())
fp.closeFile()
fp = 0
return data
end
----------------------------------------
-- saves ByteArray to file
----------------------------------------
on file_put_bytes (tFile, tByteArray, tType, tCreator)
fp = xtra("fileIO").new()
if not objectP(fp) then return -1
fp.openFile(tFile, 1)
err = fp.status()
if not (err) then fp.delete()
else if (err and not (err = -37)) then return err
fp.createFile(tFile)
err = fp.status()
if (err) then return err
fp.openFile(tFile, 2)
err = fp.status()
if (err) then return err
ok = fp.writeByteArray(tByteArray)
if stringP(tType) and stringP(tCreator) then fp.setFinderInfo(tType & tCreator)
fp.closeFile()
fp=0
return ok
end