public override void HandleRequest(Request request) { if (request is AttributeRequest) { AttributeRequest attr_request = request as AttributeRequest; Database db = new Database(); Attribute attr = new Attribute(); using (SQLiteConnection conn = db.Connection) { conn.Open(); if (attr_request.Get) { string value = attr.Get(attr_request.Path, conn); if (string.IsNullOrEmpty(value) == false) { attr_request.Value = value; request.Handled(); } } else { attr.Set(attr_request.Path, attr_request.Value, conn); request.Handled(); } } } }
public void RespondNull() { var req = new AttributeRequest(); req.TypeUri = "http://someType"; req.Count = 1; req.Respond(null); }
public void RespondTooManyValues() { var req = new AttributeRequest(); req.TypeUri = "http://someType"; req.Count = 1; req.Respond("value1", "value2"); }
public void CtorFull() { var req = new AttributeRequest(WellKnownAttributes.Contact.Email, true, 5); Assert.AreEqual(WellKnownAttributes.Contact.Email, req.TypeUri); Assert.IsTrue(req.IsRequired); Assert.AreEqual(5, req.Count); }
public void CtorDefault() { AttributeRequest req = new AttributeRequest(); Assert.AreEqual(1, req.Count); Assert.IsNull(req.TypeUri); Assert.IsFalse(req.IsRequired); }
public void RespondSimpleValue() { var req = new AttributeRequest(); req.TypeUri = "http://someType"; var resp = req.Respond("value"); Assert.AreEqual(req.TypeUri, resp.TypeUri); Assert.AreEqual(1, resp.Values.Count); Assert.AreEqual("value", resp.Values[0]); }
public override CollectedData OnAcquire() { List <string> drive_names = new List <string>(); AttributeRequest request = new AttributeRequest(Context.ID.Name + ".all.drives.descriptions", true); RequestBus.Instance.MakeRequest(request); if (request.IsHandled) { try { Dictionary <string, string> dict = JsonConvert.DeserializeObject <Dictionary <string, string> >(request.Value); drive_names = new List <string>(dict.Keys); } catch (Exception) { } } CollectedData basedata = base.OnAcquire(); List <Data> dataList = new List <Data>(); if (basedata.DataIsCollected) { List <DictionaryData> speedData = basedata.D.Select(w => w as DictionaryData).ToList(); while (speedData.Count > 0) { var speed = speedData[0]; speedData.RemoveAt(0); if (speed.Data.ContainsKey("PercentDiskTime") == false || speed.Data.ContainsKey("AvgDiskQueueLength") == false || speed.Data.ContainsKey("Name") == false) { continue; } var d = new DictionaryData(Context); string drive_name = speed.Data["Name"].Split(new string[] { " " }, StringSplitOptions.RemoveEmptyEntries).Last(); d.Data["Disk Time %"] = speed.Data["PercentDiskTime"]; d.Data["Avg Disk Q Length"] = speed.Data["AvgDiskQueueLength"]; d.Data["Disk Name"] = drive_name; bool is_total = drive_name.ToLower().Contains("total"); if (is_total == false && (drive_names.Count == 0 || drive_names.Contains(drive_name.ToUpper()))) { dataList.Add(d); } } } return(new CollectedData(Context, basedata.DataIsCollected && dataList.Count > 0, dataList)); }
public MessageBase Read(SlpReader reader) { var v = reader.ReadByte(); if (v != 1 && v != 2) throw new ServiceProtocolException(ServiceErrorCode.VersionNotSupported); var tmp = reader.ReadByte(); MessageBase result = null; switch (tmp) { case 1: result = new ServiceRequest(); break; case 2: result = new ServiceReply(); break; case 3: result = new ServiceRegistrationRequest(); break; case 4: result = new ServiceDeregistrationRequest(); break; case 5: result = new ServiceAcknowledgement(); break; case 6: result = new AttributeRequest(); break; case 7: result = new AttributeReply(); break; case 8: result = new DirectoryAgentAdvert(); break; case 9: result = new ServiceTypeRequest(); break; case 10: result = new ServiceTypeReply(); break; case 11: result = new ServiceAgentAdvert(); break; default: throw new ServiceProtocolException(ServiceErrorCode.ParseError); } result.Version = v; result.Create(reader); return result; }
public void RespondTwoValues() { var req = new AttributeRequest(); req.TypeUri = "http://someType"; req.Count = 2; var resp = req.Respond("value1", "value2"); Assert.AreEqual(req.TypeUri, resp.TypeUri); Assert.AreEqual(2, resp.Values.Count); Assert.AreEqual("value1", resp.Values[0]); Assert.AreEqual("value2", resp.Values[1]); }
public IActionResult GetAttributehierarchy([FromBody] AttributeRequest request) { var response = new OperationResponse <ICollection>(); try { response.Data = _productService.GetAttributehierarchy(request); } catch (Exception exception) { response.State = ResponseState.Error; response.Messages.Add(exception.Message + " StackTrace==> " + exception.StackTrace); _logger.LogError(exception, "Error Getting GetAttributehierarchy==>" + exception.StackTrace, request); } return(new JsonResult(response)); }
public void EqualityTests() { var req1 = new AttributeRequest(); var req2 = new AttributeRequest(); Assert.AreEqual(req1, req2); req1.IsRequired = true; Assert.AreNotEqual(req1, req2); req2.IsRequired = true; Assert.AreEqual(req1, req2); req1.Count = 3; Assert.AreNotEqual(req1, req2); req2.Count = 3; Assert.AreEqual(req1, req2); req1.TypeUri = "http://hi"; Assert.AreNotEqual(req1, req2); req2.TypeUri = "http://hi"; Assert.AreEqual(req1, req2); }
public MessageBase Read(SlpReader reader) { var v = reader.ReadByte(); if (v != 1 && v != 2) { throw new ServiceProtocolException(ServiceErrorCode.VersionNotSupported); } var tmp = reader.ReadByte(); MessageBase result = null; switch (tmp) { case 1: result = new ServiceRequest(); break; case 2: result = new ServiceReply(); break; case 3: result = new ServiceRegistrationRequest(); break; case 4: result = new ServiceDeregistrationRequest(); break; case 5: result = new ServiceAcknowledgement(); break; case 6: result = new AttributeRequest(); break; case 7: result = new AttributeReply(); break; case 8: result = new DirectoryAgentAdvert(); break; case 9: result = new ServiceTypeRequest(); break; case 10: result = new ServiceTypeReply(); break; case 11: result = new ServiceAgentAdvert(); break; default: throw new ServiceProtocolException(ServiceErrorCode.ParseError); } result.Version = v; result.Create(reader); return(result); }
public void SetCountNegative() { var req = new AttributeRequest(); req.Count = -1; }
public void SetCountZero() { var req = new AttributeRequest(); req.Count = 0; }
public ActionResult OpenIdLogin() { string returnUrl = VirtualPathUtility.ToAbsolute("~/"); var openid = new OpenIdRelyingParty(); var response = openid.GetResponse(); if (response == null) { // Stage 2: user submitting Identifier Identifier id; if (Identifier.TryParse(Request["openid_identifier"], out id)) { try { IAuthenticationRequest req = openid.CreateRequest(Request["openid_identifier"]); var fetch = new FetchRequest(); //ask for more info - the email address var item = new AttributeRequest(WellKnownAttributes.Contact.Email); item.IsRequired = true; fetch.Attributes.Add(item); req.AddExtension(fetch); return req.RedirectingResponse.AsActionResult(); } catch (ProtocolException ex) { ViewData["Message"] = ex.Message; return View("Logon"); } } else { ViewData["Message"] = "Invalid identifier"; return View("Logon"); } } else { // Stage 3: OpenID Provider sending assertion response switch (response.Status) { case AuthenticationStatus.Authenticated: var fetch = response.GetExtension<FetchResponse>(); string name = response.FriendlyIdentifierForDisplay; if (fetch != null) { IList<string> emailAddresses = fetch.Attributes[WellKnownAttributes.Contact.Email].Values; string email = emailAddresses.Count > 0 ? emailAddresses[0] : null; //don't show the email - it's creepy. Just use the name of the email name = email.Substring(0, email.IndexOf('@')); } else { name = name.Substring(0, name.IndexOf('.')); } //FormsAuthentication.SetAuthCookie(name, false); SetCookies(name, name); AuthAndRedirect(name, name); if (!string.IsNullOrEmpty(returnUrl)) { return Redirect(returnUrl); } else { return RedirectToAction("Index", "Home"); } case AuthenticationStatus.Canceled: ViewData["Message"] = "Canceled at provider"; return View("Logon"); case AuthenticationStatus.Failed: ViewData["Message"] = response.Exception.Message; return View("Logon"); } } return new EmptyResult(); }
public override CollectedData OnAcquire() { CollectedData cd = base.OnAcquire(); CollectedData return_data = new CollectedData(Context, false); if (cd.DataIsCollected) { List <DictionaryData> usage_data = cd.D.Select(w => w as DictionaryData).ToList(); //MonitoredDrivesRequest request = new MonitoredDrivesRequest(Context.Name); //RequestBus.Instance.MakeRequest(request); List <Data> data = new List <Data>(); // Package the drive information into a single Data object that maps the drive letter to a DiskUsage // object that maintains the capacity/free/used values for that drive. GenericDictionaryData <DiskUsage> d = new GenericDictionaryData <DiskUsage>(Context); //data.Add(d); // Unfortunately, there's no way to determine the drive type when determining the disk speeds (see DiskSpeed class). // So that we're reporting the same drives, record the drive letters here, then match them when we do the disk speed. // And we also want to keep track of the drive letter => name ("C:" => "OSDisk", for example), so let's grab that now // as well. Dictionary <string, string> drive_descriptions = new Dictionary <string, string>(); while (usage_data.Count > 0) { DictionaryData usage = usage_data[0]; usage_data.RemoveAt(0); // Only report local disks. Don't do removeable (floppy or thumb drive), CDs, or network drives. if (int.TryParse(usage.Data["DriveType"], out int drive_type) && drive_type == (int)EDriveType.LocalDisk && usage.Data.ContainsKey("Size") && usage.Data.ContainsKey("FreeSpace") && usage.Data.ContainsKey("Name") && usage.Data.ContainsKey("VolumeName")) { string drive_name = usage.Data["Name"].Trim(); string description = usage.Data["VolumeName"].Trim(); drive_descriptions[drive_name] = description; if (ulong.TryParse(usage.Data["Size"], out ulong c) && ulong.TryParse(usage.Data["FreeSpace"], out ulong f)) { d.Data[drive_name] = new DiskUsage() { CapacityNum = c, FreeNum = f }; } } } if (d.Data.Count > 0) { return_data.DataIsCollected = true; return_data.D.Add(d); } // Record the drive descriptions as an attribute in the database. We will also use this to get the drive letters // when needed. string json = JsonConvert.SerializeObject(drive_descriptions); AttributeRequest attr_request = new AttributeRequest(Context.ID.Name + ".all.drives.descriptions", false) { Value = json }; RequestBus.Instance.MakeRequest(attr_request); } return(return_data); }