//
// Copyright 2024 Formata, Inc. All rights reserved.
//
// 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.
//
root Server: {
Config: {
opaque_errors: false // sends Stof runtime errors back if true
Address: {
ip: '127.0.0.1'
port: 3030
}
}
}
root Formata: {
type MyCustomInterface {
fn hello(): str {
return 'hello';
}
}
}
get: {
#[GET('interfaces/formata')]
#[cached({
self.formata_cached = blobify(Formata, 'bstof'); // this is cool
drop Formata;
})]
fn formata_interface(): str {
assertNull(Formata);
pln(self.formata_cached);
parse(self.formata_cached, 'bstof', 'self.Temp');
let object = new self.Temp.MyCustomInterface {};
pln(object.hello());
drop object;
drop self.Temp;
return 'success';
}
}