|
| 1 | +using QRCoder; |
| 2 | +using System.Numerics; |
| 3 | +using static QRCoder.PayloadGenerator; |
| 4 | + |
| 5 | +namespace IToolKit.API.Tools.Generators |
| 6 | +{ |
| 7 | + public class QRCodeTools |
| 8 | + { |
| 9 | + static QRCodeGenerator qrGenerator = new QRCodeGenerator(); |
| 10 | + |
| 11 | + public static string TextToBase64(string text) |
| 12 | + { |
| 13 | + return ToBase64(new TextPayload { Text = text }, new byte[] { 0, 0, 0 }, new byte[] { 255, 255, 255 }); |
| 14 | + } |
| 15 | + |
| 16 | + public static string ToBase64(Payload payload, byte[] darkColorRgba, byte[] lightColorRgba) |
| 17 | + { |
| 18 | + QRCodeData qrCodeData = qrGenerator.CreateQrCode(payload.ToString(), QRCodeGenerator.ECCLevel.Q); |
| 19 | + PngByteQRCode qrCode = new PngByteQRCode(qrCodeData); |
| 20 | + return Convert.ToBase64String(qrCode.GetGraphic(pixelsPerModule: 20, darkColorRgba, lightColorRgba)); |
| 21 | + } |
| 22 | + |
| 23 | + public class Payload |
| 24 | + { |
| 25 | + public override string ToString() |
| 26 | + { |
| 27 | + return String.Empty; |
| 28 | + } |
| 29 | + } |
| 30 | + |
| 31 | + public class TextPayload : Payload |
| 32 | + { |
| 33 | + public string Text { get; set; } |
| 34 | + |
| 35 | + public override string ToString() |
| 36 | + { |
| 37 | + return Text; |
| 38 | + } |
| 39 | + } |
| 40 | + |
| 41 | + public class WifiPayload : Payload |
| 42 | + { |
| 43 | + public string SSID { get; set; } |
| 44 | + public string Pass { get; set; } |
| 45 | + public WiFi.Authentication Authentication { get; set; } |
| 46 | + public bool IsHidden { get; set; } = false; |
| 47 | + |
| 48 | + public override string ToString() |
| 49 | + { |
| 50 | + return new WiFi(SSID, Pass, Authentication, IsHidden).ToString(); |
| 51 | + } |
| 52 | + } |
| 53 | + |
| 54 | + public class MailPayload : Payload |
| 55 | + { |
| 56 | + public string MailReciver { get; set; } |
| 57 | + public string Subject { get; set; } |
| 58 | + public string Message { get; set; } |
| 59 | + public override string ToString() |
| 60 | + { |
| 61 | + return new Mail(MailReciver, Subject, Message).ToString(); |
| 62 | + } |
| 63 | + } |
| 64 | + public class SMSPayload : Payload |
| 65 | + { |
| 66 | + public string Number { get; set; } |
| 67 | + public string Subject { get; set; } |
| 68 | + public override string ToString() |
| 69 | + { |
| 70 | + return new SMS(Number, Subject).ToString(); |
| 71 | + } |
| 72 | + } |
| 73 | + |
| 74 | + public class ContactDataPayload : Payload |
| 75 | + { |
| 76 | + public ContactData.ContactOutputType ContactOutput { get; set; } |
| 77 | + public string FirstName { get; set; } |
| 78 | + public string LastName { get; set; } |
| 79 | + public string NickName { get; set; } |
| 80 | + public string Phone { get; set; } |
| 81 | + public string MobilePhone { get; set; } |
| 82 | + public string WorkPhone { get; set; } |
| 83 | + public string Email { get; set; } |
| 84 | + |
| 85 | + public override string ToString() |
| 86 | + { |
| 87 | + return new ContactData(ContactOutput, FirstName, LastName, NickName, Phone, MobilePhone, WorkPhone, Email).ToString(); |
| 88 | + } |
| 89 | + } |
| 90 | + |
| 91 | + public class CalendarEventPayload : Payload |
| 92 | + { |
| 93 | + public string Subject { get; set; } |
| 94 | + public string Description { get; set; } |
| 95 | + public string Location { get; set; } |
| 96 | + public DateTime? Start { get; set; } = DateTime.Now; |
| 97 | + public DateTime? End { get; set; } = DateTime.Now; |
| 98 | + public bool AllDayEvent { get; set; } |
| 99 | + public override string ToString() |
| 100 | + { |
| 101 | + return new CalendarEvent(Subject, Description, Location, Start!.Value, End!.Value, AllDayEvent).ToString(); |
| 102 | + } |
| 103 | + } |
| 104 | + } |
| 105 | +} |
0 commit comments