コード例 #1
0
        static void Main(string[] args)
        {
            var client = new Client("https://www.mystore.com/mm5/json.mvc", "MY_API_TOKEN", "MY_SIGNING_KEY");

            client.DefaultStoreCode = "STORE_CODE";

            /// If you create a custom module or want to hook into an existing modules API functionality it exposes you can
            /// use the Module request class to call into the module.

            var request = new ModuleRequest(client);

            // Set the module you wish to call into
            request.SetModuleCode("mymodule");

            // Set the function name you wish to call (defined by your modules json_api feature)
            request.SetModuleFunction("MyModuleFunction");

            /// Add custom parameters to the request using the setModuleField method
            request.SetModuleField("MyModuleField", "Foo")
            .SetModuleField("MyModuleField_Int", 1)
            .SetModuleField("MyModuleField_Decimal", 2.99);

            // Send the request

            ModuleResponse response = request.Send();

            if (!response.IsSuccess())
            {
                Console.WriteLine("Error: {0}: {1}", response.GetErrorCode(), response.GetErrorMessage());
            }
            else
            {
                Console.WriteLine("Success");
            }
        }
コード例 #2
0
            public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
            {
                var module = new Module(moduleRequest.CmdArgument, File.ReadAllText(moduleRequest.AbsolutePath));

                result = module;
                return(true);
            }
コード例 #3
0
        public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
        {
            if (File.Exists(moduleRequest.AbsolutePath))
            {
                var code = File.ReadAllText(moduleRequest.AbsolutePath);
                result = new Module(moduleRequest.AbsolutePath, code);
                return(true);
            }
            else
            {
                if (moduleRequest.AbsolutePath.EndsWith("Rhino.js"))
                {
                    var assembly = typeof(ModuleResolver).Assembly;
                    using (var stream = assembly.GetManifestResourceStream("RhinoHornbill.Rhino.js"))
                        using (var reader = new StreamReader(stream))
                        {
                            var code              = reader.ReadToEnd();
                            var module            = new Module(moduleRequest.AbsolutePath, code);
                            var namespaceProvider = new NamespaceProvider("Rhino");
                            module.Context.DefineVariable("Rhino").Assign(namespaceProvider);
                            result = module;
                            return(true);
                        }
                }
            }

            result = null;
            return(false);
        }
コード例 #4
0
 public override ModuleResponse Process(ModuleRequest request)
 {
     return(new ModuleResponse
     {
         Data = string.Format("{0}: response for {1}, type = {2}", Host.Name, request.Data, request.RequestType)
     });
 }
コード例 #5
0
        public ActionResult DeleteConfirmed(int id)
        {
            ModuleRequest moduleRequest = db.ModuleRequests.Find(id);

            db.ModuleRequests.Remove(moduleRequest);
            db.SaveChanges();
            return(RedirectToAction("Index"));
        }
コード例 #6
0
        public async Task <IActionResult> Update([FromForm] ModuleRequest request, int moduleID)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            var result = await _moduleService.Update(request, moduleID);

            return(Ok(result));
        }
コード例 #7
0
 public ActionResult Edit([Bind(Include = "RequestID,StudentID,ModuleCode,ModuleName,RequestDate")] ModuleRequest moduleRequest)
 {
     if (ModelState.IsValid)
     {
         db.Entry(moduleRequest).State = EntityState.Modified;
         db.SaveChanges();
         return(RedirectToAction("Index"));
     }
     ViewBag.StudentID = new SelectList(db.Students, "StudentID", "Id", moduleRequest.StudentID);
     return(View(moduleRequest));
 }
コード例 #8
0
        public async Task <ActionResult <Module> > Create(ModuleRequest module)
        {
            var result = await _modules.Create(module, HttpContext.RequestAborted);

            if (result == null)
            {
                return(Conflict());
            }

            return(result);
        }
コード例 #9
0
ファイル: Bug_220.cs プロジェクト: toolgood/NiL.JS
            public bool TryGetModule(ModuleRequest moduleRequest, out Module result)
            {
                if (moduleRequest.AbsolutePath == _module.FilePath)
                {
                    result = _module;
                    return(true);
                }

                result = null;
                return(false);
            }
コード例 #10
0
ファイル: Program.cs プロジェクト: viceice/NiL.JS
            public override bool TryGetModule(ModuleRequest request, out Module result)
            {
                var currentDir = Directory.GetCurrentDirectory();

                if (File.Exists(currentDir + request.AbsolutePath))
                {
                    result = new Module(request.AbsolutePath, File.ReadAllText(currentDir + request.AbsolutePath));
                    return(true);
                }

                result = null;
                return(false);
            }
