Class: NetworkManager::UserHandler
- Inherits:
-
NetworkManager
- Object
- NetworkManager
- NetworkManager::UserHandler
- Defined in:
- app/services/network_manager/user_handler.rb
Overview
Synchronizing users with central site
Constant Summary collapse
- PATH =
"#{MAIN_HOST}/network/users"
Constants inherited from NetworkManager
Instance Attribute Summary
Attributes inherited from NetworkManager
Class Method Summary collapse
Instance Method Summary collapse
-
#create_local ⇒ Object
Create user from remote data.
-
#create_remote(entity) ⇒ Object
Push user to central site.
-
#update_local ⇒ Object
Update user from remote data.
- #update_remote(entity) ⇒ Object
Methods inherited from NetworkManager
ignored_attributes, permitted_attributes
Class Method Details
.entity_from_relationship_data(data) ⇒ Object
24 25 26 27 28 29 30 31 |
# File 'app/services/network_manager/user_handler.rb', line 24 def self.entity_from_relationship_data(data) return nil if data.blank? a = { uuid: data[:id] } b = { slug: data.dig(:attributes, :slug) } User.find_by(a) || User.find_by(b) end |
.relationship_data(entity, wrap = false) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/services/network_manager/user_handler.rb', line 9 def self.relationship_data(entity, wrap = false) return nil if entity.nil? data = { id: entity.uuid, type: entity.class.table_name, attributes: { slug: entity.slug } } wrap ? { data: data } : data end |
Instance Method Details
#create_local ⇒ Object
Create user from remote data
34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'app/services/network_manager/user_handler.rb', line 34 def create_local uuid = @data[:id] log_event "[I] Creating local user #{uuid}" @entity = User.new(uuid: uuid) @entity.agent = Agent.named(@data.dig(:meta, :agent_name).to_s) apply_for_create @entity.save @entity end |
#create_remote(entity) ⇒ Object
Push user to central site
68 69 70 71 72 |
# File 'app/services/network_manager/user_handler.rb', line 68 def create_remote(entity) log_event("[I] Creating remote user #{entity.id} (#{entity.uuid})") @entity = entity rest(:post, PATH, data_for_remote) end |
#update_local ⇒ Object
Update user from remote data
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'app/services/network_manager/user_handler.rb', line 49 def update_local uuid = @data[:id] log_event "[I] Updating local user #{uuid}" @entity = self.class.entity_from_relationship_data(@data) if @entity.nil? log_event "[E] Cannot find user #{uuid}" false else apply_for_update @entity.save end end |
#update_remote(entity) ⇒ Object
75 76 77 78 79 |
# File 'app/services/network_manager/user_handler.rb', line 75 def update_remote(entity) log_event("[I] Updating remote user #{entity.id} (#{entity.uuid})") @entity = entity rest(:put, "#{PATH}/#{entity.uuid}", data_for_remote) end |