package Net::Fastly::Settings;

use strict;
use base qw(Net::Fastly::Model);

Net::Fastly::Settings->mk_accessors(qw(service_id version));

=head1 NAME

Net::Fastly::Invoice - - a representation of a Fastly monthly invoice

=head1 ACCESSORS

=head2 service_id

The id of the service these settings are for

=head2 version

The version number these settings for

=head2 settings

A hash ref of all the individual settings

=cut

sub _get_path {
    my $class   = shift;
    my $service = shift;
    my $number  = shift;
    return "/service/$service/version/$number/settings";
}

sub _put_path {
    my $class = shift;
    my $obj   = shift;
    return $class->_get_path($obj->service_id, $obj->version);
}

sub settings {
    my $self = shift;
    $self->{_settings} = { map { $_ => $self->{$_} } grep !/^(_|service_id$|version$)/, keys %$self } unless $self->{_settings};
    return $self->{_settings};
}

sub _as_hash {
    my $self     = shift;
    my $settings = $self->settings;
    return %$settings;
}

sub _skip_list   { 1 }
sub _post_path   { die "You can't POST to settings"   }
sub _delete_path { die "You can't DELETE to settings" }

=head2 delete

Delete this object. Equivalent to

   $fastly->delete_<class>($object);

=cut
sub delete       { die "You can't delete an invoice" }

package Net::Fastly;

sub get_settings {
    my $self  = shift;
    my $class = "Net::Fastly::Settings"; 
    $self->_get($class, @_);
}

sub update_settings {
    my $self  = shift;
    my $class = "Net::Fastly::Settings"; 
    $self->_update($class, @_);
}
1;