コード例 #1
0
        /// <summary>
        /// Creates a Registered User and performs Login for that user in as well.
        /// Password used is same as that for Host. Existing user is used if it's already present.
        /// </summary>
        /// <returns>IWebApiConnector object to perform more actions</returns>
        public static IWebApiConnector LoginRegisteredUser(string firstName = IntegrationConstants.RuFirstName, string lastName = IntegrationConstants.RuLastName, string url = null)
        {
            IWebApiConnector connector;

            url = url ?? AppConfigHelper.SiteUrl;
            var username = firstName + "." + lastName;
            var key      = string.Join("_", url, username);

            if (!CachedConnections.TryGetValue(key, out connector) ||
                connector.LoggedInAtTime < DateTime.Now.AddMinutes(-19.5))
            {
                var portalId = GetPortalFromUrl(url);
                UserController.CreateRegisteredUser(firstName, lastName, portalId);
                connector = WebApiConnector.GetWebConnector(url, username);
                CachedConnections[key] = connector;
            }

            if (!connector.IsLoggedIn)
            {
                var loggedIn = connector.Login(AppConfigHelper.HostPassword);
                Assert.IsTrue(loggedIn);
            }

            return(connector);
        }
コード例 #2
0
        /// <summary>
        /// Обработчик нажатия на кнопку меню "Справочники - С/х культуры - Группы с/х культур (сервер)"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void ToolStripMenuItem_Sprav_CropGroups_Remote_Click(object sender, EventArgs e)
        {
            WebApiConnector webApiConnector = new WebApiConnector();

            _cropGroupRepository = new CropGroupRepositoryWebApi(webApiConnector);

            dataGridViewMain.SelectionMode =
                DataGridViewSelectionMode.FullRowSelect;
            dataGridViewMain.MultiSelect = false;
            try
            {
                var list = await _cropGroupRepository.GetCropGroupsAsync();

                BindingList <CropGroup> bindingListCropGroups = new BindingList <CropGroup>(list);
                dataGridViewMain.DataSource = bindingListCropGroups;
            }
            catch (Exception exc)
            {
                richTextBoxLog.Text += $"{exc.Message}\n";
            }


            dataGridViewMain.Columns[0].HeaderText = "УИД";
            dataGridViewMain.Columns[1].HeaderText = "Наименование группы с/х культур";
            dataGridViewMain.Columns[1].Width      = 400;
        }
コード例 #3
0
        public void TestFindProjectWorkerByFaceId()
        {
            var connector = new WebApiConnector();
            var userId    = connector.FindProjectWorkerByFaceId("592e2531b2ddc226f0df2b24", "1").GetAwaiter().GetResult();

            Assert.IsNotNull(userId);
            Assert.AreEqual(24, userId.Length);
        }
コード例 #4
0
        private void SynchWithWebsite()
        {
            //Get latest web order in database:
            lock (fileStore)
            {
                int           lastWebOrder = 0;
                int           holeIndex    = 0;
                bool          go           = true;
                List <string> keys         = fileStore.Keys;

                //Will not work.
                while (go)
                {
                    if (knownHoleStarts.Contains(lastWebOrder))
                    {
                        lastWebOrder = knownHoleEnds[holeIndex];
                        holeIndex++;
                    }

                    Order2 order = fileStore[OrderConverters.GetWebOrderNumber(lastWebOrder + 1)];

                    if (order == null)
                    {
                        break;
                    }

                    if (order.WebOrder) //Should always be true... TODO: Better error handling...
                    {
                        lastWebOrder = Math.Max(order.WebId ?? 0, lastWebOrder);
                    }
                }

                WebOrder webOrder = WebApiConnector.GetWebOrderByNumber(lastWebOrder + 1);
                Order2   newOrder;
                while (webOrder != null)
                {
                    if (webOrder == null)
                    {
                        break;
                    }

                    newOrder = OrderConverters.ConvertWebOrderToDbOrder(webOrder);
                    fileStore[newOrder.OrderNumber] = newOrder;

                    webOrder = WebApiConnector.GetWebOrderByNumber(webOrder.Id + 1);
                }
            }

            isSynchedWithWeb = true;
        }
コード例 #5
0
        public static float GetPrice()
        {
            var webapi = new WebApiConnector();


            var item = webapi.GetItem();

            //JArray arr = JArray.Parse(item);
            JObject obj = JObject.Parse(item);

            var value = float.Parse(obj["bpi"]["USD"]["rate_float"].ToString());

            return(value * (float)(Math.Pow(10, -5) * 3.59) * 6.22f);
            //Console.WriteLine(value);
        }