コード例 #11
0
        // GET: ModuleRequests/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ModuleRequest moduleRequest = db.ModuleRequests.Find(id);

            if (moduleRequest == null)
            {
                return(HttpNotFound());
            }
            return(View(moduleRequest));
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: viceice/NiL.JS
            public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
            {
                if (moduleRequest.CmdArgument == "http://somesite.com/modules/arithmetic.js")
                {
                    var module = new Module(moduleRequest.CmdArgument, @"export function add(num1, num2) {
    return num1 + num2;
}");

                    result = module;
                    return(true);
                }

                result = null;
                return(false);
            }
コード例 #13
0
        // GET: ModuleRequests/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }
            ModuleRequest moduleRequest = db.ModuleRequests.Find(id);

            if (moduleRequest == null)
            {
                return(HttpNotFound());
            }
            ViewBag.StudentID = new SelectList(db.Students, "StudentID", "Id", moduleRequest.StudentID);
            return(View(moduleRequest));
        }
コード例 #14
0
        public async Task <ApiResult <bool> > Update(ModuleRequest request, int moduleId)
        {
            var module = await _context.Modules.FindAsync(moduleId);

            if (module == null)
            {
                return(new ApiResultErrors <bool>("Not found"));
            }
            module.ModuleName        = request.ModuleName;
            module.ModuleDescription = request.ModuleDescription;

            await _context.SaveChangesAsync();

            return(new ApiResultSuccess <bool>());
        }
コード例 #15
0
ファイル: FrontendModule.cs プロジェクト: Levchenkov/Modules
        public override ModuleResponse Process(ModuleRequest request)
        {
            var backendRequest = new ModuleRequest
            {
                RequestType = ModuleType.Backend,
                Data        = request.Data
            };

            var backendResponse = Host.Application.Process(backendRequest);

            return(new ModuleResponse
            {
                Data = string.Format("{2}\n{0}: response for {1}, type = {3}", Host.Name, request.Data, backendResponse.Data, request.RequestType)
            });
        }
コード例 #16
0
        // this resolver resolves full file paths from the current working directory
        public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
        {
            // if the module wasn't a known, named one, we see if the supplied path is available in the CWD
            var resolvedPath = moduleRequest.AbsolutePath;

            if (!File.Exists(resolvedPath))
            {
                result = null;
                return(false);
            }

            var code = File.ReadAllText(resolvedPath);

            result = new Module(moduleRequest.AbsolutePath, code);
            return(true);
        }
コード例 #17
0
        public async Task <ApiResult <string> > Create(ModuleRequest request)
        {
            var module = new Modules()
            {
                ModuleName        = request.ModuleName,
                ModuleDescription = request.ModuleDescription
            };

            _context.Modules.Add(module);
            var numRowChange = await _context.SaveChangesAsync();

            if (numRowChange > 0)
            {
                return(new ApiResultSuccess <string>("inserted"));
            }
            else
            {
                return(new ApiResultErrors <string>("Faild"));
            }
        }
