Sha256: a491c87e0b3b35c6ddaf5402f9dfbeaeb772432e80d9a6ccddf850adc946957d

Contents?: true

Size: 808 Bytes

Versions: 4

Compression:

Stored size: 808 Bytes

Contents

require 'rack/core-data'

class Helios::Backend::Data < Sinatra::Base
  use Rack::PostBodyContentTypeParser

  def initialize(xcdatamodel)
    super(Rack::CoreData(xcdatamodel))

    @model = Rack::CoreData::DataModel.new(xcdatamodel)
  end

  before do
    content_type :json
  end

  helpers Sinatra::Param

  options '/' do
    pass unless settings.frontend rescue false
    
    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

4 entries across 4 versions & 1 rubygems

Version Path
helios-0.0.5 ./lib/helios/backend/data.rb
helios-0.0.4 ./lib/helios/backend/data.rb
helios-0.0.3 ./lib/helios/backend/data.rb
helios-0.0.2 ./lib/helios/backend/data.rb