/// <inheritdoc />
        protected override async Task <int> OnExecute(CommandLineApplication app)
        {
            if (!CheckParameters())
            {
                return(1);
            }

            var export = GetInput();

            if (export is null)
            {
                Output.WriteError("input failed to validate");
                return(1);
            }

            var utf8Bytes = JsonSerializer.SerializeToUtf8Bytes(export);

            // name / filename must match parameter-name of ImportController.Import
            var formData = new MultipartFormDataContent {
                { new ByteArrayContent(utf8Bytes), "file", "file" }
            };

            var request = await RestRequest.Make(Output)
                          .Post(new Uri(new Uri(ConfigServiceEndpoint), "v1/import"), formData)
                          .ReceiveString();

            if (request.HttpResponseMessage?.IsSuccessStatusCode != true)
            {
                Output.WriteError($"couldn't import '{string.Join(", ", Files)}': {request.HttpResponseMessage?.StatusCode:D} {await request.Take<string>()}");
                return(1);
            }

            return(0);
        }
Beispiel #2
0
            static TransformedEvent?HandleResponse(JsValue result, TransformEvent original)
            {
                if (result == null || result.IsUndefined())
                {
                    Log.Debug("Got empty response, ignoring");
                    return(null);
                }

                ObjectInstance obj = result.AsObject();

                if (!TryGetString("Stream", true, out var stream) ||
                    string.IsNullOrWhiteSpace(stream) ||
                    !TryGetString("EventType", true, out var eventType) ||
                    string.IsNullOrWhiteSpace(eventType))
                {
                    return(null);
                }

                var data = GetSerializedObject("Data");

                if (data == null)
                {
                    return(null);
                }

                var meta = GetSerializedObject("Meta");

                return(new TransformedEvent(stream, eventType, data, meta));

                byte[]? GetSerializedObject(string propName)
                {
                    var candidate = obj.Get(propName);

                    if (candidate == null || !candidate.IsObject())
                    {
                        return(null);
                    }

                    return(JsonSerializer.SerializeToUtf8Bytes(candidate.ToObject()));
                }

                bool TryGetString(string propName, bool log, out string value)
                {
                    var candidate = obj.Get(propName);

                    if (candidate == null || !candidate.IsString())
                    {
                        if (log)
                        {
                            Log.Debug("Transformed object property {Prop} is null or not a string", propName);
                        }
                        value = string.Empty;
                        return(false);
                    }

                    value = candidate.AsString();
                    return(true);
                }
            }
Beispiel #3
0
        void VerifyDoubleUnicode()
        {
            var data      = $"Hello Unicode: {(char)0xD800}{(char)0xDC00}";
            var parameter = Writer.Default.Get(data).Open();

            Encoder.Default.Get(parameter)
            .Should()
            .Be(JsonConvert.ToString(data));
            parameter.Should().NotEqual(JsonSerializer.SerializeToUtf8Bytes(data));
        }
Beispiel #4
0
        void VerifyUnicode()
        {
            const string data      = "Hello World!\nHello World Again: 方!";
            var          parameter = Writer.Default.Get(data).Open();

            Encoder.Default.Get(parameter)
            .Should()
            .Be(JsonConvert.ToString(data));
            parameter.Should().NotEqual(JsonSerializer.SerializeToUtf8Bytes(data));
        }
Beispiel #5
0
        public void TestJsonSerialization()
        {
            ushort port = TestHelper.GetPort();

            using var server      = new EasyTcpServer().Start(port);
            server.OnDataReceive += (sender, message) => message.Client.Send(message);

            using var client = new EasyTcpClient
                  {
                      Serialize   = o => JsonSerializer.SerializeToUtf8Bytes(o),
                      Deserialize = (b, t) => JsonSerializer.Deserialize(b, t)
                  };
            Assert.IsTrue(client.Connect(IPAddress.Loopback, port));

            var testData = new List <string> {
                "testdata", "testdata2"
            };
            var reply = client.SendAndGetReply(testData);

            Assert.AreEqual(testData, reply.Deserialize <List <string> >());
        }
        public void Publish <T>(T @event) where T : IntegrationEvent
        {
            if (!_persistentConnection.IsConnected)
            {
                _persistentConnection.TryConnect();
            }

            var policy = Policy.Handle <BrokerUnreachableException>()
                         .Or <SocketException>()
                         .WaitAndRetry(_retryCount, retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)),
                                       (ex, time) =>
            {
                _logger.LogWarning(ex,
                                   "Could not publish event: {EventId} after {Timeout}s ({ExceptionMessage})",
                                   @event.Id,
                                   $"{time.TotalSeconds:n1}", ex.Message);
            });

            var eventName = @event.GetType().Name;

            using var channel = _persistentConnection.CreateModel();
            channel.ExchangeDeclare(exchange: BROKER_NAME, type: "direct");

            var body = JsonSerializer.SerializeToUtf8Bytes(@event);

            policy.Execute(() =>
            {
                var properties          = channel.CreateBasicProperties();
                properties.DeliveryMode = 1; // non-persistent

                channel.BasicPublish(

                    exchange: BROKER_NAME,
                    routingKey: eventName,
                    mandatory: true,
                    basicProperties: properties,
                    body: body);
            });
        }
