diff --git a/app/controllers/repp/v1/contacts_controller.rb b/app/controllers/repp/v1/contacts_controller.rb index 504948ed9..69d4ecc96 100644 --- a/app/controllers/repp/v1/contacts_controller.rb +++ b/app/controllers/repp/v1/contacts_controller.rb @@ -1,3 +1,4 @@ +require 'serializers/repp/contact' module Repp module V1 class ContactsController < BaseController @@ -14,7 +15,8 @@ module Repp ## GET /repp/v1/contacts/1 def show - render_success(data: @contact.as_json) + serializer = ::Serializers::Repp::Contact.new(@contact, show_address: Contact.address_processing?) + render_success(data: serializer.to_json) end ## GET /repp/v1/contacts/check/1 @@ -76,11 +78,13 @@ module Repp def showable_contacts(details, limit, offset) contacts = current_user.registrar.contacts.limit(limit).offset(offset) - unless Contact.address_processing? && params[:details] == 'true' - contacts = contacts.select(Contact.attribute_names - Contact.address_attribute_names) - end - contacts = contacts.pluck(:code) unless details + return contacts.pluck(:code) unless details + + contacts = contacts.map do |contact| + serializer = ::Serializers::Repp::Contact.new(contact, show_address: Contact.address_processing?) + serializer.to_json + end contacts end @@ -104,7 +108,7 @@ module Repp def contact_create_params(required: true) params.require(:contact).require(%i[name email phone]) if required - params.require(:contact).permit(:name, :email, :phone, :code) + params.require(:contact).permit(:name, :email, :phone, :id) end def contact_ident_params(required: true) diff --git a/app/models/epp/contact.rb b/app/models/epp/contact.rb index 3f0f3e8ab..50ebac065 100644 --- a/app/models/epp/contact.rb +++ b/app/models/epp/contact.rb @@ -36,7 +36,7 @@ class Epp::Contact < Contact attrs = epp ? attrs_from(frame, new_record: true) : frame super( attrs.merge( - code: epp ? frame.css('id').text : frame[:code], + code: epp ? frame.css('id').text : frame[:id], registrar: registrar ) ) diff --git a/lib/serializers/repp/contact.rb b/lib/serializers/repp/contact.rb new file mode 100644 index 000000000..fe08a6f7d --- /dev/null +++ b/lib/serializers/repp/contact.rb @@ -0,0 +1,42 @@ +module Serializers + module Repp + class Contact + attr_reader :contact + + def initialize(contact, show_address:) + @contact = contact + @show_address = show_address + end + + def to_json + json = { + id: contact.code, + name: contact.name, + ident: { + code: contact.ident, + type: contact.ident_type, + country_code: contact.ident_country_code, + }, + email: contact.email, + phone: contact.phone, + fax: contact.fax, + auth_info: contact.auth_info, + statuses: contact.statuses, + disclosed_attributes: contact.disclosed_attributes, + } + + return json unless @show_address + + json[:address] = { + street: contact.street, + zip: contact.zip, + city: contact.city, + state: contact.state, + country_code: contact.country_code, + } + + json + end + end + end +end