čtvrtek 18. června 2020

Zobrazení náhledu SVG ve Windows Exploreru

Sem tam se to může hodit. Tak tady je link

středa 17. června 2020

Test přihlášení ASP stránky


class Program
    {
        public class SettingModel
        {
            public string Login { get; set; }
            public string Password { get; set; }
            public string Url { get; set; }
            public string Assert { get; set; }
        }

        public static SettingModel ParseCommandLineArguments(string[] args)
        {
            var result = new SettingModel();
            for( int n=0; n < args.Length; n++)
            {
                switch (args[n].ToLower()) 
                {
                    case "-l":
                        result.Login = args[++n];
                        break;

                    case "-p":
                        result.Password = args[++n];
                        break;

                    case "-u":
                        result.Url = args[++n];
                        break;

                    case "-a":
                        result.Assert = args[++n];
                        break;
                }
            }

            return result;
        }

        static void Main(string[] args)
        {
            var model = ParseCommandLineArguments(args);

            Uri baseUri = new Uri(model.Url);
            //HttpClientHandler handler = new HttpClientHandler();
            //handler.CookieContainer = new CookieContainer();
            //HttpClient client = new HttpClient(handler);
            using (HttpClient client = new HttpClient()) 
            { 
                var getRequest = client.GetAsync(baseUri);
                getRequest.Wait();
                HttpResponseMessage response = getRequest.Result;

                //CookieCollection collection = handler.CookieContainer.GetCookies(uri); // Retrieving a Cookie
                var htmlPage = response.Content.ReadAsStringAsync();
                htmlPage.Wait();

                var html = htmlPage.Result;
                var reg = Regex.Match(html, "<input name=\"__RequestVerificationToken\" type=\"hidden\" value=\"(.*)\" />");
                if (reg.Success)
                {
                    var regexGroups = reg.Groups;

                    var formVariables = new List<KeyValuePair<string, string>>();
                    formVariables.Add(new KeyValuePair<string, string>("login", model.Login));
                    formVariables.Add(new KeyValuePair<string, string>("password", model.Password));
                    formVariables.Add(new KeyValuePair<string, string>("__RequestVerificationToken", regexGroups[1].Value));
                    var loginFormData = new FormUrlEncodedContent(formVariables);

                    var postRequest = client.PostAsync(baseUri, loginFormData);
                    postRequest.Wait();
                    var postResult = postRequest.Result;

                    var dashboardHtmlPage = postResult.Content.ReadAsStringAsync();
                    htmlPage.Wait();
                    var htmlToAssert = dashboardHtmlPage.Result;

                    Assert(model.Assert, htmlToAssert);
                }
            }
        }

        private static void Assert(string assertString, string htmlToAssert)
        {
            if (htmlToAssert.Contains(assertString)) // "/KlientskaZona/ProfilSpolecnosti/ProfilSpolecnosti"))
            {
                Console.ForegroundColor = ConsoleColor.Green;
                Console.WriteLine("Success");
            }
            else
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("Failed");
            }
        }
    }

úterý 19. listopadu 2019

Integrace platební brány ComGate

Co je důležité implementovat
Je potřeba implementovat vytvoření platby na pozadí. Které Vám vrátí adresu kam přesměrovat klienta.
Dále pak implementovat tři návratové stránky kam je přesměrován klient v případě že: 
  • je platba uhrazena. 
  • byla platba zrušena. 
  • platba byla provedena ale čeká se na její ověření.

A jako poslední implementovat handler, který provolá brána v okamžiku kdy se změní stav platby.
V tomto handleru je dobrý nápad porovnat jestli se s vámi baví někdo kdo zná vaše  merchant=12345678 a secret=ZXhhbXBsZS5jb206QUJDeHl6 tedy server ComGate a jestli požadavek přichází z IP která patří Comgate bráně tedy IP adresa 89.185.236.55
Dále pak porovnat jestli už nebyla platba uhrazena dříve aby jste zboží neposlali třeba několikrát.


Chyby
comgate 1400: Unauthorized access!
Pokud se Vám vrací tato chyba, zkontrolujte:
Jestli máte správně vyplněny parametry merchant a secret
Jestli v požadavku na generování platby na pozadí zasíláte parametr PrepareOnly = true,

pátek 18. října 2019

Povolení migrací EF vyhazuje chybu "Cannot bind argument to parameter 'Path'"


PM> Enable-Migrations
Enable-Migrations : Cannot bind argument to parameter 'Path' because it is null.
At line:1 char:1
+ Enable-Migrations
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidData: (:) [Enable-Migrations], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Enable-Migrations


Řešení
I get it fixed by setting the project containing DbContext as the Startup Project


Zdroj:
https://github.com/aspnet/EntityFramework6/issues/492

pondělí 7. října 2019

Fotogalerie v klávesnici EZS Paradox TM70

8 – ZOBRAZOVÁNÍ FOTOGRAFIÍ
Klávesnici je možné využít jako jednoduchý fotorámeček. Po čase klidu je možné nastavit
zobrazování fotografií umístěných na SD kartě.
Pro zobrazování obrázků musí být vložena paměťová SD karta. Karta musí mít velikost
minimálně 4GB. Karta musí být naformátována v režimu FAT32. Soubory s
obrázky musí být na kartě uloženy v adresáři photo. Na kartu je možné uložit maximálně
512 fotografií.
Fotografie musí být ve formátu BMP a mít rozlišení 800 x 480 v 32 bitové barevné hloubce.

Pokud vyndáte SD kartu nahrajete fotky a zase ji vrátíte zpátky tak se fotky nezobrazí, je potřeba klávesnici odpojit od napájení a nechat ji restartovat. Na jiný způsob jsem nepřišel.

sobota 20. července 2019

Chybová hláška při vytváření migrace Entity Framewok Code First

One or more validation errors were detected during model generation:
Esu.WebPortal.Dal.Foo: : EntityType 'Foo' has no key defined. Define the key for this EntityType.
Foos: EntityType: EntitySet 'Foos' is based on type 'Foo' that has no keys defined.

Pokud přidáte do entity property, která není skalárního typu jako např. string nebo int. Vytvoří se vrámci této entity všechny property daného typu s prefixem podle názvu property tohoto typu.

Pokud ale daný typ obsahuje také property neskalárního typu. Entity Framework se s tímto nevyrovná a chce po Vás aby jste doplnil Primární klíč.

Řešením je smířit se s tím že takové zanoření není možné a property s nejnižší úrovně posunout o úroveň víš.