Example #1
0
 public ProjectsController(ILogger <ProjectsController> logger, DtoGenerator dtoGenerator, UserResolver userResolver, Uploads uploads)
 {
     _logger       = logger;
     _dtoGenerator = dtoGenerator;
     _userResolver = userResolver;
     _uploads      = uploads;
 }
 public AdoptJobItem(ILogger logger, ProjectInfo projectInfo, string fileName, ProjectWork projectWork, DtoGenerator dtoGenerator, UserResolver userResolver)
     : base(logger, null, projectWork)
 {
     _projectInfo  = projectInfo;
     _fileName     = fileName;
     _dtoGenerator = dtoGenerator;
     _userResolver = userResolver;
 }
Example #3
0
 public ProjectWork(ILogger <ProjectWork> logger, Arranger arranger, FdaClient fdaClient,
                    DtoGenerator dtoGenerator, UserResolver userResolver)
 {
     _logger       = logger;
     _arranger     = arranger;
     _fdaClient    = fdaClient;
     _dtoGenerator = dtoGenerator;
     _userResolver = userResolver;
 }
Example #4
0
 public ProjectsController(ILogger <ProjectsController> logger, DtoGenerator dtoGenerator, UserResolver userResolver, ProfileProvider profileProvider, Uploads uploads, ProjectService projectService)
 {
     _logger          = logger;
     _dtoGenerator    = dtoGenerator;
     _userResolver    = userResolver;
     _profileProvider = profileProvider;
     _uploads         = uploads;
     _projectService  = projectService;
 }
Example #5
0
        public JobsHub(ILogger <JobsHub> logger, ProjectWork projectWork, LinkGenerator linkGenerator, UserResolver userResolver, Uploads uploads, DtoGenerator dtoGenerator)
        {
            _logger        = logger;
            _projectWork   = projectWork;
            _linkGenerator = linkGenerator;
            _userResolver  = userResolver;
            _uploads       = uploads;
            _dtoGenerator  = dtoGenerator;

            _sender = new Sender(this);
        }
Example #6
0
        public void RegisterUser_WithValidEmailAndPassword_ReturnsOk()
        {
            var         restClient = new RestClient(ApiBaseUrl);
            var         newUser    = DtoGenerator.GetValidRegisterUserDto();
            RestRequest request    = CreateRequest(ServiceUrl, RegisterActionUrl, newUser);

            IRestResponse response    = restClient.Post(request);
            string        jsonContent = response.Content;
            var           apiResponse = JsonConvert.DeserializeObject <ApiResponseDto <RegisterUserRes> >(jsonContent);

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsNull(apiResponse.Error);
            Assert.IsNotNull(apiResponse.Result.Message);
        }
Example #7
0
        public ProjectService(ILogger <ProjectService> logger, UserResolver userResolver, ProjectWork projectWork, DtoGenerator dtoGenerator)
        {
            _logger       = logger;
            _userResolver = userResolver;
            _projectWork  = projectWork;
            _dtoGenerator = dtoGenerator;

            _waitForBucketPolicy = Policy
                                   .Handle <ApiException>(e => e.ErrorCode == StatusCodes.Status404NotFound)
                                   .WaitAndRetryAsync(
                retryCount: 4,
                retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
                (exception, timeSpan) => _logger.LogWarning("Cannot get fresh OSS bucket. Repeating")
                );
        }
Example #8
0
 public JobsHub(ILogger <JobsHub> logger, ProjectWork projectWork, LinkGenerator linkGenerator, UserResolver userResolver,
                ProfileProvider profileProvider, Uploads uploads, DtoGenerator dtoGenerator, ProjectService projectService,
                AdoptProjectWithParametersPayloadProvider adoptProjectWithParametersPayloadProvider, IConfiguration configuration)
 {
     _logger          = logger;
     _projectWork     = projectWork;
     _linkGenerator   = linkGenerator;
     _profileProvider = profileProvider;
     _userResolver    = userResolver;
     _uploads         = uploads;
     _dtoGenerator    = dtoGenerator;
     _projectService  = projectService;
     _adoptProjectWithParametersPayloadProvider = adoptProjectWithParametersPayloadProvider;
     _configuration = configuration;
     _sender        = new Sender(this);
 }
Example #9
0
        public void RegisterUser_WithNumericPassword_ReturnsBadRequest()
        {
            var restClient = new RestClient(ApiBaseUrl);
            var newUser    = DtoGenerator.GetValidRegisterUserDto();

            newUser.Password = "******";
            RestRequest request = CreateRequest(ServiceUrl, RegisterActionUrl, newUser);

            IRestResponse response    = restClient.Post(request);
            string        jsonContent = response.Content;
            var           apiResponse = JsonConvert.DeserializeObject <ApiResponseDto <RegisterUserRes> >(jsonContent);

            Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            Assert.IsNull(apiResponse.Result);
            Assert.IsNotNull(apiResponse.Error);
            Assert.IsTrue(apiResponse.Error.Messages.Count > 0);
        }
