package Distribution::Service;

use strict;

my $distribution_modules = {
    5 => {
        packager => "Distribution::Packager::eMusic",
        delivery => "Distribution::Delivery::eMusic"
    },

    6 => {
        packager => "Distribution::Packager::Liquid",
        delivery => "Distribution::Delivery::Liquid"
    },

    8 => {
        packager => "Distribution::Packager::Rhapsody",    ## Real == Rhapsody
        delivery => "Distribution::Delivery::Rhapsody"
    },

    10 => {
        packager => "Distribution::Packager::Napster",
        delivery => "Distribution::Delivery::Napster"
    },

    11 => {
        packager => "Distribution::Packager::iTunes",
        delivery => "Distribution::Delivery::iTunes"
    },

    13 => {
        packager => "Distribution::Packager::MediaNet",
        delivery => "Distribution::Delivery::MediaNet"
    },

    41 => {
        packager => "Distribution::Packager::PassAlong",
        delivery => "Distribution::Delivery::PassAlong"
    },

    60 => {
        packager => "Distribution::Packager::Puretracks",
        delivery => "Distribution::Delivery::Puretracks"
    },

    94 => {
        packager => "Distribution::Packager::Beatport",
        delivery => "Distribution::Delivery::Beatport"
    },

    182 => {
        packager => "Distribution::Packager::Snocap",
        delivery => "Distribution::Delivery::Snocap"
    },

    215 => {
        packager => "Distribution::Packager::Nokia",    ## aka OD2
        delivery => "Distribution::Delivery::Nokia"
    },

    219 => {
        packager => "Distribution::Packager::AmieStreet",
        delivery => "Distribution::Delivery::AmieStreet"
    },

    221 => {
        packager => "Distribution::Packager::Musiwave",
        delivery => "Distribution::Delivery::Musiwave"
    },

    245 => {
        packager => "Distribution::Packager::Juno",
        delivery => "Distribution::Delivery::Juno"
    },

    262 => {
        packager => "Distribution::Packager::Amazon",
        delivery => "Distribution::Delivery::Amazon"
    },

    272 => {
        packager => "Distribution::Packager::TrackItDown",
        delivery => "Distribution::Delivery::TrackItDown"
    },

    273 => {
        packager => "Distribution::Packager::Vidzone",
        delivery => "Distribution::Delivery::Vidzone"
    },

    274 => {
        packager => "Distribution::Packager::DJDownload",
        delivery => "Distribution::Delivery::DJDownload"
    },

    281 => {
        packager => "Distribution::Packager::7Digital",
        delivery => "Distribution::Delivery::7Digital"
    },

    289 => {
        packager => "Distribution::Packager::247Entertainment",
        delivery => "Distribution::Delivery::247Entertainment"
    },

    321 => {
        packager => "Distribution::Packager::SpiralFrog",
        delivery => "Distribution::Delivery::SpiralFrog"
    },

    342 => {
        packager => "Distribution::Packager::Traxsource",
        delivery => "Distribution::Delivery::Traxsource"
    },

    346 => {
        packager => "Distribution::Packager::Beatsource",
        delivery => "Distribution::Delivery::Beatsource"
    },

    347 => {
        packager => "Distribution::Packager::CreateSpace",
        delivery => "Distribution::Delivery::CreateSpace"
    },

    351 => {
        packager => "Distribution::Packager::LaLa",
        delivery => "Distribution::Delivery::LaLa"
    },

    352 => {
        packager => "Distribution::Packager::XpressBeats",
        delivery => "Distribution::Delivery::XpressBeats"
    },

    353 => {
        packager => "Distribution::Packager::ShockHound",
        delivery => "Distribution::Delivery::ShockHound"
    },

    386 => {
        packager => "Distribution::Packager::Livewire",
        delivery => "Distribution::Delivery::Livewire"
    },

    389 => {
        packager => "Distribution::Packager::Myspace",
        delivery => "Distribution::Delivery::Myspace"
    },

    399 => {
        packager => "Distribution::Packager::Fuga",
        delivery => "Distribution::Delivery::Fuga"
    },
};

sub get_packager {
    my $service_id = shift;

    die "unknown packager for '$service_id'\n" unless ( exists $distribution_modules->{$service_id}->{packager} );
    return $distribution_modules->{$service_id}->{packager};
}

sub get_delivery {
    my $service_id = shift;

    die "unknown delivery for '$service_id'\n" unless ( exists $distribution_modules->{$service_id}->{delivery} );
    return $distribution_modules->{$service_id}->{delivery};
}

1;
