//
//  BlazeRTNEnableCustomNativeAdsOptions.swift
//  blaze-rtn-gam-ads
//
//  Created by Reuven Levitsky on 24/04/2024.
//

import Foundation
import BlazeGAM

struct BlazeRTNEnableCustomNativeAdsOptions: Codable {
    
    let defaultAdConfig: BlazeRTNDefaultAdConfig?
    
    struct BlazeRTNDefaultAdConfig: Codable {
        
        let adUnit: String
        let templateId: String
        
    }
    
}

extension BlazeRTNEnableCustomNativeAdsOptions.BlazeRTNDefaultAdConfig {
    
    var toNativeModel: BlazeGAMCustomNativeAdsDefaultConfig {
        .init(adUnit: adUnit,
              templateId: templateId)
    }
    
}

extension [String : AnyHashable] {
    
    func extractEnableCustomNativeAdsOptions() -> BlazeRTNEnableCustomNativeAdsOptions? {
        var result: BlazeRTNEnableCustomNativeAdsOptions?
        
        do {
            let jsonData = try JSONSerialization.data(withJSONObject: self, options: [])
            result = try JSONDecoder().decode(BlazeRTNEnableCustomNativeAdsOptions.self, from: jsonData)
        } catch {
            print("Error decoding JSON: \(error)")
        }
        
        return result
    }
    
}