Example #10
0
        private static void Generate(string inputPath, string outputPath)
        {
            var fileWorker = new FileWorker.FileWorker();

            try
            {
                var                   text             = fileWorker.ReadFile(inputPath);
                ClassesList           classes          = new JsonParser.JsonParser().ParseClassDescriptions(text);
                var                   generator        = new DtoGenerator(classes, new CodeDomGenerator(), new Configuration());
                List <GeneratedClass> generatedClasses = generator.GenerateClasses();
                fileWorker.WriteFile(outputPath, generatedClasses);
            }
            catch (Exception ex)
            {
                Logger.GetInstance().Log(ex.Message);
            }
        }
Example #11
0
        public InitializerTestBase(DefaultProjectsConfiguration defaultProjectsConfiguration)
        {
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("appsettings.json", false)
                                .AddJsonFile("appsettings.Local.json", optional: true, reloadOnChange: true)
                                .AddEnvironmentVariables()
                                .AddForgeAlternativeEnvironmentVariables()
                                .Build();

            IServiceCollection services = new ServiceCollection();

            services.AddHttpClient();
            var serviceProvider = services.BuildServiceProvider();

            ForgeConfiguration            forgeConfiguration = configuration.GetSection("Forge").Get <ForgeConfiguration>();
            IOptions <ForgeConfiguration> forgeConfigOptions = Options.Create(forgeConfiguration);

            var httpClientFactory = serviceProvider.GetRequiredService <IHttpClientFactory>();

            forgeOSS = new ForgeOSS(httpClientFactory, forgeConfigOptions, new NullLogger <ForgeOSS>());

            var httpMessageHandler = new ForgeHandler(Options.Create(forgeConfiguration))
            {
                InnerHandler = new HttpClientHandler()
            };
            var forgeService           = new ForgeService(new HttpClient(httpMessageHandler));
            var designAutomationClient = new DesignAutomationClient(forgeService);

            projectsBucketKey = Guid.NewGuid().ToString();

            localCache = new LocalCache();
            var bucketPrefixProvider = new BucketPrefixProvider(forgeConfigOptions, configuration);
            var resourceProvider     = new ResourceProvider(forgeConfigOptions, designAutomationClient, configuration, bucketPrefixProvider, projectsBucketKey);
            var postProcessing       = new PostProcessing(httpClientFactory, new NullLogger <PostProcessing>(), localCache, Options.Create(new ProcessingOptions()));
            var publisher            = new Publisher(designAutomationClient, new NullLogger <Publisher>(), resourceProvider,
                                                     postProcessing, Options.Create(new PublisherConfiguration()),
                                                     new WorkItemsApi(forgeService), null, new TaskUtil());

            var appBundleZipPathsConfiguration = new AppBundleZipPaths
            {
                EmptyExe          = "../../../../WebApplication/AppBundles/EmptyExePlugin.bundle.zip",
                DataChecker       = "../../../../WebApplication/AppBundles/DataCheckerPlugin.bundle.zip",
                CreateSVF         = "../../../../WebApplication/AppBundles/CreateSVFPlugin.bundle.zip",
                CreateThumbnail   = "../../../../WebApplication/AppBundles/CreateThumbnailPlugin.bundle.zip",
                ExtractParameters = "../../../../WebApplication/AppBundles/ExtractParametersPlugin.bundle.zip",
                UpdateParameters  = "../../../../WebApplication/AppBundles/UpdateParametersPlugin.bundle.zip",
                CreateRFA         = "../../../../WebApplication/AppBundles/RFAExportRCEPlugin.bundle.zip",
                CreateBOM         = "../../../../WebApplication/AppBundles/ExportBOMPlugin.bundle.zip",
                ExportDrawing     = "../../../../WebApplication/AppBundles/ExportDrawingAsPdfPlugin.bundle.zip",
                UpdateDrawings    = "../../../../WebApplication/AppBundles/UpdateDrawingsPlugin.bundle.zip"
            };
            IOptions <AppBundleZipPaths> appBundleZipPathsOptions = Options.Create(appBundleZipPathsConfiguration);

            var fdaClient = new FdaClient(publisher, appBundleZipPathsOptions);
            IOptions <DefaultProjectsConfiguration> defaultProjectsOptions = Options.Create(defaultProjectsConfiguration);
            var profileProvider   = new ProfileProvider(forgeOSS);
            var bucketKeyProvider = new LoggedInUserBucketKeyProvider(profileProvider, resourceProvider);
            var userResolver      = new UserResolver(forgeOSS, bucketKeyProvider, localCache, NullLogger <UserResolver> .Instance, profileProvider);
            var arranger          = new Arranger(httpClientFactory, userResolver);

            // TODO: linkGenerator should be mocked
            var dtoGenerator = new DtoGenerator(linkGenerator: null, localCache);
            var projectWork  = new ProjectWork(new NullLogger <ProjectWork>(), arranger, fdaClient, dtoGenerator, userResolver);

            var projectService = new ProjectService(new NullLogger <ProjectService>(), userResolver, projectWork, dtoGenerator);

            initializer = new Initializer(new NullLogger <Initializer>(), fdaClient,
                                          defaultProjectsOptions, projectWork, userResolver, localCache,
                                          projectService, bucketPrefixProvider);

            testFileDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), Path.GetRandomFileName()));
            httpClient        = new HttpClient();
        }
