Exemplo n.º 1
0
        public override async Task Go()
        {
            var entity = await _entityStore.GetEntity(Data.EntityId, false);

            if (entity == null)
            {
                return;
            }

            var actorId = entity.Data["actor"].Concat(entity.Data["attributedTo"]).FirstOrDefault();

            if (actorId == null)
            {
                return;                  // ???
            }
            var key = await _keyService.GetKey(actorId.Id);

            var doc = await _entryGenerator.Build(entity.Data);

            var envelope = new MagicEnvelope(doc.ToString(), "application/atom+xml", new MagicKey(key.PrivateKey));
            var hc       = new HttpClient();

            var content  = new StringContent(envelope.Build().ToString(), Encoding.UTF8, "application/magic-envelope+xml");
            var response = await hc.PostAsync(Data.SalmonUrl, content);

            if (((int)response.StatusCode) / 100 == 5)
            {
                throw new Exception("try later");
            }
        }
Exemplo n.º 2
0
            public async Task <ASObject> Parse(Stream request)
            {
                string data;

                using (var r = new StreamReader(request))
                    data = await r.ReadToEndAsync();

                var envelope = new MagicEnvelope(XDocument.Parse(data));

                Console.WriteLine(envelope.RawData);
                var entry = await _entryParser.Parse(XDocument.Parse(envelope.RawData), true, _targetUser);

                return(entry);
            }
Exemplo n.º 3
0
            public async Task Render(HttpRequest request, HttpResponse response, APEntity toRender)
            {
                response.ContentType = "application/atom+xml";

                var user = await _entityStore.GetEntity(toRender.Data["actor"].Single().Id, false);

                var key = await _keyService.GetKey(user.Id);

                var magicKey = key != null ? new MagicKey(key.PrivateKey) : MagicKey.Generate();

                var doc = await _entryGenerator.Build(toRender.Data);

                var enveloped = new MagicEnvelope(doc.ToString(), "application/atom+xml", magicKey);
                await response.WriteAsync(enveloped.Build().ToString());
            }