/// <summary> /// Exports a RawSignedModel into string. Use this method to transmit the card /// signing request through the network. /// </summary> public static string ExportAsString(this RawSignedModel model) { var rawCardBytes = Bytes.FromString(model.ExportAsJson()); var rawCardString = Bytes.ToString(rawCardBytes, StringEncoding.BASE64); return(rawCardString); }
/// <summary> /// Publishes card in Virgil Cards service. /// </summary> /// <param name="request">An instance of <see cref="RawSignedModel"/> class</param> /// <param name="token">The string representation of <see cref="Jwt"/> token.</param> /// <returns>published raw card.</returns> /// /// <example> /// <code> /// var crypto = new VirgilCrypto(); /// var keyPair = crypto.GenerateKeys(); /// var rawCardContent = new RawCardContent() /// { /// CreatedAt = DateTime.UtcNow, /// Identity = "test", /// PublicKey = crypto.ExportPublicKey(keyPair.PublicKey), /// Version = "5.0" /// }; /// var model = new RawSignedModel() { ContentSnapshot = SnapshotUtils.TakeSnapshot(rawCardContent) }; /// /// var signer = new ModelSigner(new VirgilCardCrypto()); /// signer.SelfSign(model, keyPair.PrivateKey); /// /// var jwtGenerator = new JwtGenerator( /// "[APP_ID_HERE]", /// "[API_PRIVATE_KEY_HERE]", /// "[API_PUBLIC_KEY_ID_HERE]", /// TimeSpan.FromMinutes(10), /// new VirgilAccessTokenSigner() /// ); /// var token = jwtGenerator.GenerateToken(rawCardContent.Identity); /// /// var client = new CardsClient(); /// await client.PublishCardAsync(model, token.ToString()); /// </code> /// </example> public async Task <RawSignedModel> PublishCardAsync(RawSignedModel request, string token) { if (request == null) { throw new ArgumentNullException(nameof(request)); } if (String.IsNullOrWhiteSpace(token)) { throw new ArgumentNullException(nameof(token)); } var postRequest = HttpRequest.Create(HttpRequestMethod.Post) .WithAuthorization(token) .WithEndpoint("/card/v5") .WithBody(this.serializer, request); var response = await this.connection.SendAsync(postRequest).ConfigureAwait(false); return(response .HandleError(this.serializer) .Parse <RawSignedModel>(this.serializer)); }
/// <summary> /// Exports a RawSignedModel into json. Use this method to transmit the card /// signing request through the network. /// </summary> public static string ExportAsJson(this RawSignedModel model) { return(Configuration.Serializer.Serialize(model)); }