Navigation Menu

Skip to content

psammetichus/restbed

 
 

Repository files navigation

Restbed


It's akin to embedding NGINX into your companies own product line. -- Solutions Architect, Bellrock Technology

Features

  • Long Polling
  • Web Sockets
  • Path Parameters
  • Query Parameters
  • Request filters
  • Custom Logging
  • Multi-path resources
  • Customisable HTTP methods
  • Compression GZip, Deflate, etc...
  • Asynchronous single threaded architecture
  • Built-in Path, Query, and Header conversions
  • Service & Resource level authentication
  • Service & Resource level error handling
  • Secure, Stable, and extensively tested over 3+ years
  • Flexibility to address HTTP 1.0/1.1+ compliance
  • Active, vibrant community

Example

#include <memory>
#include <cstdlib>
#include <restbed>

using namespace std;
using namespace restbed;

void get_method_handler( const shared_ptr< Session >& session )
{
    const auto request = session->get_request( );

    size_t content_length = 0;
    request->get_header( "Content-Length", content_length );

    session->fetch( content_length, [ ]( const shared_ptr< Session >& session,
                                         const Bytes& body )
    {
        fprintf( stdout, "%.*s\n", ( int ) body.size( ), body.data( ) );

        session->close( OK, "Hello, World!", { { "Content-Length", "13" } } );
    } );
}

int main( const int, const char** )
{
    auto resource = make_shared< Resource >( );
    resource->set_path( "/resource" );
    resource->set_method_handler( "GET", &get_method_handler );

    auto settings = make_shared< Settings >( );
    settings->set_port( 1984 );
    settings->set_default_header( "Connection", "close" );

    Service service;
    service.publish( resource );
    service.start( settings );
    
    return EXIT_SUCCESS;
}

More in-depth examples can be found here.

License

Copyright (c) 2013, 2014, 2015 Corvusoft Limited, United Kingdom. All rights reserved.

The Restbed Framework is dual licensed; See LICENSE.md for full details.

Support

Please contact sales@corvusoft.co.uk, for support options including bespoke software development, design consultation, training, mentoring and code review.

Install Base Tickets Anual Fee Per Install (ex vat @20%)
1-3 3 £280.00
4-10 3 £360.00
11+ 3+ AABUS

purchase by contacting sales@corvusoft.co.uk for further information.

Are you a start-up? Contact sales@corvusoft.co.uk for discounts.

Build

git clone --recursive http://github.com/corvusoft/restbed.git
mkdir restbed/build
cd restbed/build
cmake [-DBUILD_TESTS=YES] [-DBUILD_EXAMPLES=YES] [-DCMAKE_INSTALL_PREFIX=/output-directory] ..
make install
make test

You will now find all required components installed in the restbed distribution folder. Please submit all enhancements, proposals, and defects via the issue tracker.

Minimum Requirements

Resource Requirement
CPU 40mhz
RAM 3mb
Disk 1mb
Compiler C++11 compliant or above
OS BSD, Linux, Mac OSX, Solaris, Windows, Raspbian

Road Map

Release Feature Status
0.0 Asynchrounous HTTP Service complete
1.0 HTTP 1.0 Compliance complete
2.0 HTTP 1.1 Compliance complete
2.5 Secure Socket Layer in-development
2.7 Event Hooks pending
2.8 Localisation pending
3.0 Session Management pending
3.5 Resource Caching pending
4.0 HTTP 2.0 compliance pending
4.x Dynamic runtime resource publishing/suppression pending
x.x Statically Linked Framework pending

About

Corvusoft's Restbed framework brings asynchronous RESTful functionality to C++11 applications.

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE.md
GPL-3.0
LICENSE.GPL

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 57.5%
  • C 36.7%
  • CMake 5.8%