Commit a791339

mo <mo.khan@gmail.com>
2018-04-27 22:18:45
collapse repository into one class.
1 parent 96b99ad
lib/del/connection.rb
@@ -2,10 +2,10 @@ module Del
   class Connection
     attr_reader :configuration, :rooms, :users
 
-    def initialize(configuration:, users:, rooms:)
+    def initialize(configuration:)
       @configuration = configuration
-      @rooms = rooms
-      @users = users
+      @rooms = configuration[:rooms]
+      @users = configuration[:users]
     end
 
     def connect(robot)
@@ -18,7 +18,7 @@ module Del
       client.auth(configuration[:password])
       roster = Jabber::Roster::Helper.new(client, false)
       roster.add_update_callback do |old_item, item|
-        users.create(item) if item
+        users.upsert(item) if item
       end
       roster.get_roster
       roster.wait_for_roster
lib/del/repository.rb
@@ -0,0 +1,12 @@
+module Del
+  class Repository
+    def initialize(storage = Set.new)
+      @storage = storage
+    end
+
+    def upsert(item)
+      Del.logger.debug(item)
+      @storage << item
+    end
+  end
+end
lib/del/robot.rb
@@ -1,14 +1,13 @@
 module Del
   class Robot
     attr_reader :connection, :router
+    attr_reader :users, :rooms
 
     def initialize(configuration:)
-      @connection = Connection.new(
-        configuration: configuration,
-        users: users,
-        rooms: rooms,
-      )
+      @connection = Connection.new(configuration: configuration)
       @router = configuration[:router]
+      @users = configuration[:users]
+      @rooms = configuration[:rooms]
     end
 
     def get_funky!
@@ -25,15 +24,5 @@ module Del
     def send_message(jid, message)
       connection.deliver(jid, message)
     end
-
-    private
-
-    def users
-      @users ||= UserRepository.new
-    end
-
-    def rooms
-      @rooms ||= RoomRepository.new
-    end
   end
 end
lib/del/room_repository.rb
@@ -1,11 +0,0 @@
-module Del
-  class RoomRepository
-    def initialize
-      @rooms = Set.new
-    end
-
-    def upsert(room)
-      @rooms << room
-    end
-  end
-end
lib/del/user.rb
@@ -1,7 +0,0 @@
-module Del
-  class User
-    def initialize(attributes)
-      @attributes = attributes
-    end
-  end
-end
lib/del/user_repository.rb
@@ -1,11 +0,0 @@
-module Del
-  class UserRepository
-    def initialize
-      @users = Set.new
-    end
-
-    def create(item)
-      @users << User.new(item.attributes)
-    end
-  end
-end
lib/del.rb
@@ -8,9 +8,7 @@ require "xmpp4r/roster/helper/roster"
 require "del/connection"
 require "del/default_router"
 require "del/robot"
-require "del/room_repository"
-require "del/user"
-require "del/user_repository"
+require "del/repository"
 require "del/version"
 
 module Del
@@ -30,10 +28,12 @@ module Del
     @configuration ||= {
       host: ENV.fetch("DEL_HOST"),
       jid: ENV.fetch("DEL_JID"),
+      logger: Logger.new(STDOUT),
       muc_domain: ENV.fetch("DEL_MUC_DOMAIN"),
       password: ENV.fetch("DEL_PASSWORD"),
+      rooms: Repository.new,
       router: DefaultRouter.new,
-      logger: Logger.new(STDOUT)
+      users: Repository.new,
     }
   end