# frozen_string_literal: true module API::V2 module Resource # Addresses API class Addresses < Grape::API desc 'Documents related routes' resource :addresses do desc 'Upload a new address approval document for current user(this is what ui using now)', success: { code: 201, message: 'New address approval document was uploaded' }, failure: [ { code: 400, message: 'Required params are empty' }, { code: 401, message: 'Invalid bearer token' }, { code: 422, message: 'Validation errors' } ] params do requires :country, type: String, allow_blank: false, desc: 'country name' requires :address, type: String, allow_blank: false, desc: 'address' requires :upload, desc: 'Array of Rack::Multipart::UploadedFile' requires :city, allow_blank: true, desc: 'city name' requires :postcode, type: String, desc: 'Any additional key: value pairs in json string format' end post do identificator = SecureRandom.hex(16) params[:upload].each do |file| doc = current_user.documents.new(upload: file, identificator: identificator, doc_type: 'Poa', doc_category: 'front_side') code_error!(doc.errors.details, 422) unless doc.save end status 201 rescue Excon::Error => e Rails.logger.error e error!('Connection error', 422) end end end end end