$self->{url};
}
-sub class {
+sub transport_class {
my $self = shift;
- $self->{class};
+ $self->{transport_class};
}
sub transport {
my $self = shift;
$self->{transport} //= do {
- my $class = $self->_transport_class;
+ my $class = $self->_autodetermine_transport_class;
eval { load $class };
if ((my $err = $@) || !$class->can('execute')) {
$err ||= "Loaded $class, but it doesn't look like a proper transport.\n";
return $protocol;
}
-sub _transport_class {
+sub _autodetermine_transport_class {
my $self = shift;
- return _expand_class($self->{class}) if $self->{class};
+ my $class = $self->transport_class;
+ return _expand_class($class) if $class;
my $protocol = $self->_url_protocol;
_croak 'Failed to determine transport from URL' if !$protocol;
- my $class = lc($protocol);
+ $class = lc($protocol);
$class =~ s/[^a-z]/_/g;
return _expand_class($class);
The URL of a GraphQL endpoint, e.g. C<"http://myapiserver/graphql">.
-=attr class
+=attr unpack
-The package name of a transport.
+Whether or not to "unpack" the response, which enables a different style for error-handling.
-By default this is automatically determined from the protocol portion of the L</url>.
+Default is 0.
-=attr transport
+See L</ERROR HANDLING>.
-The transport object.
+=attr transport_class
-By default this is automatically constructed based on the L</class>.
+The package name of a transport.
-=attr unpack
+This is optional if the correct transport can be correctly determined from the L</url>.
-Whether or not to "unpack" the response, which enables a different style for error-handling.
+=attr transport
-Default is 0.
+The transport object.
-See L</ERROR HANDLING>.
+By default this is automatically constructed based on L</transport_class> or L</url>.
=head1 ERROR HANDLING
use MockTransport;
subtest 'transport' => sub {
- my $client = GraphQL::Client->new(class => 'http');
- isa_ok($client->transport, 'GraphQL::Client::http', 'decide transport from class');
+ my $client = GraphQL::Client->new(transport_class => 'http');
+ isa_ok($client->transport, 'GraphQL::Client::http', 'decide transport from transport_class');
$client = GraphQL::Client->new(url => 'https://localhost:4000/graphql');
isa_ok($client->transport, 'GraphQL::Client::http', 'decide transport from url');
- $client = GraphQL::Client->new(class => 'not a real class');
- is($client->class, 'not a real class', 'class constructor works');
+ $client = GraphQL::Client->new(transport_class => 'not a real class');
+ is($client->transport_class, 'not a real class', 'transport_class constructor works');
throws_ok { $client->transport } qr/^Failed to load transport/, 'throws if invalid transport';
};