示例#1
0
        public async Task <ResponseDTO <ModuleActionsDTO> > GetModuleAsync(GetModuleRequest getRequest)
        {
            var moduleAux = await SearchModulesAsync(new ModuleSearchRequest { Code = getRequest.Code, Page = 1, PageSize = 1 });

            var module = moduleAux.Data.Items.FirstOrDefault();

            if (module != null)
            {
                var actions = await _actionDataAcces.ListAsync(w => w.ModuleCode == module.Code);

                var moduleActions = new ModuleActionsDTO
                {
                    Code             = module.Code,
                    Name             = module.Name,
                    Url              = module.Url,
                    SortOrder        = module.SortOrder,
                    ParentModuleCode = module.ParentModuleCode,
                    Actions          = actions.ToList()
                };

                if (moduleActions.Actions != null)
                {
                    moduleActions.Actions.ForEach(p => p.TableStatus = DTOs.Requests.Common.ObjectStatus.Unchanged);
                }

                return(ResponseBuilder.Correct(moduleActions));
            }
            else
            {
                ModuleActionsDTO obj = null;
                return(ResponseBuilder.Correct(obj));
            }
        }
示例#2
0
        public IActionResult GetModule(GetModuleRequest input)
        {
            if (_logger.IsEnabled(LogLevel.Trace))
            {
                _logger.LogTrace($"{nameof(GetModule)}:  {GetModuleRequest.VERB}");
            }

            if (ModelState.IsValid)
            {
                _logger.LogDebug($"Module name=[{input.ModuleName}] Version=[{input.ModuleVersion}]");

                var moduleContent = _dscHandler.GetModule(input.GetAgentId(),
                                                          input.ModuleName, input.ModuleVersion);
                if (moduleContent == null)
                {
                    return(NotFound());
                }

                var response = new GetModuleResponse
                {
                    ChecksumAlgorithmHeader = moduleContent.ChecksumAlgorithm,
                    ChecksumHeader          = moduleContent.Checksum,
                    Module = moduleContent.Content,
                };

                return(this.Model(response));
            }

            return(BadRequest(ModelState));
        }
示例#3
0
        public void GetModuleByID()
        {
            GetModuleRequest request = new GetModuleRequest {
                ModuleID = "5"
            };

            GetModuleResponse response = ModuleDataManager.GetModuleByID(request);

            Assert.IsTrue(response.Module.Id == "Tony");
        }
示例#4
0
        public static GetModuleResponse GetModuleByID(GetModuleRequest request)
        {
            GetModuleResponse result = new GetModuleResponse();

            IModuleRepository <GetModuleResponse> repo = ModuleRepositoryFactory <GetModuleResponse> .GetModuleRepository(request.ContractNumber, request.Context, request.UserId);

            var module = repo.FindByID(request.ModuleID);

            result.Module = module as DTO.Module;

            return(result != null ? result : new GetModuleResponse());
        }
示例#5
0
文件: Module.cs 项目: FFRyu/xenia
        private async Task InvalidateModule()
        {
            var fbb = Debugger.BeginRequest();
            int requestDataOffset = GetModuleRequest.CreateGetModuleRequest(fbb, Handle);
            var response          = await Debugger.CommitRequest(
                fbb, RequestData.GetModuleRequest, requestDataOffset);

            var responseData = new GetModuleResponse();

            response.GetResponseData(responseData);

            ModuleType = responseData.Module.Type;
            Name       = responseData.Module.Name;
            Path       = responseData.Module.Path;
        }
示例#6
0
        public override Task <GetModuleResponse> GetModule(GetModuleRequest request,
                                                           ServerCallContext context)
        {
            RemoteFrame frame  = frameStore.GetObject(request.Frame.Id);
            SbModule    module = frame.GetModule();

            GetModuleResponse response = new GetModuleResponse();

            if (module != null)
            {
                response.Module = new GrpcSbModule {
                    Id = moduleStore.AddObject(module)
                };
            }
            return(Task.FromResult(response));
        }
示例#7
0
        public GetModuleResponse Get(GetModuleRequest request)
        {
            GetModuleResponse response = new GetModuleResponse();

            try
            {
                if (string.IsNullOrEmpty(request.UserId))
                {
                    throw new UnauthorizedAccessException("ModuleDD:Get()::Unauthorized Access");
                }

                response         = ModuleDataManager.GetModuleByID(request);
                response.Version = request.Version;
            }
            catch (Exception ex)
            {
                CommonFormatter.FormatExceptionResponse(response, base.Response, ex);

                string aseProcessID = ConfigurationManager.AppSettings.Get("ASEProcessID") ?? "0";
                Common.Helper.LogException(int.Parse(aseProcessID), ex);
            }
            return(response);
        }
示例#8
0
        public GetModuleResponse GetModule(GetModuleRequest request)
        {
            GetModuleResponse response = new GetModuleResponse();

            try
            {
                Module module = _moduleRepository.FindBy(request.ModuleId);
                response.ModuleView = module.ConverToModuleView();
            }
            catch (Exception ex)
            {
                string message = "查询失败!错误信息:/n" + ex.Message;
                response = new GetModuleResponse()
                {
                    ResponseSucceed = false,
                    Message         = "查询失败"
                };
                LoggingFactory.GetLogger().WriteDebugLogger(message);

                return(response);
            }

            return(response);
        }
