public void ArrayIndexWithNestProperty() { var expected = "/NestMore/5/Nest"; var actual = JsonPointer.Create <TestClass>(x => x.NestMore[5].Nest); Assert.AreEqual(expected, actual.ToString()); }
public void NestedWithArrayIndexProperty() { var expected = "/Nest/Ints/5"; var actual = JsonPointer.Create <TestClass>(x => x.Nest.Ints[5]); Assert.AreEqual(expected, actual.ToString()); }
public void NestedProperty() { var expected = "/Nest/Nest"; var actual = JsonPointer.Create <TestClass>(x => x.Nest.Nest); Assert.AreEqual(expected, actual.ToString()); }
public void SimpleArrayIndex() { var expected = "/Ints/1"; var actual = JsonPointer.Create <TestClass>(x => x.Ints[1]); Assert.AreEqual(expected, actual.ToString()); }
public void SimpleProperty() { var expected = "/String"; var actual = JsonPointer.Create <TestClass>(x => x.String); Assert.AreEqual(expected, actual.ToString()); }
internal (JsonSchema, Uri) FindSubschema(JsonPointer pointer, Uri currentUri) { IRefResolvable resolvable = this; for (var i = 0; i < pointer.Segments.Length; i++) { var segment = pointer.Segments[i]; var newResolvable = resolvable.ResolvePointerSegment(segment.Value); if (newResolvable == null) { // TODO: document that this process does not consider `$id` in extraneous data if (resolvable is JsonSchema subSchema && subSchema.OtherData != null && subSchema.OtherData.TryGetValue(segment.Value, out var element)) { var newPointer = JsonPointer.Create(pointer.Segments.Skip(i + 1), true); var value = newPointer.Evaluate(element); var asSchema = FromText(value.ToString()); return(asSchema, currentUri); } return(null, currentUri); } if (newResolvable is JsonSchema schema && schema.Keywords != null) { var idKeyword = schema.Keywords.OfType <IdKeyword>().SingleOrDefault(); if (idKeyword != null && i != pointer.Segments.Length - 1) { currentUri = idKeyword.UpdateUri(currentUri); } } resolvable = newResolvable; } if (!(resolvable is JsonSchema)) { resolvable = resolvable.ResolvePointerSegment(null); } return(resolvable as JsonSchema, currentUri); }
public override async Task ExecuteAsync(SetMaintenancePacket setMaintenancePacket, ClientSession session) { var servers = (await _channelHttpClient.GetChannelsAsync().ConfigureAwait(false)) ?.Where(c => c.Type == ServerType.WorldServer).ToList(); var patch = new JsonPatch(PatchOperation.Replace(JsonPointer.Create <ChannelInfo>(o => o.IsMaintenance), setMaintenancePacket.MaintenanceMode.AsJsonElement())); if (setMaintenancePacket.IsGlobal == false) { await _channelHttpClient.PatchAsync(_channel.ChannelId, patch); } else { foreach (var server in servers ?? new List <ChannelInfo>()) { await _channelHttpClient.PatchAsync(server.Id, patch); } } }
internal Uri BuildAbsoluteUri(JsonPointer pointer) { if (_currentUri == null || !_currentUri.IsAbsoluteUri) { return(null); } if (pointer.Segments.All(s => s.Value != RefKeyword.Name && s.Value != RecursiveRefKeyword.Name)) { return(null); } var lastIndexOfRef = pointer.Segments .Select((s, i) => (s, i)) .Last(s => s.s.Value == RefKeyword.Name || s.s.Value == RecursiveRefKeyword.Name).i; var absoluteSegments = pointer.Segments.Skip(lastIndexOfRef + 1); if (_reference != null) { absoluteSegments = _reference.Value.Segments.Concat(absoluteSegments); } return(new Uri(_currentUri, JsonPointer.Create(absoluteSegments, true).ToString())); }
public override async Task ExecuteAsync(PstClientPacket pstClientPacket, ClientSession clientSession) { var isCopy = pstClientPacket.Type == 2; var mail = await _mailHttpClient.GetGiftAsync(pstClientPacket.Id, clientSession.Character.VisualId, isCopy).ConfigureAwait(false); switch (pstClientPacket.ActionType) { case 3: if (mail == null) { return; } var patch = new JsonPatch(PatchOperation.Replace(JsonPointer.Create <MailDto>(o => o.IsOpened), true.AsJsonElement())); await _mailHttpClient.ViewGiftAsync(mail.MailDto.MailId, patch).ConfigureAwait(false); await clientSession.SendPacketAsync(mail.GeneratePostMessage(pstClientPacket.Type)).ConfigureAwait(false); break; case 2: if (mail == null) { return; } await _mailHttpClient.DeleteGiftAsync(pstClientPacket.Id, clientSession.Character.VisualId, isCopy).ConfigureAwait(false); await clientSession.SendPacketAsync( clientSession.Character.GenerateSay( GameLanguage.Instance.GetMessageFromKey(LanguageKey.MAIL_DELETED, clientSession.Account.Language), SayColorType.Purple)).ConfigureAwait(false); break; case 1: if (string.IsNullOrEmpty(pstClientPacket.Text) || string.IsNullOrEmpty(pstClientPacket.Title)) { return; } var dest = await _characterDao.FirstOrDefaultAsync(s => s.Name == pstClientPacket.ReceiverName).ConfigureAwait(false); if (dest != null) { await _mailHttpClient.SendMessageAsync(clientSession.Character, dest.CharacterId, pstClientPacket.Title, pstClientPacket.Text).ConfigureAwait(false); await clientSession.SendPacketAsync(clientSession.Character.GenerateSay( GameLanguage.Instance.GetMessageFromKey( LanguageKey.MAILED, clientSession.Account.Language), SayColorType.Yellow)).ConfigureAwait(false); } else { await clientSession.SendPacketAsync( clientSession.Character.GenerateSay( GameLanguage.Instance.GetMessageFromKey(LanguageKey.USER_NOT_FOUND, clientSession.Account.Language), SayColorType.Yellow)).ConfigureAwait(false); } break; default: return; } }
public void ImplicitCastTest() { var pointer = JsonPointer.Create("string", 1, "foo"); Assert.AreEqual("/string/1/foo", pointer.ToString()); }