Example #12
0
        public override void ExecuteResult(ControllerContext context)
        {
            var types = new HashSet <Type>();

            var sb = new StringBuilder();
            var cw = new CodeWriter(sb, 4);

            cw.Indented("namespace ");
            sb.AppendLine(this.Namespace);
            cw.InBrace(delegate
            {
                foreach (var ns in
                         new string[] {
                    "System",
                    "System.Collections.Generic"
                })
                {
                    cw.Indented("using ");
                    sb.Append(ns);
                    sb.AppendLine(";");
                }

                sb.AppendLine();

                cw.Indented("public interface I");
                var className = context.Controller.GetType().Name;
                if (className.EndsWith("Controller"))
                {
                    className = className.Substring(0, className.Length - 10);
                }
                sb.Append(className);
                sb.AppendLine("Service");

                cw.InBrace(delegate
                {
                    foreach (var method in context.Controller.GetType().GetMethods(BindingFlags.Instance | BindingFlags.Public))
                    {
                        if (method.GetCustomAttribute <NonActionAttribute>() != null)
                        {
                            continue;
                        }

                        if (typeof(Controller).IsSubclassOf(method.DeclaringType))
                        {
                            continue;
                        }

                        if (method.IsSpecialName && (method.Name.StartsWith("set_") || method.Name.StartsWith("get_")))
                        {
                            continue;
                        }

                        // belki burada daha sonra metod listesini de verebiliriz (ayrı bir namespace de?)
                        var parameters = method.GetParameters();
                        if (parameters.Length != 1)
                        {
                            // tek parametreli olmalı
                            continue;
                        }

                        var returnType = method.ReturnType;
                        if (returnType.IsAssignableFrom(typeof(DtoActionResult)))
                        {
                            continue;
                        }

                        var paramType = parameters[0].ParameterType;
                        if (paramType.IsPrimitive || !DtoGenerator.CanHandleType(paramType))
                        {
                            continue;
                        }

                        types.Add(parameters[0].ParameterType);

                        Type responseType = returnType;
                        if (returnType != null &&
                            returnType.IsGenericType &&
                            returnType.GetGenericTypeDefinition() == typeof(Result <>))
                        {
                            responseType = returnType.GenericTypeArguments[0];
                            types.Add(responseType);
                        }

                        cw.Indent();
                        DtoGenerator.HandleMemberType(sb, responseType, enqueueType: null);
                        sb.Append(' ');
                        sb.Append(method.Name);

                        sb.Append("(");
                        DtoGenerator.HandleMemberType(sb, paramType, enqueueType: null);
                        sb.Append(' ');
                        sb.Append(parameters[0].Name);
                        sb.AppendLine(");");
                    }
                });
            });

            if (ExtraTypes != null &&
                ExtraTypes.Length > 0)
            {
                types.AddRange(ExtraTypes);
            }

            Type[] fromTypes = new Type[types.Count];
            types.CopyTo(fromTypes, 0);

            sb.AppendLine();
            sb.AppendLine();
            var code = sb.ToString() + new DtoGenerator().GenerateCode(Namespace, fromTypes);

            new ContentResult
            {
                ContentEncoding = Encoding.UTF8,
                ContentType     = "text/plain",
                Content         = code
            }.ExecuteResult(context);
        }
        public static IEnumerable <ICSharpType> GenerateDtos(this OpenApiDocument doc, INamingStrategy naming)
        {
            var generator = new DtoGenerator(naming);

            return(generator.Generate(doc.Components?.Schemas ?? new Dictionary <string, OpenApiSchema>()));
        }