Beispiel #1
0
        public CreateCommandDocumentResponse CreateCommandDocument(CreateCommandDocumentRequest request)
        {
            var tpl      = GetCommandTemplate(request.Command);
            var checkreq = CheckForMandatoryParameters(tpl, request);

            if (!checkreq.Success)
            {
                return(checkreq);
            }

            var checktyp = CheckForCorrectTypes(tpl, request);

            if (!checktyp.Success)
            {
                return(checktyp);
            }

            var checkval = CheckForCorrectValues(tpl, request);

            if (!checkval.Success)
            {
                return(checkval);
            }

            return(new CreateCommandDocumentResponse()
            {
                Success = true, Document = BuildDocument(request)
            });
        }
Beispiel #2
0
        JObject BuildDocument(CreateCommandDocumentRequest request)
        {
            var message = new JObject();

            message.Add("command", request.Command);
            if (request.Body.Count > 0)
            {
                message.Add("parameters", request.Body);
            }
            var document = new JObject();

            document.Add("operation", "remoteManagement");
            document.Add("ttl", new DateTimeOffset(DateTime.UtcNow.AddSeconds(request.TTL)).ToUnixTimeSeconds());
            document.Add("message", message);
            return(document);
        }
Beispiel #3
0
 private CreateCommandDocumentResponse CheckForCorrectValues(CommandTemplate tpl, CreateCommandDocumentRequest request)
 {
     if (tpl.Parameters == null)
     {
         return(new CreateCommandDocumentResponse()
         {
             Success = true
         });
     }
     foreach (var item in tpl.Parameters)
     {
         if (String.IsNullOrEmpty(item.AcceptedValues))
         {
             continue;
         }
         var accepted = item.AcceptedValues.Split(',');
         var value    = request.Body[item.Name];
         if (value != null)
         {
             if (!AreTypesEqual(value.Type, item.ParameterType))
             {
                 return(new CreateCommandDocumentResponse()
                 {
                     Success = false,
                     ErrorText = $"Invalid type for attribute '{item.Name}' in 'parameters' object. '{value.Type}' instead of '{item.ParameterType}'"
                 });
             }
             if (Array.IndexOf(accepted, value.ToString()) == -1)
             {
                 return(new CreateCommandDocumentResponse()
                 {
                     Success = false,
                     ErrorText = $"Invalid value for attribute '{item.Name}' in 'parameters' object. '{value.ToString()}' instead of '{item.AcceptedValues}'"
                 });
             }
         }
     }
     return(new CreateCommandDocumentResponse()
     {
         Success = true
     });
 }
Beispiel #4
0
 private CreateCommandDocumentResponse CheckForCorrectTypes(CommandTemplate tpl, CreateCommandDocumentRequest request)
 {
     if (tpl.Parameters == null)
     {
         return(new CreateCommandDocumentResponse()
         {
             Success = true
         });
     }
     foreach (var item in tpl.Parameters)
     {
         var value = request.Body[item.Name];
         if (value != null)
         {
             if (!AreTypesEqual(value.Type, item.ParameterType))
             {
                 return(new CreateCommandDocumentResponse()
                 {
                     Success = false,
                     ErrorText = $"Invalid type for attribute '{item.Name}' in 'parameters' object. '{value.Type}' instead of '{item.ParameterType}'"
                 });
             }
         }
     }
     return(new CreateCommandDocumentResponse()
     {
         Success = true
     });
 }
Beispiel #5
0
 private CreateCommandDocumentResponse CheckForMandatoryParameters(CommandTemplate tpl, CreateCommandDocumentRequest request)
 {
     if (tpl.Parameters == null)
     {
         return(new CreateCommandDocumentResponse()
         {
             Success = true
         });
     }
     if (request.CheckRequired)
     {
         foreach (var item in tpl.Parameters)
         {
             if (item.Required)
             {
                 var value = request.Body[item.Name];
                 if (value == null)
                 {
                     return new CreateCommandDocumentResponse()
                            {
                                Success = false, ErrorText = $"Required attribute '{item.Name}' in 'parameters' object missing."
                            }
                 }
                 ;
             }
         }
     }
     return(new CreateCommandDocumentResponse()
     {
         Success = true
     });
 }