Exemple #1
0
        public static List <StatistikaSouboru> VratStatistikuZmenyRadkuSouboru(string cesta)
        {
            DataMiner            dm      = new DataMiner();
            var                  commity = dm.VratCommityJednohoSouboru(cesta);
            List <DetailZaznamu> detaily = new List <DetailZaznamu>();

            foreach (var commit in commity)
            {
                detaily.Add(dm.VratDetailCommitu(commit.sha));
            }
            List <StatistikaSouboru> statistiky = new List <StatistikaSouboru>();

            foreach (var detail in detaily)
            {
                foreach (var soubor in detail.files)
                {
                    if (soubor.filename == cesta)
                    {
                        statistiky.Add(new StatistikaSouboru()
                        {
                            sha = soubor.sha, nazev = soubor.filename, cas_commitu = detail.commit.committer.date, odebrane_radky = soubor.deletions, pridane_radky = soubor.additions, status = soubor.status
                        });
                    }
                }
            }
            return(statistiky);
        }
Exemple #2
0
        public Decimal SpocitejVyskytRetezceSouboruUrl(string url, string retezec)
        {
            DataMiner dm      = new DataMiner();
            var       odpoved = dm.UdelejRequest(url);

            return(Regex.Matches(odpoved, retezec).Count);
        }
Exemple #3
0
        /// <summary>
        /// projede sadu souboru a zjisti sumu vyskytu retezce ve vsech
        /// </summary>
        /// <param name="soubory"></param>
        /// <param name="znak"></param>
        /// <returns></returns>
        public static Decimal SpocitejPocetZnakuSadySouboru(List <RootObject> soubory, string znak)
        {
            DataMiner dm      = new DataMiner();
            var       commity = dm.UdelejRequestGitHub(dm.AdresaServer + "/repos/" + dm.Uzivatel + "/" + dm.Repozitar + "/commits");
            var       comm    = JsonConvert.DeserializeObject <Commit[]>(commity).ToList();
            Decimal   pocet   = 0;

            foreach (var js in soubory)
            {
                var url = "https://cdn.rawgit.com/" + dm.Uzivatel + "/" + dm.Repozitar + "/" + comm[0].sha + "/" + js.path;
                //var url = "https://rawgit.com/" + dm.Uzivatel + "/" + dm.Repozitar + "/master/" + js.path;
                pocet += dm.SpocitejVyskytRetezceSouboruUrl(url, znak);
            }
            return(pocet);
        }
Exemple #4
0
        /// <summary>
        /// Projde zadanou slozku a podslozky a vrati vsechny soubory
        /// </summary>
        /// <param name="ro">slozka</param>
        /// <returns></returns>
        private static List <RootObject> VratRekurzivneVsechnySoubory(RootObject ro)
        {
            DataMiner         dm      = new DataMiner();
            List <RootObject> soubory = new List <RootObject>();
            var souborySlozky         = dm.VratSouborySlozky(ro);

            foreach (var ss in souborySlozky)
            {
                if (ss.type != "dir")
                {
                    soubory.Add(ss);
                }
                else
                {
                    soubory.AddRange(VratRekurzivneVsechnySoubory(ss));
                }
            }
            return(soubory);
        }
Exemple #5
0
        /// <summary>
        /// main metoda - vrati vsechny soubory repozitare definovaneho v DataMineru
        /// </summary>
        /// <returns></returns>
        private static List <RootObject> VratVsechnySouboryRepozitareRekurzivne()
        {
            DataMiner         dm = new DataMiner();
            var               rootSouboryRepozitare = dm.VratSoubory();
            List <RootObject> vsechnySoubory        = new List <RootObject>();

            foreach (var sr in rootSouboryRepozitare)
            {
                if (sr.type == "dir")
                {
                    vsechnySoubory.AddRange(VratRekurzivneVsechnySoubory(sr));
                }
                else
                {
                    vsechnySoubory.Add(sr);
                }
            }
            return(vsechnySoubory);
        }
Exemple #6
0
        /// <summary>
        /// main metoda pro ziskani souboru z commitu uskutecnenych po zadane dobe
        /// </summary>
        /// <param name="cas">Local time - funkce sama prevede do UTC pro github</param>
        /// <returns></returns>
        public static List <File> VratSouboryCommituDoCasu(DateTime cas)
        {
            cas = cas.ToUniversalTime();
            DataMiner     dm            = new DataMiner();
            List <Zaznam> zaznamy       = dm.VratCommity();
            List <Zaznam> zaznamyHodina = Zaznam.SelektujCasovouPeriodu(zaznamy, cas);
            List <File>   soubory       = new List <File>();

            // az se nekdo bude ptat, proc to trva tak dlouho, ukaz mu tenhle foreach
            foreach (var z in zaznamyHodina)
            {
                var detail = dm.VratDetailCommitu(z.sha);
                foreach (var det in detail.files)
                {
                    det.datum_commitu = z.commit.committer.date.ToLocalTime();
                    det.sha           = z.sha;
                }
                soubory.AddRange(detail.files);
            }
            return(soubory);
        }
Exemple #7
0
        /// <summary>
        /// bool x = await s.StahniSouborZGituAsync("F:\\STI\\UP\\zk.txt", "zk.txt", "29b5c4800c535320504b05972cdec8d1a503f1ab");
        /// </summary>
        /// <param name="cesta">lokalni</param>
        /// <param name="nazev">na gitu</param>
        /// <param name="sha">commit sha</param>
        /// <returns></returns>
        public static bool UlozSouborGitu(string cesta, string nazev, string sha)
        {
            DataMiner dm    = new DataMiner();
            string    obsah = dm.VratObsahSouboruGitu(nazev, sha);

            try
            {
                using (FileStream fs = System.IO.File.Create(cesta))
                {
                    Byte[] info = new UTF8Encoding(true).GetBytes(obsah);
                    fs.Write(info, 0, info.Length);
                }
            }
            catch (Exception ex)
            {
                // RETHROW - nelze ulozit
                Console.WriteLine("chyba ukladani");
                new Logger(ex.Message).Loguj();
                throw new Exception("Došlo k chybě při ukládání souboru");
            }
            return(true);
        }
Exemple #8
0
        /// <summary>
        /// Vraci pocet radku od urciteho jazyka v repozitari.
        /// </summary>
        /// <param name="typ">Nazev jazyka eg. java, PHP, ...</param>
        /// <returns>pocet radku</returns>
        public async Task <Decimal> VratPocetBytuJazykuRepozitareAsync(string typ)
        {
            DataMiner dm = new DataMiner();

            return(await dm.VratPrehledRadkuJazykuRepozitareAsync(typ));
        }