Class: ManyfoldApi::V0::GroupDeserializer
- Inherits:
-
BaseDeserializer
- Object
- BaseDeserializer
- ManyfoldApi::V0::GroupDeserializer
- Defined in:
- app/deserializers/manyfold_api/v0/group_deserializer.rb
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from BaseDeserializer
#dereference, #initialize, schema_ref, schema_ref_name
Constructor Details
This class inherits a constructor from ManyfoldApi::V0::BaseDeserializer
Class Method Details
.schema ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 |
# File 'app/deserializers/manyfold_api/v0/group_deserializer.rb', line 28 def self.schema { type: :object, properties: { name: {type: :string, example: "Patrons"}, description: {type: :string, example: "My subscribers"}, add_members: {type: :array, items: {type: :string, example: "username / email / fediverse address"}}, remove_members: {type: :array, items: {type: :string, example: "username / email / fediverse address"}} } } end |
Instance Method Details
#deserialize ⇒ Object
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'app/deserializers/manyfold_api/v0/group_deserializer.rb', line 3 def deserialize return unless @object members = [] if @object["add_members"] members += @object["add_members"].filter_map do {user: User.match!(identifier: it, invite: true)} rescue ActiveRecord::RecordNotFound nil end end if @object["remove_members"] && @record members += @object["remove_members"].filter_map do {id: @record.memberships.find_by(user: User.match!(identifier: it))&.id, _destroy: "1"} rescue ActiveRecord::RecordNotFound nil end end memberships_attributes = (0...members.count).map(&:to_s).zip(members).to_h { name: @object["name"], description: @object["description"], memberships_attributes: memberships_attributes }.compact end |