public static void ReferansEkle(this NihaiOzet nihaiOzet,
                                        PaketVersiyonTuru paketVersiyon,
                                        OzetAlgoritmaTuru ozetAlgoritma,
                                        byte[] ozetDegeri,
                                        Uri uri,
                                        byte[] ozetDegeriSha512 = null)
        {
            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 (nihaiOzet.Referanslar != null && nihaiOzet.Referanslar.Count > 0)
            {
                var oncekiReferans = nihaiOzet.Referanslar.Find(p =>
                                                                string.Compare(p.URI, uri.ToString(), StringComparison.InvariantCultureIgnoreCase) == 0);
                if (oncekiReferans != default(Referans))
                {
                    nihaiOzet.Referanslar.Remove(oncekiReferans);
                }
            }
            else
            {
                nihaiOzet.Referanslar = new List <Referans>();
            }

            var yeniReferans = new Referans
            {
                Ozet = Ozet.Kilavuz.OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(ozetAlgoritma).Olustur())
                       .OzetDegeriAta(ozetDegeri).Olustur(),
                URI  = uri.ToString(),
                Type = Constants.DAHILI_PAKET_BILESENI_REFERANS_TIPI
            };

            if (paketVersiyon == PaketVersiyonTuru.Versiyon2X)
            {
                yeniReferans.Ozet1 = Ozet.Kilavuz
                                     .OzetAlgoritmasiAta(OzetAlgoritmasi.Kilavuz.AlgoritmaAta(OzetAlgoritmaTuru.SHA512).Olustur())
                                     .OzetDegeriAta(ozetDegeriSha512).Olustur();
            }

            nihaiOzet.Referanslar.Add(yeniReferans);
        }
예제 #2
0
        public static void GenerateNihaiOzet(this Package package, NihaiOzet nihaiOzet, PaketVersiyonTuru paketVersiyon)
        {
            if (nihaiOzet != null && nihaiOzet.Referanslar != null && nihaiOzet.Referanslar.Count > 0)
            {
                object nihaiOzetObject = null;
                Type   nihaiOzetType   = null;

                switch (paketVersiyon)
                {
                case PaketVersiyonTuru.Versiyon1X:
                {
                    nihaiOzetObject = nihaiOzet.ToV1XCT_NihaiOzet();
                    nihaiOzetType   = typeof(CT_NihaiOzet);
                    break;
                }

                case PaketVersiyonTuru.Versiyon2X:
                {
                    nihaiOzetObject = nihaiOzet.ToV2XCT_NihaiOzet();
                    nihaiOzetType   = typeof(Api.V2X.CT_NihaiOzet);
                    break;
                }
                }

                var partNihaiOzet = package.CreatePart(Constants.URI_NIHAIOZET, Constants.MIME_XML,
                                                       CompressionOption.Maximum);
                package.CreateRelationship(partNihaiOzet.Uri, TargetMode.Internal, Constants.RELATION_TYPE_NIHAIOZET,
                                           Constants.ID_NIHAIOZET);
                var xmlSerializer = new XmlSerializer(nihaiOzetType);
                using (var xmlTextWriter = new XmlTextWriter(partNihaiOzet.GetStream(), Encoding.UTF8)
                {
                    Formatting = Formatting.Indented
                })
                {
                    xmlSerializer.Serialize(xmlTextWriter, nihaiOzetObject);
                }
            }
        }