コード例 #6
0
        /////////////////////////////////////////////////
        /// Message handler for Poomba. SnapBox only receives
        /// one kind of message. This message is then split
        /// using a RegEx, such that 2 values are extracted.
        /// These values will then decide if mail is received,
        /// and what the powerlevel of the battery is.
        /// These values are then posted to the WebApi
        /////////////////////////////////////////////////
        public void HandleMessage(string message, string topic = "")
        {
            Console.WriteLine("Snap Box message: {0}, Topic: {1}", message, topic);

            var data = Regex.Split(message, @"\D+");

            // Length might be 3 or 2, depending on the Regex implementation...

            for (int i = 0; i < data.Length; i++)
            {
                data[i] = data[i].Trim();
            }

            if (data.Length == 3 && string.IsNullOrEmpty(data[0]))
            {
                if (data[1] == "0" && data[2] == "0")
                {
                    return;                                   // False message from I2C stutter
                }
                var snapboxitem = new SnapBoxItem()
                {
                    MailReceived = data[1] == "1", PowerLevel = data[2], ReceiverEmail = "*****@*****.**"
                };

                var webapi = new WebApiConnector();

                webapi.PostItem("snapbox/", JsonConvert.SerializeObject(snapboxitem));
            }
            else if (data.Length == 2)
            {
                if (data[0] == "0" && data[1] == "0")
                {
                    return;                                   // False message from I2C stutter
                }
                var snapboxitem = new SnapBoxItem()
                {
                    MailReceived = data[0] == "1", PowerLevel = data[1], ReceiverEmail = "*****@*****.**"
                };

                var webapi = new WebApiConnector();

                webapi.PostItem("snapbox/", JsonConvert.SerializeObject(snapboxitem));
            }
            else
            {
                throw new ArgumentException(string.Format("SnapBox Received Wrong Input -- Data length: {0} -- Data: {1}", data.Length, data.ToString()));
            }
        }
コード例 #7
0
        /////////////////////////////////////////////////
        /// Handler function for when the Web Api requests
        /// to set the timers on Poomba
        /////////////////////////////////////////////////
        private static void UpdateTime(string message)
        {
            Console.WriteLine("Poomba: Asked to update timers");
            WebApiConnector connector = new WebApiConnector();
            //Get latest PoombaObject from database
            string     json   = connector.GetItem("Poomba/Newest");
            PoombaItem poomba = JsonConvert.DeserializeObject <PoombaItem>(json);

            //Find time for next sleep time
            TimeSpan timeToTurnOff = poomba.SleepTime - DateTime.Now;
            TimeSpan timeToTurnOn  = poomba.WakeUpTime - DateTime.Now;

            // Increment TimeSpan by one day until the day matches with current day
            while (timeToTurnOff < TimeSpan.Zero)
            {
                timeToTurnOff = timeToTurnOff + TimeSpan.FromDays(1);
            }

            while (timeToTurnOn < TimeSpan.Zero)
            {
                timeToTurnOn = timeToTurnOn + TimeSpan.FromDays(1);
            }

            Console.WriteLine("Poomba: Timer for wakeup is now in: {0} hours", timeToTurnOn.TotalHours);
            Console.WriteLine("Poomba: Timer for sleep is now in: {0} hours", timeToTurnOff.TotalHours);

            //Set up timer for automatic sleep
            _sleepTimer?.Dispose();
            _wakeUpTimer?.Dispose();

            _sleepTimer           = new System.Timers.Timer(timeToTurnOff.TotalMilliseconds);
            _sleepTimer.Elapsed  += Sleep;
            _sleepTimer.AutoReset = false;
            _sleepTimer.Start();


            _wakeUpTimer           = new System.Timers.Timer(timeToTurnOn.TotalMilliseconds);
            _wakeUpTimer.Elapsed  += WakeUp;
            _wakeUpTimer.AutoReset = false;
            _wakeUpTimer.Start();
        }
コード例 #8
0
        /// <summary>
        /// Logs in an already registered user (regardless of the user's role)
        /// </summary>
        /// <returns>IWebApiConnector object to perform more actions</returns>
        public static IWebApiConnector LoginUser(string username, string url = null)
        {
            IWebApiConnector connector;

            url = url ?? AppConfigHelper.SiteUrl;
            var key = string.Join("_", url, username);

            if (!CachedConnections.TryGetValue(key, out connector))
            {
                connector = WebApiConnector.GetWebConnector(url, username);
                CachedConnections.Add(key, connector);
            }

            if (!connector.IsLoggedIn)
            {
                var loggedIn = connector.Login(AppConfigHelper.HostPassword);
                Assert.IsTrue(loggedIn);
            }

            return(connector);
        }
