Newer
Older
app-47-android / Assets / FacebookSDK / SDK / Editor / iOS / Swift / FBSDKTournament.swift
@a_kuznecov a_kuznecov on 22 Jun 2023 2 KB First Commit
/**
 * Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
 *
 * You are hereby granted a non-exclusive, worldwide, royalty-free license to use,
 * copy, modify, and distribute this software in source code or binary form for use
 * in connection with the web services and APIs provided by Facebook.
 *
 * As with any software that integrates with the Facebook platform, your use of
 * this software is subject to the Facebook Developer Principles and Policies
 * [http://developers.facebook.com/policy/]. This copyright notice shall be
 * included in all copies or substantial portions of the software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

import FBSDKGamingServicesKit
import Foundation


/// An internal representation of tournament graph objects.
@objcMembers
public final class FBSDKTournament: NSObject {

    /// The unique ID that is associated with this tournament.
    public internal(set) var identifier: String

    /**
     Timestamp when the tournament ends.
     If the expiration is in the past, then the tournament is already finished and has expired.
     */
    public internal(set) var endTime: Date?

    /// Title of the tournament provided upon the creation of the tournament.
    public internal(set) var title: String?

    /// Payload of the tournament provided upon the creation of the tournament.
    public var payload: String?

    public convenience init(tournament: Tournament) {
        self.init(
            identifier: tournament.identifier,
            endTime: tournament.endTime,
            title: tournament.title,
            payload: tournament.payload
        )
    }

    public var toDictionary: [String: String] {
        var dictionary = ["tournament_id": identifier]
        if let endTime = endTime {
            dictionary["end_time"] = "\(endTime.timeIntervalSince1970)"
        }
        dictionary["tournament_title"] = title
        dictionary["payload"] = payload
        return dictionary
    }

    public init(
        identifier: String,
        endTime: Date? = nil,
        title: String? = nil,
        payload: String? = nil
    ) {
        self.identifier = identifier
        self.endTime = endTime
        self.title = title
        self.payload = payload
    }
}