47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require "json"
 | |
| require 'sinatra/base'
 | |
| require "sinatra/json"
 | |
| 
 | |
| require "providers/provider_factory"
 | |
| 
 | |
| module Devops
 | |
|   module API2_0
 | |
|     module Helpers
 | |
| 
 | |
|       include Sinatra::JSON
 | |
| 
 | |
|       def create_response msg, obj=nil, rstatus=200
 | |
|         logger.info(msg)
 | |
|         status rstatus
 | |
|         obj = {} if obj.nil?
 | |
|         obj[:message] = msg
 | |
|         json(obj)
 | |
|       end
 | |
| 
 | |
|       def halt_response msg, rstatus=400
 | |
|         obj = {:message => msg}
 | |
|         halt(rstatus, json(obj))
 | |
|       end
 | |
| 
 | |
|       def check_privileges cmd, p
 | |
|         user = request.env['USER']
 | |
|         user.check_privileges(cmd, p)
 | |
|       end
 | |
| 
 | |
|       def check_provider provider
 | |
|         list = ::Provider::ProviderFactory.providers
 | |
|         halt_response("Invalid provider '#{provider}', available providers: '#{list.join("', '")}'", 404) unless list.include?(provider)
 | |
|       end
 | |
| 
 | |
|       # Save information about requests with methods POST, PUT, DELETE
 | |
|       def statistic msg=nil
 | |
|         unless request.get?
 | |
|           settings.mongo.statistic request.env['REMOTE_USER'], request.path, request.request_method, @body_json, response.status
 | |
|         end
 | |
|       end
 | |
| 
 | |
|     end
 | |
|   end
 | |
| end
 | |
| 
 |