package    # mask from CPAN?
  Fake::Ohloh;

use strict;
use warnings;

use Object::InsideOut;
use base qw/ WWW::Ohloh::API /;
use Carp;

use XML::LibXML;
use WWW::Ohloh::API;

my @results_of : Field;
my @parser_of : Field;

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub parser {
    my $self = shift;
    return $parser_of[$$self] ||= XML::LibXML->new;
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub stash {
    my $self = shift;
    my ( $url, $xml ) = @_;

    my $dom =
      -f 't/samples/' . $xml
      ? $self->parser->parse_file( 't/samples/' . $xml )
      : $self->parser->parse_string($xml);

    push @{ $results_of[$$self] }, [ $url, $dom->findnodes('//result[1]') ];

    return $self;
}

#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

sub _query_server {
    my $self  = shift;
    my $stash = shift @{ $results_of[$$self] }
      or croak "no more results stashed";
    return @$stash;
}

'end of FakeOhloh';