Beispiel #7
0
 public string SystemTextJsonUTF8()
 {
     return(System.Text.UTF8Encoding.UTF8.GetString(JsonSerializer.SerializeToUtf8Bytes(_instance)));
 }
Beispiel #8
0
 private string EncryptToken(AuthTokenResponse token, byte[] salt) =>
 Convert.ToBase64String(
     ProtectedData.Protect(
         JsonSerializer.SerializeToUtf8Bytes(token),
         salt,
         DataProtectionScope.CurrentUser));
        public async Task <IActionResult> DownloadPersonalData()
        {
            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                return(NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'."));
            }

            _logger.LogInformation("User with ID '{UserId}' asked for their personal data.", _userManager.GetUserId(User));

            // Only include personal data for download
            var personalData      = new Dictionary <string, string>();
            var personalDataProps = typeof(IdentityUser).GetProperties().Where(
                prop => Attribute.IsDefined(prop, typeof(PersonalDataAttribute)));

            foreach (var p in personalDataProps)
            {
                try
                {
                    var getValue = p.GetValue(user)?.ToString() ?? "null";
                    personalData.Add(p.Name, getValue);
                }
                catch (Exception)
                {
                    //ignore
                }
            }

            var logins = await _userManager.GetLoginsAsync(user);

            foreach (var l in logins)
            {
                personalData.Add($"{l.LoginProvider} external login provider key", l.ProviderKey);
            }

            var id = await _steamIdentityService.FindOne(user.Id);

            var AdditionalData = new Dictionary <string, IEnumerable>();

            if (id != null)
            {
                AdditionalData.Add("HistorySteam", (await _pavlovServerPlayerHistoryService.FindAllFromPlayer(id.Id)));
                AdditionalData.Add("MatchesSteam", (await _matchService.PersonalStats(id.Id)));
                AdditionalData.Add("LeaderBoardSteam", (await _steamIdentityStatsServerService.GetForSteamId(id.Id)));
            }

            if (id != null && id.OculusId != "" && await _steamIdentityService.FindOne(id.OculusId) == null)
            {
                AdditionalData.Add("HistoryOculus", (await _pavlovServerPlayerHistoryService.FindAllFromPlayer(id.OculusId)));
                AdditionalData.Add("MatchesOculus", (await _matchService.PersonalStats(id.OculusId)));
                AdditionalData.Add("LeaderBoardOculus", (await _steamIdentityStatsServerService.GetForSteamId(id.OculusId)));
            }

            personalData.Add($"Authenticator Key", await _userManager.GetAuthenticatorKeyAsync(user));

            Response.Headers.Add("Content-Disposition", "attachment; filename=PersonalData.json");
            return(new FileContentResult(JsonSerializer.SerializeToUtf8Bytes(new
            {
                internalData = personalData,
                additionalData = AdditionalData
            }), "application/json"));
        }
Beispiel #10
0
        void VerifyEscape()
        {
            const string data = "Hello World!\nHello World Again!";

            Writer.Default.Get(data).Open().Should().Equal(JsonSerializer.SerializeToUtf8Bytes(data));
        }
Beispiel #11
0
        void Verify()
        {
            var data = string.Join('-', Enumerable.Repeat("Hello World!", 1000));

            Writer.Default.Get(data).Open().Should().Equal(JsonSerializer.SerializeToUtf8Bytes(data));
        }