summaryrefslogtreecommitdiff
path: root/lib/Travelynx
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Travelynx')
-rw-r--r--lib/Travelynx/Helper/DBDB.pm46
-rw-r--r--lib/Travelynx/Helper/DBRIS.pm33
2 files changed, 68 insertions, 11 deletions
diff --git a/lib/Travelynx/Helper/DBDB.pm b/lib/Travelynx/Helper/DBDB.pm
index a310aa3..09d612e 100644
--- a/lib/Travelynx/Helper/DBDB.pm
+++ b/lib/Travelynx/Helper/DBDB.pm
@@ -61,9 +61,22 @@ sub has_wagonorder_p {
}
}
- $self->{user_agent}->request_timeout(5)
- ->get_p( $url => $self->{header} )
- ->then(
+ my $agent = $self->{user_agent};
+ my $proxy;
+ if ( my @proxies = @{ $self->{dbris_config}{'bahn.de'}{proxies} // [] } ) {
+ $proxy = $proxies[ int( rand( scalar @proxies ) ) ];
+ }
+ elsif ( my $p = $self->{dbris_config}{'bahn.de'}{proxy} ) {
+ $proxy = $p;
+ }
+
+ if ($proxy) {
+ $agent = Mojo::UserAgent->new;
+ $agent->proxy->http($proxy);
+ $agent->proxy->https($proxy);
+ }
+
+ $agent->request_timeout(5)->get_p( $url => $self->{header} )->then(
sub {
my ($tx) = @_;
if ( $tx->result->is_success ) {
@@ -82,7 +95,7 @@ sub has_wagonorder_p {
}
return;
}
- )->catch(
+ )->catch(
sub {
my ($err) = @_;
$self->{log}->debug("${debug_prefix}: n ($err)");
@@ -90,7 +103,7 @@ sub has_wagonorder_p {
$promise->reject;
return;
}
- )->wait;
+ )->wait;
return $promise;
}
@@ -121,9 +134,22 @@ sub get_wagonorder_p {
return $promise;
}
- $self->{user_agent}->request_timeout(5)
- ->get_p( $url => $self->{header} )
- ->then(
+ my $agent = $self->{user_agent};
+ my $proxy;
+ if ( my @proxies = @{ $self->{dbris_config}{'bahn.de'}{proxies} // [] } ) {
+ $proxy = $proxies[ int( rand( scalar @proxies ) ) ];
+ }
+ elsif ( my $p = $self->{dbris_config}{'bahn.de'}{proxy} ) {
+ $proxy = $p;
+ }
+
+ if ($proxy) {
+ $agent = Mojo::UserAgent->new;
+ $agent->proxy->http($proxy);
+ $agent->proxy->https($proxy);
+ }
+
+ $agent->request_timeout(5)->get_p( $url => $self->{header} )->then(
sub {
my ($tx) = @_;
@@ -141,14 +167,14 @@ sub get_wagonorder_p {
}
return;
}
- )->catch(
+ )->catch(
sub {
my ($err) = @_;
$self->{log}->debug("${debug_prefix}: error ${err}");
$promise->reject($err);
return;
}
- )->wait;
+ )->wait;
return $promise;
}
diff --git a/lib/Travelynx/Helper/DBRIS.pm b/lib/Travelynx/Helper/DBRIS.pm
index 1b7f099..e8ef45b 100644
--- a/lib/Travelynx/Helper/DBRIS.pm
+++ b/lib/Travelynx/Helper/DBRIS.pm
@@ -31,6 +31,23 @@ sub new {
sub get_station_id_p {
my ( $self, $station_name ) = @_;
+
+ my $agent = $self->{user_agent};
+ my $proxy;
+ if ( my @proxies = @{ $self->{service_config}{'bahn.de'}{proxies} // [] } )
+ {
+ $proxy = $proxies[ int( rand( scalar @proxies ) ) ];
+ }
+ elsif ( my $p = $self->{service_config}{'bahn.de'}{proxy} ) {
+ $proxy = $p;
+ }
+
+ if ($proxy) {
+ $agent = Mojo::UserAgent->new;
+ $agent->proxy->http($proxy);
+ $agent->proxy->https($proxy);
+ }
+
my $promise = Mojo::Promise->new;
Travel::Status::DE::DBRIS->new_p(
locationSearch => $station_name,
@@ -40,7 +57,7 @@ sub get_station_id_p {
agent => $self->{header}{'User-Agent'},
},
promise => 'Mojo::Promise',
- user_agent => Mojo::UserAgent->new,
+ user_agent => $agent,
)->then(
sub {
my ($dbris) = @_;
@@ -68,6 +85,20 @@ sub get_departures_p {
my ( $self, %opt ) = @_;
my $agent = $self->{user_agent};
+ my $proxy;
+ if ( my @proxies = @{ $self->{service_config}{'bahn.de'}{proxies} // [] } )
+ {
+ $proxy = $proxies[ int( rand( scalar @proxies ) ) ];
+ }
+ elsif ( my $p = $self->{service_config}{'bahn.de'}{proxy} ) {
+ $proxy = $p;
+ }
+
+ if ($proxy) {
+ $agent = Mojo::UserAgent->new;
+ $agent->proxy->http($proxy);
+ $agent->proxy->https($proxy);
+ }
if ( $opt{station} =~ m{ [@] L = (?<eva> \d+ ) }x ) {
$opt{station} = {