| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  | require "json" | 
					
						
							|  |  |  | require 'sinatra/base' | 
					
						
							|  |  |  | require "sinatra/json" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "providers/provider_factory" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-15 14:26:54 +03:00
										 |  |  | module Devops | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |   module API2_0 | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |     module Helpers | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-08-03 15:09:04 +03:00
										 |  |  |       include Sinatra::JSON | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |       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 | 
					
						
							| 
									
										
										
										
											2015-07-16 17:18:55 +03:00
										 |  |  |         user = request.env['USER'] | 
					
						
							|  |  |  |         user.check_privileges(cmd, p) | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       def check_provider provider | 
					
						
							|  |  |  |         list = ::Provider::ProviderFactory.providers | 
					
						
							| 
									
										
										
										
											2015-11-02 17:33:25 +03:00
										 |  |  |         halt_response("Invalid provider '#{provider}', available providers: '#{list.join("', '")}'", 400) unless list.include?(provider) | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       # Save information about requests with methods POST, PUT, DELETE | 
					
						
							| 
									
										
										
										
											2015-09-17 13:15:19 +03:00
										 |  |  |       def insert_statistic msg=nil | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |         unless request.get? | 
					
						
							| 
									
										
										
										
											2015-09-29 16:37:59 +03:00
										 |  |  |           # parse body | 
					
						
							| 
									
										
										
										
											2015-09-29 16:16:59 +03:00
										 |  |  |           request.body.rewind | 
					
						
							| 
									
										
										
										
											2015-09-29 16:37:59 +03:00
										 |  |  |           raw_body = request.body.read | 
					
						
							|  |  |  |           body = begin | 
					
						
							|  |  |  |             ::JSON.parse(raw_body) | 
					
						
							|  |  |  |           rescue ::JSON::ParserError | 
					
						
							|  |  |  |             raw_body | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           # store statistic | 
					
						
							| 
									
										
										
										
											2015-09-29 16:16:59 +03:00
										 |  |  |           settings.mongo.insert_statistic request.env['REMOTE_USER'], request.path, request.request_method, body, response.status | 
					
						
							| 
									
										
										
										
											2014-12-12 17:00:06 +03:00
										 |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end | 
					
						
							|  |  |  | 
 |