taurgis/SynologyStatus

View on GitHub
js/synology.js

Summary

Maintainability
A
45 mins
Test Coverage
define(["vendor/quickconnectid.min"], function() {
  var Synology = {
    authenticate: function(username, password, server, ssl, success, error) {
      getBaseUrl(server, ssl, function(baseUrl) {
          $.get(baseUrl + "/webapi/auth.cgi?api=SYNO.API.Auth&version=2&method=login&account=" + encodeURIComponent(username) + "&passwd=" + encodeURIComponent(password) + "&session=DownloadStation&format=sid", function(data) {

            var loginResult = JSON.parse(data);
            if (loginResult.success) {
              success(baseUrl)
            } else {
              error();
            }
          }).error(function() {
            error();
          });
        },
        function(errorMessage) {
          error(errorMessage);
        });
    },
    startFetchDSMData: function(baseUrl, success, error) {
      $.get(baseUrl + "/webman/modules/SystemInfoApp/SystemInfo.cgi?query=systemHealth", function(info) {
        var infoResult = JSON.parse(info);
        $.get(baseUrl + "/webapi/entry.cgi?stop_when_error=false&compound=%5B%7B%22api%22%3A%22SYNO.Entry.Request%22%2C%22method%22%3A%22request%22%2C%22version%22%3A1%2C%22compound%22%3A%5B%7B%22api%22%3A%22SYNO.Core.AppNotify%22%2C%22method%22%3A%22get%22%2C%22version%22%3A1%7D%5D%7D%2C%7B%22api%22%3A%22SYNO.Core.System.Utilization%22%2C%22method%22%3A%22get%22%2C%22version%22%3A1%2C%22type%22%3A%22current%22%7D%5D&api=SYNO.Entry.Request&method=request&version=1", function(entry) {
          var entryResult = entry;
          if (infoResult.disks) {
            success({
              baseUrl: baseUrl,
              info: infoResult,
              entry: entryResult
            })
          } else {
            error("Error fetching DSM status!");
          }
        }).error(function() {
          error("Error fetching DSM info.")
        });

      }).error(function() {
        error("Error fetching system info.")
      });
    }
  };
  return Synology;
});