#import "StoveSDKNativeCallbackPayload.h"
#import "StoveSDKNativeInterface.h"

@interface StoveSDKNativeCallbackPayload()

@property (nonatomic, copy) NSString *identifier;
@property (nonatomic, copy) NSDictionary *value;

@end

@implementation StoveSDKNativeCallbackPayload

+ (instancetype)payloadWithIdentifier:(NSString *)identifier value:(NSDictionary *)value {
    return [[self alloc] initWithIdentifier:identifier value:value];
}

- (instancetype)initWithIdentifier:(NSString *)identifier value:(NSDictionary *)value {
    self = [super init];
    if (self) {
        _identifier = identifier;
        _value = value;
    }
    return self;
}

- (NSString *)payloadJSON {
    if (!self.identifier || !self.value) {
        NSLog(@"[STOVESDK] Either `identifier` and `value` is nil. Check response value to make sure a valid result.");
        return nil;
    }

    NSDictionary *dic = @{@"identifier": self.identifier, @"value": self.value};
    NSData *data = [NSJSONSerialization dataWithJSONObject:dic options:kNilOptions error:nil];
    if (!data) { return nil; }

    return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
}

- (void)sendMessage {
    stove_sdk_UnitySendMessage("StoveSDK", "CallMessage", [self payloadJSON]);
}
@end
