Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

Asterisk Client Library Generator

Generator for client libraries for Asterisk's REST API which is provided by res_http_stasis.

Languages

  • Python
  • JavaScript
  • Perl
  • format such that additional language support is not difficult.

Library structure

  • Top-level library or object or structure
    • Asterisk.get_info()
    • Endpoints.get_endpoints()
    • Channels.get_channels()
    • Bridges.get_bridges()
    • Recordings.get_recordings()
    • Endpoint.get_endpoint(id)
    • Channel.get_channel(id)
    • Bridges.get_bridge(id)
    • Recordings.get_recording(id)
    • add_event_handler(event_name, function)
    • remove_event_handler(event_name, function)
  • Each object in the Swagger resource files
    • Methods listed therein
    • Relevant object attribute getters
    • add_event_handler(event_name, function)
    • remove_event_handler(event_name, function)

Library behavior

HTTP codes

  • 2XX - no error. If we got a JSON response, return it, else, return void.
  • 3XX - followed by HTTP libraries
  • 400 Bad Request - used when the requested action cannot be attempted because of bad params. Throw an IllegalInputException.
  • 404 Not Found - used when the object to be acted upon doesn't exist. Throw a NotFoundException.
  • 409 Conflict - used when the requested action cannot be attempted because of bad state. Throw an IllegalStateException.
  • 500 - Throw an AsteriskServerException.
  • 501 - Throw a NoSuchMethodException.
  • 5XX - Throw a AsteriskUnknownException.

    Python

  • Methods should return the object specified in the Swagger documentation or throw an appropriate exception.

    Perl

  • Methods should return the object specified in the Swagger documentation if the call succeeds. Undecided as of yet how error-handling will take place. We will avoid setting an error variable which may be over written by subsequent or parallel calls.

    JavaScript

  • Methods should pass the object specified in the Swagger documentation into a success handler (2xx). Fatal errors (400, 418, 5XX) will cause an error to be throw. Non-fatal errors will call an error handler (404, 409).

Project location and directory structure

This project is located on GitHub. Inside asterisk_rest_libraries

Code Block
asterisk_rest_libraries
    generate_library.py
    api.py
    test_api_calls.py
    test_asterispy.py
    perl/
        lib/
        templates/
        ... et. al.
    python/
        lib/
            __init__.py
            asteriskpy.py
            asterisk_rest_api.py
            errors.py
            ... and generated files
        templates/
            copyright.proto
            class_def.proto
            method_def.proto
            ... and perhaps more in the future
    test_resources/
        asterisk.json
        bridges.json
        channels.json
        endpoints.json
        recordings.json
        resources.json
        ... and perhaps more in the future