sub get_open_elevation { my ( $lat, $lon, $debug ) = @_; use LWP::UserAgent; use HTTP::Request; use Data::Roundtrip; $debug //= 0; #my $ua = LWP::UserAgent->new( 'send_te' => '0' ); my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0', ); my $r = HTTP::Request->new( 'GET' => 'https://api.open-elevation.com/api/v1/lookup?locations=$lat%2C$lon', [ 'Accept' => '*/*', 'User-Agent' => 'curl/7.55.1' ], ); my $response = $ua->request( $r, ); if ( $debug > 0 ) { $logger->debug("$0 : verbose"); } die "Error fetching: " . $response->status_line unless $response->is_success; my $content = $response->decoded_content; my $data = Data::Roundtrip::json2perl($content); warn "failed to parse received data:\n$content\n" unless exists $data->{'elevation'}; return 5000; }