Improve channel, user and api_key models with basic scopes, correct references and protect attributes.
Simplify channels & user controllers and models, moving code to the models. Remove catch-all route and ensure all actions are specified, fixing url paths. Change clone to dup in feed_controller as using clone seems to affect the cloned object (problem only in ruby 1.9.3?)
This commit is contained in:
		
							
								
								
									
										12
									
								
								config/initializers/wrap_parameters.rb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								config/initializers/wrap_parameters.rb
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
# This file contains settings for ActionController::ParamsWrapper which
 | 
			
		||||
# is enabled by default.
 | 
			
		||||
 | 
			
		||||
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
 | 
			
		||||
ActiveSupport.on_load(:action_controller) do
 | 
			
		||||
  wrap_parameters format: [:json]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
# # Disable root element in JSON by default.
 | 
			
		||||
# ActiveSupport.on_load(:active_record) do
 | 
			
		||||
#   self.include_root_in_json = false
 | 
			
		||||
# end
 | 
			
		||||
@@ -1,42 +1,52 @@
 | 
			
		||||
Thingspeak::Application.routes.draw do
 | 
			
		||||
	# main data posts using this route
 | 
			
		||||
	match 'update', :to => 'channels#post_data', :as => 'update', :via => ((GET_SUPPORT) ? ['get', 'post'] : 'post')
 | 
			
		||||
  # main data posts using this route
 | 
			
		||||
  match 'update', :to => 'channels#post_data', :as => 'update', :via => ((GET_SUPPORT) ? ['get', 'post'] : 'post')
 | 
			
		||||
 | 
			
		||||
	# handle subdomain routes
 | 
			
		||||
	match '/', :to => 'subdomains#index', :constraints => { :subdomain => 'api' }
 | 
			
		||||
	match 'crossdomain', :to => 'subdomains#crossdomain', :constraints => { :subdomain => 'api' }
 | 
			
		||||
	match 'crossdomain', :to => 'subdomains#crossdomain'
 | 
			
		||||
  # handle subdomain routes
 | 
			
		||||
  match '/', :to => 'subdomains#index', :constraints => { :subdomain => 'api' }
 | 
			
		||||
  match 'crossdomain', :to => 'subdomains#crossdomain', :constraints => { :subdomain => 'api' }
 | 
			
		||||
  match 'crossdomain', :to => 'subdomains#crossdomain'
 | 
			
		||||
 | 
			
		||||
	root :to => 'pages#home'
 | 
			
		||||
  root :to => 'pages#home'
 | 
			
		||||
 | 
			
		||||
	resource :user_session
 | 
			
		||||
	resource 'account', :to => 'users'
 | 
			
		||||
	resources :users
 | 
			
		||||
  resource :user_session
 | 
			
		||||
  resource 'account', :to => 'users'
 | 
			
		||||
  resources :users do
 | 
			
		||||
    member do      
 | 
			
		||||
      get :reset_password
 | 
			
		||||
      put :change_password
 | 
			
		||||
    end
 | 
			
		||||
    collection do
 | 
			
		||||
      get :forgot_password
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
	# specific feeds
 | 
			
		||||
  # specific feeds
 | 
			
		||||
  match 'channels/:channel_id/feed(s)(.:format)' => 'feed#index'
 | 
			
		||||
	match 'channels/:channel_id/field(s)/:field_id(.:format)' => 'feed#index'
 | 
			
		||||
	match 'channels/:channel_id/field(s)/:field_id/:id(.:format)' => 'feed#show'
 | 
			
		||||
	match 'channels/:channel_id/feed(s)/entry/:id(.:format)' => 'feed#show'
 | 
			
		||||
  match 'channels/:channel_id/field(s)/:field_id(.:format)' => 'feed#index'
 | 
			
		||||
  match 'channels/:channel_id/field(s)/:field_id/:id(.:format)' => 'feed#show'
 | 
			
		||||
  match 'channels/:channel_id/feed(s)/entry/:id(.:format)' => 'feed#show'
 | 
			
		||||
 | 
			
		||||
	# import
 | 
			
		||||
	match 'channels/:channel_id/import' => 'channels#import', :as => 'channel_import'
 | 
			
		||||
	match 'channels/:channel_id/upload' => 'channels#upload'
 | 
			
		||||
  # import
 | 
			
		||||
  match 'channels/:channel_id/import' => 'channels#import', :as => 'channel_import'
 | 
			
		||||
  match 'channels/:channel_id/upload' => 'channels#upload'
 | 
			
		||||
 | 
			
		||||
	# nest feeds into channels
 | 
			
		||||
	resources :channels do
 | 
			
		||||
		resources :feed
 | 
			
		||||
  # nest feeds into channels
 | 
			
		||||
  resources :channels do
 | 
			
		||||
    member do
 | 
			
		||||
      get :import
 | 
			
		||||
      post :upload
 | 
			
		||||
      post :clear
 | 
			
		||||
    end
 | 
			
		||||
    resources :feed
 | 
			
		||||
    resources :feeds, :to => 'feed'
 | 
			
		||||
		resources :api_keys
 | 
			
		||||
		resources :status
 | 
			
		||||
    resources :api_keys, :except => [:show, :edit]
 | 
			
		||||
    resources :status
 | 
			
		||||
    resources :statuses, :to => 'statuses'
 | 
			
		||||
		resources :charts
 | 
			
		||||
	end
 | 
			
		||||
    resources :charts
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
	match 'login' => 'user_sessions#new', :as => :login
 | 
			
		||||
	match 'logout' => 'user_sessions#destroy', :as => :logout
 | 
			
		||||
	match 'users/reset_password', :to => 'users#reset_password', :as => 'reset_password'
 | 
			
		||||
	match 'forgot_password', :to => 'users#forgot_password', :as => 'forgot_password'
 | 
			
		||||
 | 
			
		||||
  match ':controller(/:action(/:id(.:format)))'
 | 
			
		||||
  match 'login' => 'user_sessions#new', :as => :login, :via => :get
 | 
			
		||||
  match 'logout' => 'user_sessions#destroy', :as => :logout, :via => :delete
 | 
			
		||||
  match 'mailer/resetpassword', :to => 'mailer#resetpassword', :as => :resetpassword, :via => :post
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user