예제 #1
0
 public async Task <IActionResult> Package(string appId, [FromBody] PackageRequestModel model)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest());
     }
     return(Ok(await _appService.Package(model)));
 }
예제 #2
0
        public async Task <string> PostSuspect(PackageRequestModel request)
        {
            string apiPath = "Suspect/PostSuspect";

            using (var client = new HttpClient())
            {
                client.BaseAddress = new Uri(apiBaseUri);
                client.DefaultRequestHeaders.Accept.Clear();
                client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                // client.DefaultRequestHeaders.Add("Authorization", "Bearer " + request.Token);
                string json          = JsonConvert.SerializeObject(request);
                var    stringContent = new StringContent(json, UnicodeEncoding.UTF8, "application/json");
                var    client1       = new HttpClient();
                var    response      = await client.PostAsync(apiBaseUri + apiPath, stringContent).ConfigureAwait(false);

                var responseString = await response.Content.ReadAsStringAsync();

                return(responseString);
            }
        }
예제 #3
0
        public async Task <PackageResponseModel> Package(PackageRequestModel package)
        {
            var app = await _appRepository.GetOneAsync(package.AppId);

            var collectLocales      = _localizationProvider.GetByAppId(app.Id);
            var collectStandards    = _standardServiceProvider.GetByAppId(app.Id);
            var collectCharts       = _chartServiceProvider.GetByAppId(app.Id);
            var collectDynamicLists = _dynamicListServiceProvider.GetByAppId(app.Id);
            var collectPages        = _pageServiceProvider.GetByAppId(app.Id);
            await Task.WhenAll(collectLocales, collectStandards, collectCharts, collectDynamicLists, collectPages);

            var appPackpageFlattern = new AppPackageFlatternModel
            {
                App               = app,
                Description       = package.Description,
                PackagedDate      = DateTime.UtcNow,
                Creator           = package.Creator,
                TotalCharts       = collectCharts.Result?.Count(),
                TotalDynamicLists = collectDynamicLists.Result?.Count(),
                TotalStandards    = collectStandards.Result?.Count(),
                TotalLocales      = collectLocales.Result?.Count(),
                TotalPages        = collectPages.Result?.Count(),
                ChainingFiles     = new List <string>()
            };

            var fileName     = DateTime.UtcNow.Ticks.ToString();
            var folderName   = app.Name + "_" + app.CurrentVersionNumber + "_" + fileName;
            var jsonFileName = folderName + ".json";
            var jsonFilePath = Path.Combine(Environment.CurrentDirectory, "Temp", "Packages", folderName);

            if (Directory.Exists(jsonFilePath))
            {
                Directory.Delete(jsonFilePath, true);
            }
            Directory.CreateDirectory(jsonFilePath);

            if (collectStandards.Result != null)
            {
                var jsonStandards = ConvertUtil.SerializeObject(collectStandards.Result, true);
                using (var sw = new StreamWriter(
                           Path.Combine(jsonFilePath, STANDARD_FILE)))
                {
                    sw.Write(jsonStandards);
                }

                appPackpageFlattern.ChainingFiles.Add(STANDARD_FILE);
            }

            if (collectCharts.Result != null)
            {
                var jsonCharts = ConvertUtil.SerializeObject(collectCharts.Result, true);
                using (var sw = new StreamWriter(
                           Path.Combine(jsonFilePath, CHART_FILE)))
                {
                    sw.Write(jsonCharts);
                }

                appPackpageFlattern.ChainingFiles.Add(CHART_FILE);
            }

            if (collectDynamicLists.Result != null)
            {
                var jsonDynamicLists = ConvertUtil.SerializeObject(collectDynamicLists.Result, true);
                using (var sw = new StreamWriter(
                           Path.Combine(jsonFilePath, DYNAMICLIST_FILE)))
                {
                    sw.Write(jsonDynamicLists);
                }

                appPackpageFlattern.ChainingFiles.Add(DYNAMICLIST_FILE);
            }

            if (collectPages.Result != null)
            {
                var jsonPages = ConvertUtil.SerializeObject(collectPages.Result, true);
                using (var sw = new StreamWriter(
                           Path.Combine(jsonFilePath, PAGE_FILE)))
                {
                    sw.Write(jsonPages);
                }

                appPackpageFlattern.ChainingFiles.Add(PAGE_FILE);
            }

            if (collectLocales.Result != null)
            {
                var jsonLocales = ConvertUtil.SerializeObject(collectLocales.Result, true);
                using (var sw = new StreamWriter(
                           Path.Combine(jsonFilePath, LOCALE_FILE)))
                {
                    sw.Write(jsonLocales);
                }

                appPackpageFlattern.ChainingFiles.Add(LOCALE_FILE);
            }

            var jsonFlattern = ConvertUtil.SerializeObject(appPackpageFlattern, true);

            using (var sw = new StreamWriter(Path.Combine(jsonFilePath, jsonFileName)))
            {
                sw.Write(jsonFlattern);
            }

            ZipFile.CreateFromDirectory(jsonFilePath, Path.Combine(Environment.CurrentDirectory, "Temp", "Packages", folderName + ".zip"));

            // Store zip file into file server, allow to create zip file when downloading
            var uploadResponse = await _fileSeviceProvider
                                 .UploadFileAsync(
                Path.Combine(Environment.CurrentDirectory, "Temp", "Packages", folderName + ".zip"),
                package.Creator,
                true);

            return(new PackageResponseModel {
                DownloadableUrl = uploadResponse.DownloadableUrl
            });
        }