Sha256: ebf69dadce0167eafccda6cac560b7f1d8aa63ffd336c7be05227962d0c27dd1

Contents?: true

Size: 834 Bytes

Versions: 1

Compression:

Stored size: 834 Bytes

Contents

require 'rack/core-data'
require 'sinatra/param'

class Helios::Backend::Data < Sinatra::Base
  helpers Sinatra::Param

  def initialize(app, options = {})
    super(Rack::CoreData(options[:model]))

    @model = Rack::CoreData::DataModel.new(options[:model])
  end

  before do
    content_type :json
  end

  helpers Sinatra::Param

  options '/' do
    pass unless self.class < Helios::Administerable

    links = []
    @model.entities.each do |entity|
      links << %{</#{entity.name.downcase.pluralize}>; rel="resource"}
    end

    response['Link'] = links.join("\n")

    @model.entities.collect{ |entity| 
      {
        name: entity.name, 
        url: "/#{entity.name.downcase.pluralize}",
        attributes: Hash[entity.attributes.collect{|attribute| [attribute.name, attribute.type]}]
      }
    }.to_json
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
helios-0.1.1 ./lib/helios/backend/data.rb