NAME HealthCheck::Diagnostic::WebRequest - Make HTTP/HTTPS requests to web servers to check connectivity VERSION version v1.4.2 SYNOPSIS # site: https://foo.com # content: This is my content use HealthCheck::Diagnostic::WebRequest; # Look for a 200 status code and pass. my $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', ); my $result = $diagnostic->check; print $result->{status}; # OK # Look for a 401 status code and fail. $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', status_code => 401, ); $result = $diagnostic->check; print $result->{status}; # CRITICAL # Look for any status code less than 500. $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', status_code => '<500', ); $result = $diagnostic->check; print $result->{status}; # CRITICAL # Look for any 403, 405, or any 2xx range code $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', status_code => '403, 405, >=200, <300', ); $result = $diagnostic->check; print $result->{status}; # CRITICAL # Look for a 200 status code and content matching the string regex. $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', content_regex => 'is my', ); $result = $diagnostic->check; print $result->{status}; # OK # Use a regex as the content_regex. $diagnostic = HealthCheck::Diagnostic::WebRequest->new( url => 'https://foo.com', content_regex => qr/is my/, ); $result = $diagnostic->check; print $result->{status}; # OK # POST Method: Look for a 200 status code and content matching the string. my $data = { foo => 'tell me something', }; my $encoded_data = encode_utf8(encode_json($data)); my $header = [ 'Content-Type' => 'application/json; charset=UTF-8' ]; my $url = 'https://dev.payment-express.net/dev/env_test'; my $request = HTTP::Request->new('POST', $url, $header, $encoded_data); $diagnostic = HealthCheck::Diagnostic::WebRequest->new( request => $request, status_code => 200, content_regex => "tell me something", ); $result = $diagnostic->check; print $result->{status}; # OK DESCRIPTION Determines if a web request to a url or request is achievable. Also has the ability to check if the HTTP response contains the right content, specified by content_regex. Sets the status to "OK" or "CRITICAL" based on the success of the checks. ATTRIBUTES url The site that is checked during the HealthCheck. It can be any HTTP/S link. By default, it will send GET requests. Use "request" if you want a more complicated HTTP request. Either this option or "request" are required, and are mutually exclusive. request Allows passing in HTTP::Request object in order to use other HTTP request methods and form data during the HealthCheck. Either this option or "url" are required, and are mutually exclusive. status_code The expected HTTP response status code, or a string of status code conditions. Conditions are comma-delimited, and can optionally have an operator prefix. Any condition without a prefix goes into an OR set, while the prefixed ones go into an AND set. As such, == is not allowed as a prefix, because it's less confusing to not use a prefix here, and more than one condition while a == condition exists would not make sense. Some examples: !500 # Anything besides 500 200, 202 # 200 or 202 200, >=300, <400 # 200 or any 3xx code <400, 405, !202 # Any code below 400 except 202, or 405, # ie: (<400 && !202) || 405 The default value for this is '200', which means that we expect a successful request. content_regex The content regex to test for in the HTTP response. This is an optional field and is only checked if the status code check passes. This can either be a string or a regex. no_follow_redirects Setting this variable prevents the healthcheck from following redirects. options See LWP::UserAgent for available options. Takes a hash reference of key/value pairs in order to configure things like ssl_opts, timeout, etc. It is optional. By default provides a custom agent string and a default timeout of 7. DEPENDENCIES HealthCheck::Diagnostic LWP::UserAgent CONFIGURATION AND ENVIRONMENT None AUTHOR Grant Street Group COPYRIGHT AND LICENSE This software is Copyright (c) 2018 - 2021 by Grant Street Group. This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)