module HelixVersioningEngine # Methods for user resources. # # Users are a little different from standard specs, since deleting users # can require removing session data, etc. class App < Sinatra::Base get '/helix_versioning_engine/:api/users' do |_| require_p4 p4 = env['p4'] users = p4.run_users users.to_json end post '/helix_versioning_engine/:api/users' do |_| require_p4 p4 = env['p4'] results = p4.save_user(params, '-f') results.to_json end get '/helix_versioning_engine/:api/users/:user' do |_, user| require_p4 p4 = env['p4'] results = p4.run_user('-o', user) if results.empty? or HelixVersioningEngine.invalid_user_email?(results, user) halt 404 else results[0].to_json end end patch '/helix_versioning_engine/:api/users/:user' do |_, user| require_p4 p4 = env['p4'] results = p4.run_user('-o', user) if results.empty? or HelixVersioningEngine.invalid_user_email?(results, user) halt 404 return end spec = results[0] spec = spec.merge(filter_params(params)) spec['User'] = user unless spec.key?('User') results = p4.save_user(spec, '-f') results.to_json end delete '/helix_versioning_engine/:api/users/:user' do |_, user| require_p4 p4 = env['p4'] p4.run_user('-f', '-d', user) '' end end end