ruby-grape/grape-with-roar

View on GitHub
api/presenters/root_presenter.rb

Summary

Maintainability
A
0 mins
Test Coverage
module Acme
  module Api
    module Presenters
      module RootPresenter
        include Roar::JSON::HAL
        include Roar::Hypermedia
        include Grape::Roar::Representer

        link :self do |opts|
          "#{base_url(opts)}/api"
        end

        link :swagger_doc do |opts|
          "#{base_url(opts)}/api/swagger_doc"
        end

        link :splines do |opts|
          {
            href: "#{base_url(opts)}/api/splines{?page,size}",
            templated: true
          }
        end

        link :spline do |opts|
          {
            href: "#{base_url(opts)}/api/splines/{uuid}",
            templated: true
          }
        end

        private

        def base_url(opts)
          request = Grape::Request.new(opts[:env])
          request.base_url
        end
      end
    end
  end
end