コード例 #1
0
        public void GetFirmwareCollection(HttpContext context)
        {
            FirmwareCollection firmwareCollection = _firmwareHandler.GetFirmwareCollection(context.Request.ParsedQuery);
            string             json = JsonSerializer.SerializeJson(firmwareCollection);

            context.Response.Payload.Write(json);
            context.Response.Status = HttpStatus.OK;
        }
コード例 #2
0
        /// <summary>
        /// Returns an instance of <see cref="FirmwareCollection"/> which contains all <see cref="Firmware"/> matching the passed query. The following query parameters can be applied:
        ///<list type="number">
        ///     <item>query parameter <code>id</code>: returns only the <see cref="Firmware"/> having the passed <see cref="Firmware.Id"/></item>
        ///     <item>query parameter <code>device</code>: returns all <see cref="Firmware"/> whose <see cref="Firmware.DeviceName"/> contains the passed value (case invariant)</item>
        ///     <item>query parameter <code>maj</code>: returns all <see cref="Firmware"/> having the passed <see cref="Firmware.MajorVersion"/></item>
        ///     <item>query parameter <code>min</code>: returns all <see cref="Firmware"/> having the passed <see cref="Firmware.MinorVersion"/></item>
        /// </list>
        /// If multiple query parameters are applied, the respective <see cref="Firmware"/> must match all query criterion in order to be in the returned list of <see cref="FirmwareCollection"/>.
        /// If the query is 'null' or empty (i.e. query.Count == 0), all <see cref="Firmware"/> handled by this class are returned.
        /// Unknown query parameters will be ignored.
        /// Additionally, the <code>uuid</code> and <code>leds</code> query parameter can be set. These parameter values will be added as query parameters in all hyperlinks of the returned resource representation such that
        /// a consumer of the REST API is navigated to an individual firmware file where these values are already injected.
        /// </summary>
        /// <param name="query">query (can be null or empty)</param>
        /// <returns>instance of <see cref="FirmwareCollection"/> containing all <see cref="Firmware"/> matching the passed query</returns>
        public FirmwareCollection GetFirmwareCollection(IDictionary <string, string> query)
        {
            FirmwareCollection firmwareCollection = new FirmwareCollection();

            //return all firmware, if no query parameters are specified
            if (query == null || query.Count == 0)
            {
                foreach (IFirmwareDataSet fds in _firmwareStorage.GetAllFirmwares())
                {
                    Firmware fw = new Firmware();
                    fw.FirmwareId    = fds.Id;
                    fw.MajorVersion  = fds.MajorVersion;
                    fw.MinorVersion  = fds.MinorVersion;
                    fw.DeviceName    = fds.DeviceName;
                    fw.FileExtension = fds.FirmwareFileExtension;
                    if (query.ContainsKey("uuid") && query.ContainsKey("leds"))
                    {
                        fw.Uuid     = query["uuid"];
                        fw.LedCount = query["leds"];
                    }
                    fw.HasRawData = _firmwareStorage.HasRawData(fds.Id);
                    firmwareCollection.FirmwareList.Add(fw);
                }
            }
            //filter firmware based on given query parameters
            else
            {
                foreach (IFirmwareDataSet fds in _firmwareStorage.GetAllFirmwares())
                {
                    if (query.ContainsKey("id"))
                    {
                        if (fds.Id.CompareTo(query["id"]) != 0)
                        {
                            continue;
                        }
                    }
                    if (query.ContainsKey("device"))
                    {
                        if (String.IsNullOrWhiteSpace(fds.DeviceName) || !fds.DeviceName.ToLower().Contains(query["device"].ToLower()))
                        {
                            continue;
                        }
                    }
                    if (query.ContainsKey("min"))
                    {
                        if (fds.MinorVersion != ApiBase.ParseInt(query["min"], BadRequestException.MSG_INVALID_MIN_MAJ_VERSION))
                        {
                            continue;
                        }
                    }
                    if (query.ContainsKey("maj"))
                    {
                        if (fds.MinorVersion != ApiBase.ParseInt(query["maj"], BadRequestException.MSG_INVALID_MIN_MAJ_VERSION))
                        {
                            continue;
                        }
                    }
                    Firmware fw = new Firmware();
                    fw.FirmwareId    = fds.Id;
                    fw.MajorVersion  = fds.MajorVersion;
                    fw.MinorVersion  = fds.MinorVersion;
                    fw.DeviceName    = fds.DeviceName;
                    fw.FileExtension = fds.FirmwareFileExtension;
                    if (query.ContainsKey("uuid") && query.ContainsKey("leds"))
                    {
                        fw.Uuid     = query["uuid"];
                        fw.LedCount = query["leds"];
                    }
                    fw.HasRawData = _firmwareStorage.HasRawData(fds.Id);
                    firmwareCollection.FirmwareList.Add(fw);
                }
            }
            return(firmwareCollection);
        }