public virtual void SetUp(MessageFamily handler, string trustAnchorDID) { _handler = handler; _messageHandler = async(messageName, message) => { if ("created".Equals(messageName)) { var threadId = message.GetValue("~thread")["thid"]; var relationshipDID = message.GetValue("did"); var relationship = new Relationship(relationshipDID.ToString(), threadId.ToString(), trustAnchorDID); await _repository.Add(relationship); await _unitOfWork.Commit(); } else if ("invitation".Equals(messageName)) { var relationship = await _repository.LoadByTrustAnchorDID(TrustAnchorDID.FromString(trustAnchorDID)); string inviteURL = message.GetValue("inviteURL"); relationship.SetInviteUrl(inviteURL); await _unitOfWork.Commit(); var qrGenerator = new QRCodeGenerator(); var qrCodeData = qrGenerator.CreateQrCode(inviteURL, QRCodeGenerator.ECCLevel.L); var qrCode = new QRCode(qrCodeData); var qrCodeImage = qrCode.GetGraphic(4); relationship.GenerateQrCode(qrCodeImage); await _unitOfWork.Commit(); } }; }
protected override void When(object @event) { switch (@event) { case RelationshipEvents.Created e: Id = new RelationshipDID(e.DID); ThreadId = e.ThreadId; TrustAnchorDID = new TrustAnchorDID(e.TrustAnchorDID); break; case RelationshipEvents.InviteUrlChanged e: InviteUrl = new Uri(e.InviteUrl); break; case RelationshipEvents.QrCodeGenerated e: QrCode = e.QrCode; break; } }