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); }
public Decimal SpocitejVyskytRetezceSouboruUrl(string url, string retezec) { DataMiner dm = new DataMiner(); var odpoved = dm.UdelejRequest(url); return(Regex.Matches(odpoved, retezec).Count); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }