require "kemal"
|
|
require "../*"
|
|
require "io"
|
|
require "file"
|
|
require "math"
|
|
require "exception"
|
|
require "crypto/bcrypt/password"
|
|
require "dir"
|
|
require "uuid"
|
|
require "uuid/json"
|
|
require "kemal/param_parser"
|
|
require "../../config"
|
|
|
|
get "/products" do |context|
|
|
ret = Array(Product).new
|
|
path = Dir.new(Statics.data_path+"products")
|
|
sent = 0
|
|
skipped = 0
|
|
|
|
skip, limit = Statics.extract_skip_info context
|
|
|
|
path.each do |filename|
|
|
if(sent<limit)
|
|
begin
|
|
if filename.char_at(0)!='.'
|
|
if(skipped<skip)
|
|
skipped+=1
|
|
else
|
|
ret.push Product.from_json File.read Statics.data_path+"products/"+filename
|
|
sent+=1;
|
|
end
|
|
end
|
|
rescue exception
|
|
|
|
end
|
|
end
|
|
end
|
|
ret.to_json
|
|
end
|
|
|
|
get "/products/:id" do |context|
|
|
begin
|
|
ret = Product.from_json File.read Statics.data_path+"products/"+context.params.url["id"]
|
|
rescue ex
|
|
halt context, status_code: 404, response: ex.to_s
|
|
end
|
|
ret.to_json
|
|
end
|
|
|
|
|
|
post "/products" do |context|
|
|
user : User
|
|
begin
|
|
user = authenticate_admin!(context.request.headers["user"],UUID.new(context.request.headers["api_token"]))
|
|
rescue ex
|
|
halt context, status_code: 403, response: ex.to_s
|
|
end
|
|
product = Product.from_json(context.request.body.not_nil!).not_nil!
|
|
File.write Statics.data_path+"products/"+product.id.to_s,product.to_json
|
|
"OK".to_json
|
|
end
|