Class: V0::MessagesController
- Inherits:
-
SMController
- Object
- ActionController::API
- ApplicationController
- SMController
- V0::MessagesController
- Includes:
- Filterable
- Defined in:
- app/controllers/v0/messages_controller.rb
Constant Summary
Constants inherited from ApplicationController
ApplicationController::VERSION_STATUS
Constants included from SignIn::Authentication
SignIn::Authentication::BEARER_PATTERN
Constants included from ExceptionHandling
ExceptionHandling::SKIP_SENTRY_EXCEPTION_TYPES
Instance Attribute Summary
Attributes inherited from ApplicationController
Instance Method Summary collapse
- #categories ⇒ Object
- #create ⇒ Object
- #destroy ⇒ Object
- #index ⇒ Object
- #message_params ⇒ Object private
- #move ⇒ Object
- #reply ⇒ Object
- #show ⇒ Object
- #thread ⇒ Object
- #upload_params ⇒ Object private
Methods included from Filterable
#filter_params, #filter_query, #valid_filters?, #validate_filter_params!
Methods inherited from SMController
#authorize, #client, #raise_access_denied, #use_cache?
Methods included from JsonApiPaginationLinks
#base_path, #build_page_url, #next_link, #pagination_links, #prev_link
Methods included from MHVControllerConcerns
Methods inherited from ApplicationController
#clear_saved_form, #cors_preflight, #pagination_params, #render_job_id, #routing_error, #set_csrf_header
Methods included from Traceable
Methods included from SentryControllerLogging
#set_tags_and_extra_context, #tags_context, #user_context
Methods included from SentryLogging
#log_exception_to_sentry, #log_message_to_sentry, #non_nil_hash?, #normalize_level, #rails_logger, #set_sentry_metadata
Methods included from Instrumentation
Methods included from SignIn::Authentication
#access_token, #access_token_authenticate, #authenticate, #authenticate_access_token, #bearer_token, #cookie_access_token, #handle_authenticate_error, #load_user, #load_user_object, #scrub_bearer_token, #validate_request_ip
Methods included from Headers
Methods included from ExceptionHandling
#render_errors, #report_mapped_exception, #report_original_exception, #skip_sentry_exception?, #skip_sentry_exception_types
Methods included from AuthenticationAndSSOConcerns
#authenticate, #clear_session, #extend_session!, #load_user, #log_sso_info, #render_unauthorized, #reset_session, #set_api_cookie!, #set_current_user, #set_session_expiration_header, #set_session_object, #sign_in_service_exp_time, #sign_in_service_session, #sso_cookie_content, #sso_logging_info, #validate_inbound_login_params, #validate_session
Methods included from SignIn::AudienceValidator
#authenticate, #validate_audience!
Instance Method Details
#categories ⇒ Object
80 81 82 |
# File 'app/controllers/v0/messages_controller.rb', line 80 def categories render json: CategorySerializer.new(client.get_categories) end |
#create ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'app/controllers/v0/messages_controller.rb', line 32 def create = Message.new(.merge(upload_params)) raise Common::Exceptions::ValidationErrors, unless .valid? [:id] = .delete(:draft_id) if [:draft_id].present? = { message: }.merge(upload_params) client_response = if .uploads.present? client.() else client.() end = { meta: {} } [:include] = [:attachments] if client_response. render json: MessageSerializer.new(client_response, ) end |
#destroy ⇒ Object
49 50 51 52 |
# File 'app/controllers/v0/messages_controller.rb', line 49 def destroy client.(params[:id]) head :no_content end |
#index ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'app/controllers/v0/messages_controller.rb', line 7 def index resource = client.(@current_user.uuid, params[:folder_id].to_s, use_cache?) raise Common::Exceptions::RecordNotFound, params[:folder_id] if resource.blank? resource = params[:filter].present? ? resource.find_by(filter_params) : resource resource = resource.sort(params[:sort]) resource = resource.paginate(**pagination_params) links = pagination_links(resource) = { meta: resource., links: } render json: MessagesSerializer.new(resource.data, ) end |
#message_params ⇒ Object (private)
92 93 94 |
# File 'app/controllers/v0/messages_controller.rb', line 92 def @message_params ||= params.require(:message).permit(:draft_id, :category, :body, :recipient_id, :subject) end |
#move ⇒ Object
84 85 86 87 88 |
# File 'app/controllers/v0/messages_controller.rb', line 84 def move folder_id = params.require(:folder_id) client.(params[:id], folder_id) head :no_content end |
#reply ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'app/controllers/v0/messages_controller.rb', line 63 def reply = Message.new(.merge(upload_params)).as_reply raise Common::Exceptions::ValidationErrors, unless .valid? [:id] = .delete(:draft_id) if [:draft_id].present? = { message: }.merge(upload_params) client_response = if .uploads.present? client.(params[:id], ) else client.(params[:id], ) end = { meta: {} } [:include] = [:attachments] if client_response. render json: MessageSerializer.new(client_response, ), status: :created end |
#show ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 |
# File 'app/controllers/v0/messages_controller.rb', line 20 def show = params[:id].try(:to_i) response = client.() raise Common::Exceptions::RecordNotFound, if response.blank? = { meta: response. } render json: MessageSerializer.new(response, ) end |
#thread ⇒ Object
54 55 56 57 58 59 60 61 |
# File 'app/controllers/v0/messages_controller.rb', line 54 def thread = params[:id].try(:to_i) resource = client.() raise Common::Exceptions::RecordNotFound, if resource.blank? = { meta: resource. } render json: MessagesSerializer.new(resource.data, ) end |
#upload_params ⇒ Object (private)
96 97 98 |
# File 'app/controllers/v0/messages_controller.rb', line 96 def upload_params @upload_params ||= { uploads: params[:uploads] } end |