OBJ.SERVER is a package part of the OBJ namespace. It provides server to run on linux.
OBJ is a pure python package that provides an object class that can save/load objects in JSON format to disk. Files are saved with a timestamp in their filename, so searching in a time related manner becomes possible.
OBJ has a “no-clause MIT license” that should be the most liberal license you can get at the year 2018.
OBJ contains the following modules:
base - the base module containing the Object class providing load/save to JSON functionality. bots - bots package. bus - send text to a list of registered handlers. cli - the command line interface bot giving access to the bot from the shell. cmds - commands subpackage containing the above listed commands. db - database functionality that can search through objects stored on disk. event - the Event class generated on bots when data is read from the socket. handler - the event handler of the bot. loader - Loader class to load modules from ob space into the program. shell - shell related startup, cli arguments parsing and logging. thr - thread module to launch, kill threads. users - provides user management code.
The basic class is Object that inherits from object and add load/save methods to a standard object:
>>> from obj.base import Object >>> o = Object() >>> p = o.save() >>> oo = Object() >>> oo.load(p) >>> o == oo >>> True
Next class is Obj, a dict combined with Object provides a usable “dotted access” dict:
>>> from obj.base import Obj >>> o = Obj() >>> o.test = "test1" >>> p = o.save() >>> oo = Obj() >>> oo.load(p) >>> oo.test == "test1" >>> True
You can get a OBJ shell working by running python3 -m obj.bots.shell.
OBJ shell has the following commands:
cfg - show config files. cmds - show list of commands. deleted - show deleted objects. ed - edit saved objects. exit - stop the CLI. find - find objects in the datastore. fleet - show list of registered handlers. kill - stop a thread. last - show last record of a object. load - load a module. log - log some text. ls - list subdirectories in the workdir. meet - add a user perm - change permissions of a user. ps - show running threads. reboot - reboot the CLI. rm - set the deleted flag on an object. rmperm - remove permissions. test - echo test response. todo - store a todo item. unload - unload a module. uptime - show uptime. user - user lookup. version - show OBJ version.
Programming your own commands for the CLI is easy, your can load modules with the -m option. A command is a function with one argument, the event that was generated on the bot:
def mycommand(event): <<< your code here >>>
You can use event.reply() to send response back to the user.