module Devops module Version2_0 module Routes module UserRoutes def self.registered(app) app.after %r{\A/user(/[\w]+(/password)?)?\z} do statistic end # Get users list # # * *Request* # - method : GET # - headers : # - Accept: application/json # # * *Returns* : # [ # { # "email": "test@test.test", # "privileges": { # "flavor": "r", # "group": "r", # "image": "r", # "project": "r", # "server": "r", # "key": "r", # "user": "", # "filter": "r", # "network": "r", # "provider": "r", # "script": "r", # "templates": "r" # }, # "id": "test" # } # ] app.before "/users" do check_headers :accept check_privileges("user", "r") end app.get "/users", &Devops::Version2_0::Handler::User.get_users # Create user # # * *Request* # - method : POST # - headers : # - Accept: application/json # - Content-Type: application/json # - body : # { # "username": "user name", # "email": "user email", # "password": "user password" # } # # * *Returns* : # 201 - Created app.before "/user" do check_headers :accept, :content_type check_privileges("user", "w") end app.post "/user", &Devops::Version2_0::Handler::User.create_user # Delete user # # * *Request* # - method : DELETE # - headers : # - Accept: application/json # # * *Returns* : # 200 - Deleted app.before "/user/:user" do if request.delete? check_headers :accept elsif request.put? check_headers :accept, :content_type end check_privileges("user", "w") end app.delete "/user/:user", &Devops::Version2_0::Handler::User.delete_user # Change user privileges # # * *Request* # - method : PUT # - headers : # - Accept: application/json # - Content-Type: application/json # - body : # { # "cmd": "command or all", -> if empty, set default privileges # "privileges": "priv" -> 'rwx' or '' # } # # * *Returns* : # 200 - Updated app.put "/user/:user", &Devops::Version2_0::Handler::User.change_user_privileges # Change user email/password # # * *Request* # - method : PUT # - headers : # - Accept: application/json # - Content-Type: application/json # - body : # { # "email/password": "new user email/password", # } # # * *Returns* : # 200 - Updated app.before %r{\A/user/[\w]+/(email|password)\z} do check_headers :accept, :content_type end app.put %r{\A/user/[\w]+/(email|password)\z}, &Devops::Version2_0::Handler::User.change_user_email_or_password puts "User routes initialized" end end end end end