PageRenderTime 1214ms CodeModel.GetById 21ms RepoModel.GetById 0ms app.codeStats 0ms

/api/app/controllers/spree/api/v1/products_controller.rb

https://github.com/Aeon/spree
Ruby | 52 lines | 46 code | 6 blank | 0 comment | 2 complexity | 01d9fa90a3f9928d538180566fc7b5b3 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. module Spree
  2. module Api
  3. module V1
  4. class ProductsController < Spree::Api::V1::BaseController
  5. def index
  6. @products = product_scope.page(params[:page])
  7. end
  8. def search
  9. @products = product_scope.ransack(params[:q]).result.page(params[:page])
  10. render :index
  11. end
  12. def show
  13. @product = find_product(params[:id])
  14. end
  15. def new
  16. end
  17. def create
  18. authorize! :create, Product
  19. params[:product][:available_on] ||= Time.now
  20. @product = Product.new(params[:product])
  21. if @product.save
  22. render :show, :status => 201
  23. else
  24. invalid_resource!(@product)
  25. end
  26. end
  27. def update
  28. authorize! :update, Product
  29. @product = find_product(params[:id])
  30. if @product.update_attributes(params[:product])
  31. render :show, :status => 200
  32. else
  33. invalid_resource!(@product)
  34. end
  35. end
  36. def destroy
  37. authorize! :delete, Product
  38. @product = find_product(params[:id])
  39. @product.update_attribute(:deleted_at, Time.now)
  40. @product.variants_including_master.update_all(:deleted_at => Time.now)
  41. render :text => nil, :status => 200
  42. end
  43. end
  44. end
  45. end
  46. end