// ------------------------------------------------------------------------ // 🚀 Project active3 // 🔗 Active Thing (activething.com) git.activething.com/go // // File name packer.go // ✍️ Created by DEV // 📅 Modified 10/05/2024 // // 🔒 Copyright 2024 activething.com // // 📜 LICENSE -------------------------------------------------------------- // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ------------------------------------------------------------------------ package pkjson import ( "apack" "cdcs/cjson" ) func (b *Builder) packString (value string, flags apack.Flags) { if len(value) == 0 { b.B.Write2Byte('"','"') return } if flags.Encrypted() { b.packEncrypted([]byte(value),flags) return } if flags.Binary() { b.packBinary([]byte(value),flags) return } cjson.WriteString(b.B,value,flags.EscapeHTML()) } func (b *Builder) packEncrypted (value []byte, flags apack.Flags) { if b.Encrypter == nil { b.SetError(apack.G.ErrInvalidEncrypter) return } rs := b.Encrypter.Encrypt(value) if !rs.Ok() { b.SetError(rs.Fail()) return } if !flags.Binary() { flags|=apack.FlagBinary64 } b.packBinary (rs.Value(),flags) } func (b *Builder) packBinary (value []byte, flags apack.Flags) { if flags.Bin64() { b.SetError(cjson.WriteBase64(b.B,value)) return } if flags.Bin32() { b.SetError(cjson.WriteBase64(b.B,value)) return } }