50 lines
1.5 KiB
Ruby
50 lines
1.5 KiB
Ruby
module Devops
|
|
module API3
|
|
module Routes
|
|
module ImageRoutes
|
|
|
|
def self.registered(app)
|
|
|
|
app.define_policy :read_images, "Read images"
|
|
app.define_policy :create_images, "Create image"
|
|
app.define_policy :delete_images, "Delete image"
|
|
|
|
app.get_with_headers "/images" do
|
|
check_policy(:read_images)
|
|
json Devops::API3::Handler::Image.new(request).images.map(&:to_hash)
|
|
end
|
|
|
|
app.post_with_headers "/image" do
|
|
check_policy(:create_images)
|
|
image = Devops::API3::Handler::Image.new(request).create_image()
|
|
create_response "Created", {id: image.id}, 201
|
|
end
|
|
|
|
hash = {}
|
|
hash["GET"] = lambda { |id|
|
|
check_policy(:read_images)
|
|
json Devops::API3::Handler::Image.new(request).image(id).to_hash
|
|
}
|
|
|
|
hash["PUT"] = lambda {|id|
|
|
check_policy(:create_images)
|
|
image = Devops::API3::Handler::Image.new(request).update_image(id)
|
|
create_response("Image '#{id}' has been updated", {image: image.to_hash})
|
|
}
|
|
|
|
hash["DELETE"] = lambda {|id|
|
|
check_policy(:delete_images)
|
|
Devops::API3::Handler::Image.new(request).delete_image(id)
|
|
create_response("Image '#{id}' has been removed", {id: id})
|
|
}
|
|
|
|
app.multi_routes "/image/:id", hash
|
|
|
|
puts "Image routes initialized"
|
|
end
|
|
|
|
end
|
|
end
|
|
end
|
|
end
|