Rake task for making api log schema

This commit is contained in:
Martin Lensment 2015-01-09 16:56:52 +02:00
parent d5a824064e
commit 7b920cac2f
6 changed files with 70 additions and 13 deletions

View file

@ -9,7 +9,7 @@ module Epp::Common
included do included do
protect_from_forgery with: :null_session protect_from_forgery with: :null_session
before_action :validate_request, only: [:proxy] before_action :validate_request, only: [:proxy]
after_action :log_to_epp_log after_action :write_to_epp_log
helper_method :current_epp_user helper_method :current_epp_user
end end
@ -114,15 +114,20 @@ module Epp::Common
handle_errors and return unless send(validation_method) handle_errors and return unless send(validation_method)
end end
def log_to_epp_log def render_epp_response(*args)
@response = render_to_string(*args)
render xml: @response
end
def write_to_epp_log
ApiLog::EppLog.create!({ ApiLog::EppLog.create!({
request: params[:frame], request: params[:frame],
request_command: params[:command], request_command: params[:command],
request_successful: epp_errors.empty?, request_successful: epp_errors.empty?,
request_object: OBJECT_TYPES[params_hash['epp']['xmlns:ns2']], request_object: OBJECT_TYPES[params_hash['epp']['xmlns:ns2']],
response: @response, response: @response,
api_user_name: current_epp_user.try(:to_s), api_user_name: @epp_user.try(:to_s) || current_epp_user.try(:to_s),
api_user_registrar: current_epp_user.try(:registrar).try(:to_s) api_user_registrar: @epp_user.try(:registrar).try(:to_s) || current_epp_user.try(:registrar).try(:to_s)
}) })
end end
end end

View file

@ -5,7 +5,7 @@ class Epp::SessionsController < ApplicationController
private private
def hello def hello
render 'greeting' render_epp_response('greeting')
end end
def login def login
@ -13,17 +13,18 @@ class Epp::SessionsController < ApplicationController
if @epp_user.try(:active) if @epp_user.try(:active)
epp_session[:epp_user_id] = @epp_user.id epp_session[:epp_user_id] = @epp_user.id
render 'login_success' render_epp_response('login_success')
else else
response.headers['X-EPP-Returncode'] = '2200' response.headers['X-EPP-Returncode'] = '2200'
render 'login_fail' render_epp_response('login_fail')
end end
end end
def logout def logout
@epp_user = current_epp_user # cache current_epp_user for logging
epp_session[:epp_user_id] = nil epp_session[:epp_user_id] = nil
response.headers['X-EPP-Returncode'] = '1500' response.headers['X-EPP-Returncode'] = '1500'
render 'logout' render_epp_response('logout')
end end
### HELPER METHODS ### ### HELPER METHODS ###

View file

@ -15,6 +15,7 @@ module Epp::PollHelper
if @message.attached_obj_type == 'Keyrelay' if @message.attached_obj_type == 'Keyrelay'
@response = render_to_string('epp/poll/poll_keyrelay') @response = render_to_string('epp/poll/poll_keyrelay')
render xml: @response render xml: @response
# render 'epp/poll/poll_keyrelay'
else else
render 'epp/poll/poll_req' render 'epp/poll/poll_req'
end end

43
db/api_log_schema.rb Normal file
View file

@ -0,0 +1,43 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition.
#
# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 0) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
create_table "epp_logs", force: true do |t|
t.text "request"
t.text "response"
t.string "request_command"
t.string "request_object"
t.string "request_successful"
t.string "api_user_name"
t.string "api_user_registrar"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "repp_logs", force: true do |t|
t.text "request"
t.text "response"
t.string "request_command"
t.string "request_object"
t.string "request_successful"
t.string "api_user_name"
t.string "api_user_registrar"
t.datetime "created_at"
t.datetime "updated_at"
end
end

View file

@ -41,7 +41,6 @@ User.where(
username: 'user1', username: 'user1',
password: 'test1', password: 'test1',
email: 'user1@example.ee', email: 'user1@example.ee',
admin: true,
identity_code: '37810013855', identity_code: '37810013855',
country: Country.where(name: 'Estonia').first country: Country.where(name: 'Estonia').first
).first_or_create ).first_or_create
@ -50,9 +49,7 @@ User.where(
username: 'user2', username: 'user2',
password: 'test2', password: 'test2',
email: 'user2@example.ee', email: 'user2@example.ee',
admin: false,
identity_code: '37810010085', identity_code: '37810010085',
registrar_id: registrar1.id,
country: Country.where(name: 'Estonia').first country: Country.where(name: 'Estonia').first
).first_or_create ).first_or_create
@ -60,9 +57,7 @@ User.where(
username: 'user3', username: 'user3',
password: 'test3', password: 'test3',
email: 'user3@example.ee', email: 'user3@example.ee',
admin: false,
identity_code: '37810010727', identity_code: '37810010727',
registrar_id: registrar2.id,
country: Country.where(name: 'Estonia').first country: Country.where(name: 'Estonia').first
).first_or_create ).first_or_create

12
lib/tasks/api_log.rake Normal file
View file

@ -0,0 +1,12 @@
namespace :api_log do
namespace :schema do
# desc 'Dump additional database schema'
task :dump => [:environment] do
filename = "#{Rails.root}/db/api_log_schema.rb"
File.open(filename, 'w:utf-8') do |file|
ActiveRecord::Base.establish_connection("api_log_#{Rails.env}")
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
end
end
end
end