An authentication server
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

64 lines
1.7 KiB

require "kemal"
require "../*"
require "io"
require "file"
require "exception"
require "uuid"
require "uuid/json"
require "../../config"
post "/category" do |context|
begin
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
cat = Category.from_json(context.request.body.not_nil!).not_nil!
if cat.name_id.count(' ')==0
File.write Statics.data_path+"category/"+cat.name_id,cat.to_json
else
halt context, status_code: 400, response: "name_id should not contain spaces ' ' or '/'"
end
rescue ex
halt context, status_code: 500, response: ex.to_s
end
"OK".to_json
end
get "/category/m/:id" do |context|
begin
ret = Category.from_json File.read Statics.data_path+"category/"+context.params.url["id"]
rescue ex
halt context, status_code: 404, response: ex.to_s
end
ret.to_json
end
get "/category/d/:id" do |context|
ret = Array(Product).new
begin
cat = Category.from_json File.read Statics.data_path+"category/"+context.params.url["id"]
sent=0
skipped=0
skip, limit = Statics.extract_skip_info context
cat.products.each do |product|
begin
if(skipped<skip)
skipped+=1
else
ret.push Product.from_json File.read Statics.data_path+"products/"+product.to_s
sent+=1
end
rescue
end
end
rescue ex
halt context, status_code: 404, response: ex.to_s
end
ret.to_json
end