示例#9
0
        // TODO:  I think returning a Stream would be better here, but coordinating that
        // with the disposable resources that are contained within could be tricky
        public async Task <FileResponse> GetModule(string moduleName, string moduleVersion)
        {
            if (LOG.IsEnabled(LogLevel.Trace))
            {
                LOG.LogTrace(nameof(GetConfiguration));
            }

            AssertInit();

            var serverConfig = Configuration.ResourceRepositoryServer;

            AssertServerConfig(serverConfig);

            var dscRequ = new GetModuleRequest
            {
                AgentId       = Configuration.AgentId.ToString(),
                ModuleName    = moduleName,
                ModuleVersion = moduleVersion,
                AcceptHeader  = DscContentTypes.OCTET_STREAM,
            };

            var dscResp = new GetModuleResponse();

            using (var bs = new MemoryStream())
                using (var disposable = await SendDscAsync(serverConfig, GetModuleRequest.VERB,
                                                           GetModuleRequest.ROUTE, dscRequ, dscResp))
                {
                    dscResp.Module.CopyTo(bs);
                    return(new FileResponse
                    {
                        ChecksumAlgorithm = dscResp.ChecksumAlgorithmHeader,
                        Checksum = dscResp.ChecksumHeader,
                        Content = bs.ToArray(),
                    });
                }
        }
示例#10
0
        public async Task <IActionResult> GetModule(GetModuleRequest input)
        {
            if (_logger.IsEnabled(LogLevel.Trace))
            {
                _logger.LogTrace($"{nameof(GetModule)}:  {GetModuleRequest.VERB}");
            }

            if (!ModelState.IsValid)
            {
                return(base.BadRequest(ModelState));
            }

            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug($"Module name=[{input.ModuleName}] Version=[{input.ModuleVersion}]");
            }

            var modName  = input.ModuleName;
            var modVers  = input.ModuleVersion;
            var modS3Key = $"{_settings.S3KeyPrefixModules}/{modName}/{modVers}.zip";

            // We can't simply try to get the S3 object that corresponds to the
            // config name being requested because if it doesn't exist, we see
            // Amazon.S3.AmazonS3Exception with an underlying message of Access Denied;
            // instead we try to list the object first, and if it's not there, we
            // can response to the node appropriately with our own error protocol
            var listResp = await _s3.ListObjectsV2Async(new ListObjectsV2Request
            {
                BucketName = _settings.S3Bucket,
                Prefix     = modS3Key,
                MaxKeys    = 1,
            });

            var firstS3Obj = listResp.S3Objects.FirstOrDefault();

            if (_logger.IsEnabled(LogLevel.Debug))
            {
                _logger.LogDebug("Request to list S3 objects matching requested module found"
                                 + " [{s3KeyCount}] keys, first is [{s3Key}]", listResp.KeyCount,
                                 firstS3Obj?.Key);
            }

            if (listResp.KeyCount < 1 || firstS3Obj.Key != modS3Key)
            {
                _logger.LogWarning($"failed to get module by object key [{modS3Key}]:");
                return(NotFound());
            }

            using (var getResp = await _s3.GetObjectAsync(_settings.S3Bucket, modS3Key))
            {
                // Because of the preceding ListObjects call,
                // this should never happen, but just in case...
                if (getResp == null || getResp.ContentLength == 0 ||
                    getResp.HttpStatusCode != HttpStatusCode.OK)
                {
                    _logger.LogWarning($"failed to get module by object key [{modS3Key}]:"
                                       + " contentLen=[{getResp?.ContentLength}]"
                                       + " httpStatus=[{getResp.HttpStatusCode}]");
                    return(NotFound());
                }

                if (_logger.IsEnabled(LogLevel.Debug))
                {
                    _logger.LogDebug($"got module by object key [{modS3Key}]:"
                                     + $" contentLen=[{getResp?.ContentLength}]"
                                     + $" httpStatus=[{getResp.HttpStatusCode}]");
                }

                using (var rs = getResp.ResponseStream)
                {
                    using (var rawMs = new MemoryStream())
                    {
                        await rs.CopyToAsync(rawMs);

                        // Make sure we're at the start of the stream to compute the checksum
                        rawMs.Seek(0, SeekOrigin.Begin);
                        var checksum = ComputeChecksum(rawMs);
                        // Make sure we're at the start of the stream to return the contents
                        rawMs.Seek(0, SeekOrigin.Begin);
                        var rawBytes = rawMs.ToArray();

                        var b64 = Encoding.UTF8.GetBytes(Convert.ToBase64String(rawBytes));
                        _logger.LogDebug("Raw bytes length [{rawBytesLen}]", rawBytes.Length);
                        _logger.LogDebug("B64 bytes length [{b64BytesLen}]", b64.Length);

                        // This will be disposed of by the MVC framework
                        var b64Ms = new MemoryStream(b64);
                        return(this.Model(new GetModuleResponse
                        {
                            ChecksumAlgorithmHeader = ChecksumAlgorithm,
                            ChecksumHeader = checksum,
                            Module = b64Ms,
                        }));
                    }
                }
            }
        }
        public async Task <ResponseDTO <ModuleActionsDTO> > Get([FromUri] GetModuleRequest getRequest)
        {
            var resp = await _modulesApplicationService.GetModuleAsync(new GetModuleRequest { Code = getRequest.Code });

            return(resp);
        }