Sha256: 57e93dbc0151d5cafea39f3612590de91e8ff22377cf81715813a63c8ec9acb3

Contents?: true

Size: 1.46 KB

Versions: 5

Compression:

Stored size: 1.46 KB

Contents

module Picky
  module Sinatra
      
    module IndexActions
      
      def self.extended base
        # Updates the given item and returns HTTP codes:
        #  * 200 if the index has been updated or no error case has occurred.
        #  * 404 if the index cannot be found.
        #  * 400 if no data or item id has been provided in the data.
        #
        # Note: 200 returns no data yet.
        #
        base.post '/' do
          index_name = params['index']
          begin
            index = Picky::Indexes[index_name.to_sym]
            data = params['data']
            return 400 unless data
            data && index.replace_from(Yajl::Parser.parse data) && 200
          rescue IdNotGivenException
            400
          rescue StandardError
            404
          end
        end
        
        # Deletes the given item and returns:
        #  * 200 if the index has been updated or no error case has occurred.
        #  * 404 if the index cannot be found.
        #  * 400 if no data or item id has been provided in the data.
        #
        # Note: 200 returns no data yet.
        #
        base.delete '/' do
          index_name = params['index']
          begin
            index = Picky::Indexes[index_name.to_sym]
            data = Yajl::Parser.parse params['data']
            id = data['id']
            id ? index.remove(id) && 200 : 400
          rescue StandardError
            404
          end
        end
      end
      
    end
    
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
picky-4.4.2 lib/picky/sinatra/index_actions.rb
picky-4.4.1 lib/picky/sinatra/index_actions.rb
picky-4.4.0 lib/picky/sinatra/index_actions.rb
picky-4.3.2 lib/picky/sinatra/index_actions.rb
picky-4.3.1 lib/picky/sinatra/index_actions.rb