Showing
1 changed file
with
14 additions
and
7 deletions
... | @@ -13,6 +13,13 @@ import Foundation | ... | @@ -13,6 +13,13 @@ import Foundation |
13 | public class CampaignItemModel { | 13 | public class CampaignItemModel { |
14 | public let index_url: String? | 14 | public let index_url: String? |
15 | public var logo_url: String? | 15 | public var logo_url: String? |
16 | + | ||
17 | + // MARK: - URL Cleaning Helper | ||
18 | + | ||
19 | + /// Cleans escaped forward slashes from URLs (e.g., "https:\/\/example.com" -> "https://example.com") | ||
20 | + private func cleanEscapedUrl(_ url: String?) -> String? { | ||
21 | + return url?.replacingOccurrences(of: "\\/", with: "/") | ||
22 | + } | ||
16 | public let offer_category: String? | 23 | public let offer_category: String? |
17 | public var title: String? | 24 | public var title: String? |
18 | public var subtitle: String? | 25 | public var subtitle: String? |
... | @@ -98,8 +105,8 @@ public class CampaignItemModel { | ... | @@ -98,8 +105,8 @@ public class CampaignItemModel { |
98 | } | 105 | } |
99 | 106 | ||
100 | public init(dictionary: [String: Any]) { | 107 | public init(dictionary: [String: Any]) { |
101 | - self.index_url = dictionary["index_url"] as? String? ?? "" | 108 | + self.index_url = cleanEscapedUrl(dictionary["index_url"] as? String? ?? "") |
102 | - self.logo_url = dictionary["logo_url"] as? String? ?? "" | 109 | + self.logo_url = cleanEscapedUrl(dictionary["logo_url"] as? String? ?? "") |
103 | self.offer_category = dictionary["communication_category"] as? String? ?? "" | 110 | self.offer_category = dictionary["communication_category"] as? String? ?? "" |
104 | self.title = dictionary["title"] as? String? ?? "" | 111 | self.title = dictionary["title"] as? String? ?? "" |
105 | self.subtitle = dictionary["subtitle"] as? String? ?? "" | 112 | self.subtitle = dictionary["subtitle"] as? String? ?? "" |
... | @@ -152,16 +159,16 @@ public class CampaignItemModel { | ... | @@ -152,16 +159,16 @@ public class CampaignItemModel { |
152 | self.type = extra_fields["type"] as? String? ?? "" | 159 | self.type = extra_fields["type"] as? String? ?? "" |
153 | self.carousel = extra_fields["carousel"] as? String? ?? "false" | 160 | self.carousel = extra_fields["carousel"] as? String? ?? "false" |
154 | self.category_title = extra_fields["category_title"] as? String ?? "" | 161 | self.category_title = extra_fields["category_title"] as? String ?? "" |
155 | - self.banner_img = extra_fields["Banner_img"] as? String ?? "" | 162 | + self.banner_img = cleanEscapedUrl(extra_fields["Banner_img"] as? String ?? "") |
156 | self.banner_title = extra_fields["Banner_title"] as? String ?? "" | 163 | self.banner_title = extra_fields["Banner_title"] as? String ?? "" |
157 | self.category_id = extra_fields["category_id"] as? String ?? "" | 164 | self.category_id = extra_fields["category_id"] as? String ?? "" |
158 | self.filter = extra_fields["filter"] as? String ?? "" | 165 | self.filter = extra_fields["filter"] as? String ?? "" |
159 | self.show_expiration = extra_fields["show_expiration"] as? String? ?? "false" | 166 | self.show_expiration = extra_fields["show_expiration"] as? String? ?? "false" |
160 | - self.coupon_img = extra_fields["coupon_img"] as? String? ?? "" | 167 | + self.coupon_img = cleanEscapedUrl(extra_fields["coupon_img"] as? String? ?? "") |
161 | 168 | ||
162 | - // Parse new extra_fields | 169 | + // Parse new extra_fields with URL cleaning |
163 | - self.campaign_url = extra_fields["campaign_url"] as? String? ?? "" | 170 | + self.campaign_url = cleanEscapedUrl(extra_fields["campaign_url"] as? String? ?? "") |
164 | - self.banner_img_mobile = extra_fields["banner_img_mobile"] as? String? ?? "" | 171 | + self.banner_img_mobile = cleanEscapedUrl(extra_fields["banner_img_mobile"] as? String? ?? "") |
165 | } else { | 172 | } else { |
166 | self.subcategory = "" | 173 | self.subcategory = "" |
167 | self.loyaltyCampaignId = "" | 174 | self.loyaltyCampaignId = "" | ... | ... |
-
Please register or login to post a comment