コード例 #18
0
            public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
            {
                if (moduleRequest.AbsolutePath == "/math consts.js")
                {
                    result = new Module(moduleRequest.AbsolutePath, @"
export const Pi = Math.PI, E = Math.E;
");
                    return(true);
                }
                else if (moduleRequest.AbsolutePath == "/fakedir/somelib/consts.js")
                {
                    result = new Module(moduleRequest.AbsolutePath, @"
export * from ""/math consts.js"";
export const g = 9.8;
");
                    return(true);
                }

                result = null;
                return(false);
            }
コード例 #19
0
ファイル: BackendModule.cs プロジェクト: Levchenkov/Modules
        public override ModuleResponse Process(ModuleRequest request)
        {
            var databaseRequest = new ModuleRequest
            {
                RequestType = ModuleType.Database,
                Data        = request.Data
            };

            var fileStorageRequest = new ModuleRequest
            {
                RequestType = ModuleType.FileStorage,
                Data        = request.Data
            };

            var databaseResponse    = Host.Application.Process(databaseRequest);
            var fileStorageResponse = Host.Application.Process(fileStorageRequest);

            return(new ModuleResponse
            {
                Data = string.Format("{2}\n{3}\n{0}: response for {1}, type = {4}", Host.Name, request.Data, databaseResponse.Data, fileStorageResponse.Data, request.RequestType)
            });
        }
コード例 #20
0
        // this resolver gets the file path from a known, named module
        public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
        {
            var modulePath = ModuleMapper.GetPath(moduleRequest.CmdArgument);

            if (modulePath is null)
            {
                result = null;
                return(false);
            }

            var resolvedPath = Path.Join(Directory.GetCurrentDirectory(), modulePath);

            if (!File.Exists(resolvedPath))
            {
                result = null;
                return(false);
            }

            var code = File.ReadAllText(resolvedPath);

            // by setting module name to full path, relative paths are available if/when the resolved file imports more files
            result = new Module(resolvedPath, code);
            return(true);
        }
コード例 #21
0
        public async Task <ActionResult <Module> > Update(Guid id, [CustomizeValidator(RuleSet = "Update")] ModuleRequest module)
        {
            var currentUser   = HttpContext.GetUser();
            var currentModule = await _modules.Get(id, HttpContext.RequestAborted);

            if (currentModule == null)
            {
                return(NotFound());
            }

            if (!await _authorization.HasWriteAccess(currentUser, currentModule, HttpContext.RequestAborted))
            {
                return(Unauthorized());
            }

            var result = await _modules.Update(id, module, HttpContext.RequestAborted);

            if (result == null)
            {
                return(Conflict());
            }

            return(result);
        }
コード例 #22
0
        public async Task Create_Module_Or_409(Mock <IModuleService> service, IAuthorizationService authorization, ModuleRequest request, Module module, User user)
        {
            service.Setup(x => x.Create(request, It.IsAny <CancellationToken>())).ReturnsAsync(module);
            service.Setup(x => x.Create(null, It.IsAny <CancellationToken>())).ReturnsAsync((Module)null);

            var controller = TestSetup.SetupController <ModulesController>(service.Object, authorization).SetupSession(user);

            var goodResult = await controller.Create(request);

            var invalidResult = await controller.Create(null);

            goodResult.Value.Should().NotBeNull();
            invalidResult.Value.Should().BeNull();
            invalidResult.Result.Should().BeOfType <ConflictResult>();
        }
コード例 #23
0
        public async Task Update_Module_Or_404(Mock <IModuleService> service, Mock <IAuthorizationService> authorization, ModuleRequest validRequest, ModuleRequest invalidRequest, Module valid, Module invalid, User user)
        {
            authorization.Setup(x => x.HasWriteAccess(user, It.IsAny <It.IsAnyType>(), It.IsAny <CancellationToken>())).ReturnsAsync(true);

            service.Setup(x => x.Exists(valid.Id, It.IsAny <CancellationToken>())).ReturnsAsync(true);
            service.Setup(x => x.Exists(invalid.Id, It.IsAny <CancellationToken>())).ReturnsAsync(false);
            service.Setup(x => x.Get(valid.Id, It.IsAny <CancellationToken>())).ReturnsAsync(valid);
            service.Setup(x => x.Get(invalid.Id, It.IsAny <CancellationToken>())).ReturnsAsync((Module)null);
            service.Setup(x => x.Update(valid.Id, validRequest, It.IsAny <CancellationToken>())).ReturnsAsync(valid);
            service.Setup(x => x.Update(invalid.Id, invalidRequest, It.IsAny <CancellationToken>())).ReturnsAsync((Module)null);

            var controller = TestSetup.SetupController <ModulesController>(service.Object, authorization.Object).SetupSession(user);

            var goodResult = await controller.Update(valid.Id, validRequest);

            var invalidResult = await controller.Update(invalid.Id, invalidRequest);

            goodResult.Value.Should().BeEquivalentTo(valid);
            invalidResult.Value.Should().BeNull();
            invalidResult.Result.Should().BeOfType <NotFoundResult>();
        }
コード例 #24
0
 public bool TryGetModule(ModuleRequest moduleRequest, out Module result)
 {
     return(_moduleResolverDelegate(moduleRequest, out result));
 }
コード例 #25
0
        public async Task Update_Subject_State_On_Create(Mock <IAuthorizationService> authorizationService, Mock <IStateService> stateService, ModuleRequest request)
        {
            stateService.Setup(x => x.UpdateSubjectState(It.IsAny <Guid>(), It.IsAny <CancellationToken>()));

            var context     = TestSetup.SetupContext();
            var httpContext = TestSetup.SetupHttpContext();

            var service = new ModuleService(context, httpContext, authorizationService.Object, stateService.Object);
            await service.Create(request);

            stateService.VerifyAll();
        }
コード例 #26
0
 public override bool TryGetModule(ModuleRequest moduleRequest, out Module result)
 {
     result = new Module(moduleRequest.AbsolutePath, $"console.log('{moduleRequest.CmdArgument} => {moduleRequest.AbsolutePath}')");
     return(true);
 }
コード例 #27
0
 public ModuleResponse(ResponseStatus status, ModuleRequest request, object content)
 {
     Status = status;
     Request = request;
     Content = content;
 }
コード例 #28
0
 public ModuleResponse(ModuleRequest request, object content)
 {
     Content = content;
     Request = request;
     Status = ResponseStatus.Ok;;
 }
コード例 #29
0
        /// <summary>
        /// Запись запросов для люксметра (обожаю, когда вылазят новые требования, когда я уже всю логику взаимодействия продумал)
        /// </summary>
        /// <param name="_pos"></param>
        public async void WriteLuxmetrRequest(int _pos)
        {
            List <byte>     byteArr      = new List <byte>();
            List <ushort>   confToDevice = new List <ushort>();
            Config915Series conf915      = new Config915Series(115200, false, false, false, false);

            byteArr.Add(100);
            byteArr.Add((byte)((0x0E << 4) + _pos));
            confToDevice.Add(ArrayExtension.ByteArrayToUshortArray(byteArr.ToArray()).First());
            confToDevice.Add(200);
            confToDevice.Add(conf915.Config);
            confToDevice.Add(40);
            confToDevice.Add(20);

            ushort[] req915lower = confToDevice.ToArray();

            byteArr.Clear();
            confToDevice.Clear();

            //запрос для люксметра, пишется в область памяти запросов к подчиненным устройствам
            byteArr.Add(0x00); //период
            byteArr.Add(0x01); //адрес+тип модуля
            byteArr.Add(0x00); //команда
            byteArr.Add(0x00); //адрес пар-ра в модуле 1
            byteArr.Add(0x00); //адрес пар-ра в модуле 2
            byteArr.Add(0x06); //адрес пар-ра в базе 1
            byteArr.Add(0x40); //ажрес пар-ра в базе 2
            byteArr.Add(0x01); //число пар-ров

            byte[] byteArray = byteArr.ToArray();

            ArrayExtension.SwapArrayItems(ref byteArray);

            confToDevice.AddRange(ArrayExtension.ByteArrayToUshortArray(byteArray));

            ushort[]      reqLux = confToDevice.ToArray();
            ModuleRequest mr     = new ModuleRequest(reqLux);

            StringBuilder sb = new StringBuilder();

            sb.AppendLine("Будет произведена запись со следующими параметрами:");
            sb.AppendLine("Модуль связи: МС915 с низом на позицию " + _pos.ToString());
            sb.AppendLine("Ожидание ответа: 200 (*0,5 мс)");
            sb.AppendLine("Скорость: 115200");
            sb.AppendLine("Биты данных: 8 бит");
            sb.AppendLine("Паритет: нечет");
            sb.AppendLine("Паритет: нет");
            sb.AppendLine("Число стоп битов: 1 бит");
            sb.AppendLine("Таймаут ввода/вывода: 100 (*0,1 мс)");
            sb.AppendLine("Включение передачи: 40 (*0,1 мс)");
            sb.AppendLine("Выключение передачи: 20 (*0,1 мс)");

            sb.AppendLine("Также будет добавлен запрос к подчиненному устройтсву(люксметру):");
            sb.AppendLine(mr.UIRequest);
            sb.AppendLine("Продолжить?");

            if (MessageBox.Show(sb.ToString(), "Внимание", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
            {
                try
                {
                    ushort[] LRC = new ushort[] { 1 };//договор был изначально на одно устройство, так что ничего придумывать не буду
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_REQUEST_TO_SLAVES_COUNT_ADDRESS, LRC);

                    Thread.Sleep(100);
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, LOWER_MODULE_ADDRESS, req915lower);

                    Thread.Sleep(100);
                    await RTUConnectionGlobal.SendDataByAddressAsync(1, SLAVE_MODULE_REQUEST_START_ADDRESS, reqLux);

                    Thread.Sleep(100);
                    ShowMessage("Запись произведена.", "Информация", MessageBoxImage.Information);
                }
                catch
                {
                    ShowMessage("При записи в устройство произошла ошибка.", "Внимение", MessageBoxImage.Warning);
                }
            }
            else
            {
                ShowMessage("Запись не была произведена", "Информация", MessageBoxImage.Information);
            }
        }