Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save spicyjack/6361842 to your computer and use it in GitHub Desktop.
Save spicyjack/6361842 to your computer and use it in GitHub Desktop.
Patch to Net::Jenkins to get the Jenkins server version after an API request
diff --git a/lib/Net/Jenkins.pm b/lib/Net/Jenkins.pm
index 5126b1b..c8b9eeb 100644
--- a/lib/Net/Jenkins.pm
+++ b/lib/Net/Jenkins.pm
@@ -36,25 +36,41 @@ has user_agent => (
default => sub { return LWP::UserAgent->new; },
);
+has jenkins_version => (
+ is => 'rw',
+ isa => 'Str',
+);
+
method get_base_url {
return $self->scheme . '://' . $self->host . ':' . $self->port;
}
+method update_jenkins_version ($response) {
+ $self->jenkins_version( $response->header(q(X-Jenkins)) );
+ return $self->jenkins_version;
+}
+
method post_url ($uri,%args) {
- return $self->user_agent->post( $uri , \%args );
+ my $response = $self->user_agent->post( $uri , \%args );
+ $self->update_jenkins_version($response);
+ return $response;
}
method get_url ($uri) {
- return $self->user_agent->get($uri);
+ my $response = $self->user_agent->get($uri);
+ $self->update_jenkins_version($response);
+ return $response;
}
method get_json ( $uri ) {
my $response = $self->user_agent->get($uri);
+ $self->update_jenkins_version($response);
return decode_json $response->decoded_content if $response->is_success;
}
method summary {
my $uri = $self->get_base_url . '/api/json';
+ # $self->get_json already sets $self->jenkins_version
return $self->get_json( $uri );
}
diff --git a/t/01_utils.t b/t/01_utils.t
index df3675b..6281e71 100644
--- a/t/01_utils.t
+++ b/t/01_utils.t
@@ -5,6 +5,8 @@ use Net::Jenkins::Utils qw(build_job_object build_api_object build_build_object)
my $api = build_api_object 'http://ci.jruby.org/job/jruby-git';
ok $api;
+ok $api->summary;
+ok $api->jenkins_version;
my $job = build_job_object 'http://ci.jruby.org/job/jruby-git';
ok $job;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment