public static void ReferansEkle(this PaketOzeti paketOzeti, PaketVersiyonTuru paketVersiyon, OzetAlgoritmaTuru ozetAlgoritma, byte[] ozetDegeri, Uri uri, byte[] ozetDegeriSha512 = null, bool hariciBilesenMi = false) { if (ozetAlgoritma == OzetAlgoritmaTuru.YOK) { throw new ArgumentException( nameof(ozetAlgoritma) + " değeri " + nameof(OzetAlgoritmaTuru.YOK) + " olmamalıdır.", nameof(ozetAlgoritma)); } if (ozetAlgoritma == OzetAlgoritmaTuru.SHA384 && paketVersiyon == PaketVersiyonTuru.Versiyon1X) { throw new ArgumentException( nameof(OzetAlgoritmaTuru.SHA384) + " özet algoritması yalnızca e-Yazışma API 2.X versiyonlarında kullanılabilir.", nameof(ozetAlgoritma)); } if (paketOzeti.Referanslar != null && paketOzeti.Referanslar.Count > 0) { var oncekiReferans = paketOzeti.Referanslar.Find(p => string.Compare(p.URI, uri.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0); if (oncekiReferans != default(Referans)) { paketOzeti.Referanslar.Remove(oncekiReferans); } } else { paketOzeti.Referanslar = new List <Referans>(); } var yeniReferans = new Referans { Ozet = Ozet.Kilavuz.OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(ozetAlgoritma).Olustur()) .OzetDegeriAta(ozetDegeri).Olustur(), URI = uri.ToString(), Type = hariciBilesenMi ? Constants.HARICI_PAKET_BILESENI_REFERANS_TIPI : Constants.DAHILI_PAKET_BILESENI_REFERANS_TIPI }; if (paketVersiyon == PaketVersiyonTuru.Versiyon2X) { yeniReferans.Ozet1 = Ozet.Kilavuz .OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(OzetAlgoritmaTuru.SHA512).Olustur()) .OzetDegeriAta(ozetDegeriSha512).Olustur(); } paketOzeti.Referanslar.Add(yeniReferans); }
public static void GeneratePaketOzeti(this Package package, PaketOzeti paketOzeti, PaketVersiyonTuru paketVersiyon) { if (paketOzeti != null && paketOzeti.Referanslar != null && paketOzeti.Referanslar.Count > 0) { object paketOzetiObject = null; Type paketOzetiType = null; switch (paketVersiyon) { case PaketVersiyonTuru.Versiyon1X: { paketOzetiObject = paketOzeti.ToV1XCT_PaketOzeti(); paketOzetiType = typeof(CT_PaketOzeti); break; } case PaketVersiyonTuru.Versiyon2X: { paketOzetiObject = paketOzeti.ToV2XCT_PaketOzeti(); paketOzetiType = typeof(Api.V2X.CT_PaketOzeti); break; } } var partPaketOzeti = package.CreatePart(Constants.URI_PAKETOZETI, Constants.MIME_XML, CompressionOption.Maximum); package.CreateRelationship(partPaketOzeti.Uri, TargetMode.Internal, Constants.RELATION_TYPE_PAKETOZETI, Constants.ID_PaketOzeti); var xmlSerializer = new XmlSerializer(paketOzetiType); using (var xmlTextWriter = new XmlTextWriter(partPaketOzeti.GetStream(), Encoding.UTF8) { Formatting = Formatting.Indented }) { xmlSerializer.Serialize(xmlTextWriter, paketOzetiObject); } } }