My routes.rb -
Rails.application.routes.draw do
root 'welcome#index'
namespace :api, defaults: { format: :json } do
namespace :v1 do
get "/users/:cv_id" => "engine#users_get"
post "/users" => "engine#users_add"
end
end
and my main controller is --
class Api::V1::MainController < ApplicationController
http_basic_authenticate_with name: ENV["API_USERNAME"], password: ENV["API_PASSWORD"]
API_CMDS_LIST = {
"Engine" => [:users_add, :users_update],
}
include Api::V1::ErrorMessage
skip_before_filter :verify_authenticity_token
protect_from_forgery with: :null_session
def resulting_json(resp)
if resp[:result] == "error" && !resp[:code]
resp[:code] = Api::V1::ErrorMessage::CODES[resp[:message]] || Api::V1::ErrorMessage::DEFAULT_CODE
end
render json: resp
end
def authenticate
#authenticate_or_request_with_http_basic do |user, password|
#File.write('test.txt', "USER: #{user}. PASS: #{password}")
#@user && password == @user.secret_token #&& @user.belongs_to_active_brand?
true
#end
end
def validate_request
action = params[:action]
klass = API_CMDS_LIST.select{ |klass, methods| methods.include?(action.to_sym) }.keys[0]
@req = "Api::V1::#{klass}".constantize.new(send("# {action}_params").merge( {user: @user} ), request)
if !@req.valid?
err_msg = @req.errors.full_messages.first
code = Api::V1::ErrorMessage::CODES[err_msg] || Api::V1::ErrorMessage::DEFAULT_CODE
render json: { result: "error", msg: err_msg, code: code } and return
end
end
end
and engine controller code is -
class Api::V1::EngineController < Api::V1::MainController
include Api::V1::ErrorMessage
before_filter :validate_request
API_CMDS_LIST["Engine"].each do |method|
define_method(method) do
response = @req.send(method)
resulting_json(response)
end
end
def users_add_params
params.permit(:first_name,
:last_name)
end
end
but when i try to hit the endpoint "/users" with params {first_name : "satyam",last_name:"agrawal"} it gives me this error ---
Processing by Api::V1::EngineController#users_add as JSON Parameters: {"first_name"=>"satyam", "last_name"=>"agrawal"} Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.0ms)
TypeError (no implicit conversion of nil into String):
activesupport (5.0.1) lib/active_support/security_utils.rb:23:in digest' activesupport (5.0.1) lib/active_support/security_utils.rb:23:in
hexdigest' activesupport (5.0.1) lib/active_support/security_utils.rb:23:in variable_size_secure_compare' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:75:in
block (2 levels) in http_basic_authenticate_with' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:97:in call' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:97:in
authenticate' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:87:in authenticate_with_http_basic' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:83:in
authenticate_or_request_with_http_basic' actionpack (5.0.1) lib/action_controller/metal/http_authentication.rb:71:in block in http_basic_authenticate_with' activesupport (5.0.1) lib/active_support/callbacks.rb:396:in
instance_exec' activesupport (5.0.1) lib/active_support/callbacks.rb:396:in block in make_lambda' activesupport (5.0.1) lib/active_support/callbacks.rb:169:in
call' activesupport (5.0.1) lib/active_support/callbacks.rb:169:in block (2 levels) in halting' actionpack (5.0.1) lib/abstract_controller/callbacks.rb:12:in
call' actionpack (5.0.1) lib/abstract_controller/callbacks.rb:12:in block (2 levels) in <module:Callbacks>' activesupport (5.0.1) lib/active_support/callbacks.rb:170:in
call' activesupport (5.0.1) lib/active_support/callbacks.rb:170:in block in halting' activesupport (5.0.1) lib/active_support/callbacks.rb:454:in
call' activesupport (5.0.1) lib/active_support/callbacks.rb:454:in block in call' activesupport (5.0.1) lib/active_support/callbacks.rb:454:in
each' activesupport (5.0.1) lib/active_support/callbacks.rb:454:in call' activesupport (5.0.1) lib/active_support/callbacks.rb:101:in
run_callbacks' activesupport (5.0.1) lib/active_support/callbacks.rb:750:in _run_process_action_callbacks' activesupport (5.0.1) lib/active_support/callbacks.rb:90:in
run_callbacks' actionpack (5.0.1) lib/abstract_controller/callbacks.rb:19:in process_action' actionpack (5.0.1) lib/action_controller/metal/rescue.rb:20:in
process_action' actionpack (5.0.1) lib/action_controller/metal/instrumentation.rb:32:in block in process_action' activesupport (5.0.1) lib/active_support/notifications.rb:164:in
block in instrument' activesupport (5.0.1) lib/active_support/notifications/instrumenter.rb:21:in instrument' activesupport (5.0.1) lib/active_support/notifications.rb:164:in
instrument' actionpack (5.0.1) lib/action_controller/metal/instrumentation.rb:30:in process_action' actionpack (5.0.1) lib/action_controller/metal/params_wrapper.rb:248:in
process_action' activerecord (5.0.1) lib/active_record/railties/controller_runtime.rb:18:in process_action' actionpack (5.0.1) lib/abstract_controller/base.rb:126:in
process' actionview (5.0.1) lib/action_view/rendering.rb:30:in process' actionpack (5.0.1) lib/action_controller/metal.rb:190:in
dispatch' actionpack (5.0.1) lib/action_controller/metal.rb:262:in dispatch' actionpack (5.0.1) lib/action_dispatch/routing/route_set.rb:50:in
dispatch' actionpack (5.0.1) lib/action_dispatch/routing/route_set.rb:32:in serve' actionpack (5.0.1) lib/action_dispatch/journey/router.rb:39:in
block in serve' actionpack (5.0.1) lib/action_dispatch/journey/router.rb:26:in each' actionpack (5.0.1) lib/action_dispatch/journey/router.rb:26:in
serve' actionpack (5.0.1) lib/action_dispatch/routing/route_set.rb:725:in call' rack (2.0.1) lib/rack/etag.rb:25:in
call' rack (2.0.1) lib/rack/conditional_get.rb:38:in call' rack (2.0.1) lib/rack/head.rb:12:in
call' rack (2.0.1) lib/rack/session/abstract/id.rb:222:in context' rack (2.0.1) lib/rack/session/abstract/id.rb:216:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/cookies.rb:613:in call' activerecord (5.0.1) lib/active_record/migration.rb:553:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/callbacks.rb:38:in block in call' activesupport (5.0.1) lib/active_support/callbacks.rb:97:in
run_callbacks' activesupport (5.0.1) lib/active_support/callbacks.rb:750:in _run_call_callbacks' activesupport (5.0.1) lib/active_support/callbacks.rb:90:in
run_callbacks' actionpack (5.0.1) lib/action_dispatch/middleware/callbacks.rb:36:in call' actionpack (5.0.1) lib/action_dispatch/middleware/executor.rb:12:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/remote_ip.rb:79:in call' actionpack (5.0.1) lib/action_dispatch/middleware/debug_exceptions.rb:49:in
call' web-console (3.4.0) lib/web_console/middleware.rb:135:in call_app' web-console (3.4.0) lib/web_console/middleware.rb:28:in
block in call' web-console (3.4.0) lib/web_console/middleware.rb:18:in catch' web-console (3.4.0) lib/web_console/middleware.rb:18:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/show_exceptions.rb:31:in call' railties (5.0.1) lib/rails/rack/logger.rb:36:in
call_app' railties (5.0.1) lib/rails/rack/logger.rb:24:in block in call' activesupport (5.0.1) lib/active_support/tagged_logging.rb:69:in
block in tagged' activesupport (5.0.1) lib/active_support/tagged_logging.rb:26:in tagged' activesupport (5.0.1) lib/active_support/tagged_logging.rb:69:in
tagged' railties (5.0.1) lib/rails/rack/logger.rb:24:in call' sprockets-rails (3.2.0) lib/sprockets/rails/quiet_assets.rb:13:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/request_id.rb:24:in call' rack (2.0.1) lib/rack/method_override.rb:22:in
call' rack (2.0.1) lib/rack/runtime.rb:22:in call' activesupport (5.0.1) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in
call' actionpack (5.0.1) lib/action_dispatch/middleware/executor.rb:12:in call' actionpack (5.0.1) lib/action_dispatch/middleware/static.rb:136:in
call' rack (2.0.1) lib/rack/sendfile.rb:111:in call' railties (5.0.1) lib/rails/engine.rb:522:in
call' puma (3.7.1) lib/puma/configuration.rb:232:in call' puma (3.7.1) lib/puma/server.rb:578:in
handle_request' puma (3.7.1) lib/puma/server.rb:415:in process_client' puma (3.7.1) lib/puma/server.rb:275:in
block in run' puma (3.7.1) lib/puma/thread_pool.rb:120:in call' puma (3.7.1) lib/puma/thread_pool.rb:120:in
block in spawn_thread'
please help me to sort it out
Aucun commentaire:
Enregistrer un commentaire