Bonjour,

Pour me familiariser avec Javascript (et en particulier NodeJS) je me suis lancé dans un projet concret.

Tout fonctionne correctement, mais je pense "mal" utiliser le langage et qu'il y a certainement mieux a faire (pas toujours simple de s'adapter à un nouveau langage)

Dans ce projet j'ai besoin de "construire" les URL de différentes cameras IP.
L'ensemble des Information des caméras se trouve dans un fichier JSON

Aujourd'hui je vous soumet donc un petit bout de code à vos critiques/conseils/Optimisation/... (en particulier l'obligation de répétition des "tags" qui n'est pas très propre (sic))


Extrait de la "routine" de création des URLs:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const cameras_cfg = require("./cfg/cameras.json");
 
makeCameraUrl = function (camera, type, flux, user) {
    var url = camera.url;
    var Obj = {
        "@@login@@": user.login,
        "@@passwd@@": user.passwd,
        "@@ip@@": camera.ip,
        "@@stream@@": camera.flux[type].stream,
        "@@port@@": camera.flux[type].port,
        "@@flux@@": camera.flux[type][flux]
    };
    return url.replace(/@@login@@|@@passwd@@|@@ip@@|@@stream@@|@@port@@|@@flux@@/g, function (matched) { 
             return Obj[matched]; 
    });
}
 
let cam_id = "102";
let url = makeCameraUrl(cameras_cfg.devices[cam_id], "rtsp", "hd", cameras_cfg.users.view);
console.log("Url:", url);

Extrait du JSON des cameras (cameras.json):

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
{
    "users": {
        "admin": {
            "login": "admin",
            "passwd": "xxxxx"
        },
        "view": {
            "login": "user",
            "passwd": "yyyyyy"
        }
    },
    "devices": {
        "102": {
            "id": 102,
            "name": "Cam 102 PTZ",
            "ip": "192.168.0.102",
            "url": "@@stream@@://@@login@@:@@passwd@@@@@ip@@:@@port@@/@@flux@@",
            "flux": {
                "rtsp": {
                    "stream": "rtsp",
                    "port": 554,
                    "hd": "1",
                    "sd": "2"
                }
            }
        },
 
        ../..
 
        "106": {
            "id": 106,
            "name": "Cam 106",
            "ip": "192.168.0.106",
            "url": "@@stream@@://@@ip@@:@@port@@/user=@@login@@&password=@@passwd@@&@@flux@@",
            "flux": {
                "rtsp": {
                    "stream": "rtsp",
                    "port": 554,
                    "hd": "channel=1&stream=0.sdp",
                    "sd": "channel=2&stream=0.sdp"
                }
            }
        }
    }
}

Merci d'avance de m'aider à progresser dans les bonnes techniques Javascript