Example #1
0
        protected virtual void LoadCommandEndpoint(Type endpointtype)
        {
            WebApiControllerWithTokens controler = (WebApiControllerWithTokens)Activator.CreateInstance(endpointtype, args: new object[] { this, Tokens });

            controler.disableIPlockout();
            commandEndpoints.Add(endpointtype.Name, controler);
            foreach (MethodInfo M in endpointtype.GetMethods())
            {
                bool isCallable = false;
                foreach (CustomAttributeData At in M.CustomAttributes)
                {
                    if (At.AttributeType.Name == "RouteAttribute")
                    {
                        isCallable = true;
                        break;
                    }
                }
                if (isCallable == true)
                {
                    if (endpointcommandmap.ContainsKey(M.Name) == true)
                    {
                        Warn("Namespace: " + endpointtype.Name + " / Command: " + M.Name + " already found in " + endpointcommandmap[M.Name]);
                        continue;
                    }
                    if (commandnameLowerToReal.ContainsKey(M.Name.ToLowerInvariant()) == true)
                    {
                        Warn("Namespace: " + endpointtype.Name + " / Command: " + M.Name + " already found in " + endpointcommandmap[M.Name]);
                        continue;
                    }
                    endpointcommandmap.Add(M.Name, endpointtype.Name);
                    commandnameLowerToReal.Add(M.Name.ToLowerInvariant(), M.Name);
                }
            }
        }
Example #2
0
 protected KeyValuePair <bool, string> callAPIcommand(string command, string[] args)
 {
     command = commandnameLowerToReal[command.ToLowerInvariant()];
     try
     {
         string ott = Tokens.OneTimeToken();
         WebApiControllerWithTokens Endpoint = commandEndpoints[endpointcommandmap[command]];
         MethodInfo theMethod = Endpoint.GetType().GetMethod(command);
         if (theMethod != null)
         {
             List <string> argsList = args.ToList();
             argsList.Add(ott);
             string reply  = "Inconnect number of args expected: " + theMethod.GetParameters().Count().ToString() + " but got: " + argsList.Count.ToString();
             bool   status = false;
             if (argsList.Count == theMethod.GetParameters().Count())
             {
                 status = true;
                 try
                 {
                     if (Endpoint == null)
                     {
                         return(new KeyValuePair <bool, string>(false, "Endpoint is null"));
                     }
                     if (argsList.Count == 0)
                     {
                         return(new KeyValuePair <bool, string>(false, "Zero args at final check require at min 1"));
                     }
                     object[] argsWorker = argsList.ToArray <object>();
                     object   processed  = theMethod.Invoke(Endpoint, argsWorker);
                     reply = "Error";
                     if (processed != null)
                     {
                         reply = JsonConvert.SerializeObject(processed);
                     }
                     return(new KeyValuePair <bool, string>(status, reply));
                 }
                 catch (Exception e)
                 {
                     return(new KeyValuePair <bool, string>(false, e.Message));
                 }
             }
             return(new KeyValuePair <bool, string>(status, reply));
         }
         else
         {
             return(new KeyValuePair <bool, string>(false, "theMethod is null"));
         }
     }
     catch (Exception e)
     {
         return(new KeyValuePair <bool, string>(false, e.Message));
     }
 }