コード例 #9
0
        private async void button_JwtAuthorization_Click(object sender, EventArgs e)
        {
            using (HttpClient client = new HttpClient())
            {
                try
                {
                    WebApiConnector webApiConnector = new WebApiConnector();
                    webApiConnector.UriBuilder.Path = "api/token";
                    HttpResponseMessage response = await client.PostAsJsonAsync("https://localhost:44304/api/token", new { username = "******", password = "******" });

                    response.EnsureSuccessStatusCode();
                    var readedString = await response.Content.ReadAsStringAsync();

                    string token = readedString.Substring(10);
                    token = token.TrimEnd('\"', '}');

                    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);
                    string responseJsonString = await client.GetStringAsync("https://localhost:44304/api/books");

                    //WebApiConnector webApiConnector = new WebApiConnector();
                    //webApiConnector.UriBuilder.Path = "api/Authentication";
                    //HttpResponseMessage response = await client.PostAsJsonAsync(webApiConnector.Uri, new { username="******", password = "******" });
                    //response.EnsureSuccessStatusCode();
                    //var readedString = await response.Content.ReadAsStringAsync();

                    //client.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(readedString);

                    //webApiConnector.UriBuilder.Path = "api/CropGroups";
                    //string responseJsonString = await client.GetStringAsync(webApiConnector.Uri);
                    //var cropGroups = CropGroup.DeserializeJsonList(responseJsonString);
                }
                catch (HttpRequestException exc)
                {
                    Console.WriteLine("\nException Caught!");
                    Console.WriteLine("Message :{0} ", exc.Message);
                }
            }
        }
コード例 #10
0
        /// <summary>
        /// Register a user by using the Registration form
        /// </summary>
        public static HttpWebResponse Register(string userName, string password, string displayName, string email,
                                               string url = null, bool encriptFieldsNames = true)
        {
            const string registerRelativeUrl  = "/Register";
            const string registerFieldsPrefix = "dnn$ctr$Register$userForm";

            var postData = new Dictionary <string, object>
            {
                { registerFieldsPrefix + CodifyInputName("Username", "TextBox", encriptFieldsNames), userName },
                { registerFieldsPrefix + CodifyInputName("Password", "TextBox", encriptFieldsNames), password },
                { registerFieldsPrefix + CodifyInputName("PasswordConfirm", "TextBox", encriptFieldsNames), password },
                { registerFieldsPrefix + CodifyInputName("DisplayName", "TextBox", encriptFieldsNames), displayName },
                { registerFieldsPrefix + CodifyInputName("Email", "TextBox", encriptFieldsNames), email },
                { "__EVENTTARGET", "dnn$ctr$Register$registerButton" },
                { "__EVENTARGUMENT", "" },
                { "__ASYNCPOST", "true" }
            };

            url = url ?? AppConfigHelper.SiteUrl;
            var excludedInputPrefixes = new List <string>();
            var connector             = WebApiConnector.GetWebConnector(url, "");

            return(connector.PostUserForm(registerRelativeUrl, postData, excludedInputPrefixes, false));
        }
コード例 #11
0
        /// <summary>
        /// Creates an Administrator and performs Login for that user in as well.
        /// Password used is same as that for Host. Existing user is used if it's already present.
        /// </summary>
        /// <returns>WebApiConnector object to perform more actions</returns>
        public static IWebApiConnector LoginAdministrator(string firstName = IntegrationConstants.AdminFirstName, string lastName = IntegrationConstants.AdminLastName, string url = null)
        {
            IWebApiConnector connector;

            url = url ?? AppConfigHelper.SiteUrl;
            var username = firstName + "." + lastName;
            var key      = string.Join("_", url, username);

            if (!CachedConnections.TryGetValue(key, out connector))
            {
                var portalId = GetPortalFromUrl(url);
                UserController.CreateAdministratorUser(firstName, lastName, portalId);
                connector = WebApiConnector.GetWebConnector(url, username);
                CachedConnections.Add(key, connector);
            }

            if (!connector.IsLoggedIn)
            {
                var loggedIn = connector.Login(AppConfigHelper.HostPassword);
                Assert.IsTrue(loggedIn);
            }

            return(connector);
        }
コード例 #12
0
 /// <summary>
 /// Returns a coonector to access the default site annonymously
 /// </summary>
 /// <returns>IWebApiConnector object to perform more actions</returns>
 public static IWebApiConnector GetAnnonymousConnector(string url = null)
 {
     url = url ?? AppConfigHelper.SiteUrl;
     return(_anonymousConnector ??
            (_anonymousConnector = WebApiConnector.GetWebConnector(url, null)));
 }
コード例 #13
0
 public ResendAttendancesJob(SqliteConnector connector)
 {
     _db     = connector;
     _web    = new WebApiConnector();
     _logger = HostLogger.Get <ResendAttendancesJob>();
 }
コード例 #14
0
 public UploadAttendanceLogsHandler(SqliteConnector connector)
 {
     _db     = connector;
     _web    = new WebApiConnector();
     _logger = HostLogger.Get <UploadAttendanceLogsHandler>();
 }