Code Duplication    Length = 29-35 lines in 2 locations

kytos/core/auth.py 2 locations

@@ 276-310 (lines=35) @@
273
                break
274
        return response["answer"], response["code"]
275
276
    @authenticated
277
    def _delete_user(self, uid):
278
        """Delete a user using Storehouse."""
279
        response = {}
280
281
        def _delete_user_callback(_event, box, error):
282
            nonlocal response
283
            if not box:
284
                response = {
285
                    "answer": f'User with uid {uid} not found',
286
                    "code": HTTPStatus.NOT_FOUND.value
287
                }
288
            elif error:
289
                response = {
290
                    "answer": "User has not been deleted",
291
                    "code": HTTPStatus.INTERNAL_SERVER_ERROR.value,
292
                }
293
            else:
294
                response = {
295
                    "answer": "User successfully deleted",
296
                    "code": HTTPStatus.OK.value,
297
                }
298
299
        content = {
300
            "box_id": uid,
301
            "namespace": self.namespace,
302
            "callback": _delete_user_callback,
303
        }
304
        event = KytosEvent(name="kytos.storehouse.delete", content=content)
305
        self.controller.buffers.app.put(event)
306
        while True:
307
            time.sleep(0.1)
308
            if response:
309
                break
310
        return response["answer"], response["code"]
311
312
    @authenticated
313
    def _update_user(self, uid):
@@ 202-230 (lines=29) @@
199
            del answer['data']['password']
200
        return answer, code
201
202
    @authenticated
203
    def _list_users(self):
204
        """List all users using Storehouse."""
205
        response = {}
206
207
        def _list_users_callback(_event, boxes, error):
208
            nonlocal response
209
            if error:
210
                response = {
211
                    "answer": "Users cannot be listed",
212
                    "code": HTTPStatus.INTERNAL_SERVER_ERROR.value,
213
                }
214
            else:
215
                response = {
216
                    "answer": {"users": boxes},
217
                    "code": HTTPStatus.OK.value,
218
                }
219
220
        content = {
221
            "namespace": self.namespace,
222
            "callback": _list_users_callback,
223
        }
224
        event = KytosEvent(name="kytos.storehouse.list", content=content)
225
        self.controller.buffers.app.put(event)
226
        while True:
227
            time.sleep(0.1)
228
            if response:
229
                break
230
        return response["answer"], response["code"]
231
232
    @authenticated
233
    def _create_user(self):