sinatra-ace

Summary

Sinatra Extension for ACE (AWS Compatible Environment).

Features

Sample

Run this app:

    require 'sinatra'
    require 'sinatra/ace.rb'
    require 'sequel'

    DB = Sequel.sqlite
    DB.create_table :dreams do
            primary_key :id
            String :name
            String :description
    end
    Dreams = DB[:dreams]

    action 'CreateDream' do
            dream_id = Dreams.insert(:name => params['DreamName'])
            response_xml do |xml|
                    xml.Dream do
                            xml.DreamId dream_id
                            xml.DreamName params['DreamName']
                    end
            end
    end

    version '2014-07-11' do
            action 'CreateDream' do
                    dream_id = Dreams.insert(:name => params['DreamName'], :description => params['Description'])
                    response_xml do |xml|
                            xml.Dream do
                                    xml.DreamId dream_id
                                    xml.DreamName params['DreamName']
                                    xml.Description params['Description']
                            end
                    end
            end
    end

    path '/:DreamId' do
            action 'GetDreamDetail' do
                    dream = Dreams[:id => params['DreamId']]
                    response_xml do |xml|
                            xml.Dream do
                                    xml.DreamId dream[:id]
                                    xml.DreamName dream[:name]
                                    xml.Description dream[:description]
                            end
                    end
            end
    end

    dispatch!

And you can get:

    $ curl "http://localhost:4567/?Action=CreateDream&DreamName=Nightmare"
    <?xml version="1.0" encoding="UTF-8"?>
    <CreateDreamResponse>
      <CreateDreamResult>
        <Dream>
          <DreamId>2</DreamId>
          <DreamName>Nightmare</DreamName>
        </Dream>
      </CreateDreamResult>
      <ResponseMetadata>
        <RequestId>6c68b49d-239a-4777-b82f-a21151e9be42</RequestId>
      </ResponseMetadata>
    </CreateDreamResponse>
    $ curl "http://localhost:4567/?Action=CreateDream&DreamName=DayDream&Description=just+lazed+in+the+pool&Version=2014-07-11"
    <?xml version="1.0" encoding="UTF-8"?>
    <CreateDreamResponse>
      <CreateDreamResult>
        <Dream>
          <DreamId>3</DreamId>
          <DreamName>DayDream</DreamName>
          <Description>just lazed in the pool</Description>
        </Dream>
      </CreateDreamResult>
      <ResponseMetadata>
        <RequestId>2b875603-f685-4872-a316-7e2ddd4c356d</RequestId>
      </ResponseMetadata>
    </CreateDreamResponse>
    $ curl "http://localhost:4567/3?Action=GetDreamDetail"
    <?xml version="1.0" encoding="UTF-8"?>
    <GetDreamDetailResponse>
      <GetDreamDetailResult>
        <Dream>
          <DreamId>3</DreamId>
          <DreamName>DayDream</DreamName>
          <Description>just lazed in the pool</Description>
        </Dream>
      </GetDreamDetailResult>
      <ResponseMetadata>
        <RequestId>225697f4-2577-432b-aa78-c6f18cec7c05</RequestId>
      </ResponseMetadata>
    </GetDreamDetailResponse>