#import "TGEmbedSoundCloudPlayerView.h"

@implementation TGEmbedSoundCloudPlayerView

- (NSURL *)_embedURL
{
    NSString *trackId = [TGEmbedSoundCloudPlayerView _soundCloudIdFromText:_webPage.embedUrl];
    
    NSString *url = [NSString stringWithFormat:@"https://w.soundcloud.com/player/?url=https%%3A%%2F%%2Fapi.soundcloud.com%%2Ftracks%%2F%@&auto_play=true&show_artwork=true&visual=true&liking=false&download=false&sharing=false&buying=false&hide_related=true&show_comments=false&show_user=true&show_reposts=false", trackId];
    return [NSURL URLWithString:url];
}

+ (NSString *)_soundCloudIdFromText:(NSString *)text
{
    NSMutableArray *prefixes = [NSMutableArray arrayWithArray:@
    [
        @"http://w.soundcloud.com/player/?url=",
        @"https://w.soundcloud.com/player/?url="
    ]];
    
    NSString *prefix = nil;
    for (NSString *p in prefixes)
    {
        if ([text hasPrefix:p])
        {
            prefix = p;
            break;
        }
    }
    
    if (prefix == nil)
        return nil;
    
    NSString *suffix = [[text substringFromIndex:prefix.length] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSArray *components = [suffix componentsSeparatedByString:@"&"];
    if (components.count < 2)
        return nil;
    
    
    NSString *url = components.firstObject;
    components = [url componentsSeparatedByString:@"/"];
    
    if (components.count < 1)
        return nil;
    
    NSString *identifier = components.lastObject;
    
    for (int i = 0; i < (int)identifier.length; i++)
    {
        unichar c = [identifier characterAtIndex:i];
        if (!(c >= '0' && c <= '9'))
            return nil;
    }
    
    return identifier;
}

+ (bool)_supportsWebPage:(TGWebPageMediaAttachment *)webPage
{
    NSString *url = webPage.embedUrl;
    return ([url hasPrefix:@"http://w.soundcloud.com/player/"] || [url hasPrefix:@"https://w.soundcloud.com/player/"]);
}

@end