Skip to content

pneff/servicegen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

159 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Archived

This project is no longer developed but left online for inspiration. A more pragmatic solution is WsgiService started by the same author as servicegen.

servicegen

servicegen is a small domain specific language to specify web services. The idea is to lower the barrier for creating a new service.

The simple service description will abstract a few common tasks:

  • Getting input parameters and validate them.
  • Get data from other web services or a database.
  • Configuration handling for deployments.
  • Logging.
  • Caching using e.g. memcached.
  • Correct handling of HTTP caching.

A few features can be provided based on the input format:

  • Create service in various programming languages and frameworks. I can imagine creating output for web.py, Okapi, Spring, etc. This would allow to easily switch deployment platform depending on current requirements.
  • Create documentation for the service in a consistent format.
  • Maybe even create clients for various programming languages.

Status

Started on May 26, 2008 by Patrice Neff during a local.ch-internal hack day. Currently doesn't do much. There is:

  • An ANTLR grammar for a basic service description.
  • A generator in Python which gives some output based on what it parsed.
  • An extensive grammar documentation showing what's the intention.
  • An output target to create a basic web.py application.
  • An output target to create a basic HTML documentation.

Usage

On a shell execute gen.py like this:

$ ./gen.py docs/meteo-service.txt

Design Choices

  • Variables can't change their value once the value is defined. This way on assignment of each variable it can be determined whether the variable can be read from a cache or not depending on the keyword "cached".

TODO

  • Specified but to implement:
    • Caching
    • Caching of output blocks
  • Custom "not found" handler
  • Add JSON output

About

Domain specific language to specify web services

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published