improved_jenkins_client 1.6.2 → 1.6.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 26e682d2f9c008a0943a3ff4d76fdc5a9ea614135eef5ed6f8dfc20c692c1c3d
4
- data.tar.gz: 4ee3bc91c1cc3e7c86601012de333e79fde95b73e4b828a7c2e899dd28abd3c1
3
+ metadata.gz: f381907a06146eab9fc814b98a7233a8981a570e2f5f812936f22d5d745844f5
4
+ data.tar.gz: 8f2011c9223b397e8d3045d259f715f3e346fa4bad1f24d778cb743699781a92
5
5
  SHA512:
6
- metadata.gz: 2c2c4e95a00b51edd873288112253bcba265475e7dcb50466d0f6d5629850adefb1c9b9ce983cbb4f2ad3b5160a7f1be22827fcf12b4fccb105e060bdd0e3651
7
- data.tar.gz: 9053180465db13e212f82b6889a0c9012f52f28dba300b7eb06eae362728120ffd5e43251bd5909bc0633664e7a34286c69b7d88264a3f75807fab9a1e2dc33f
6
+ metadata.gz: f9df1bcd1a5b4e9db2ac14074f20d36082d60ce9f7f3132b896df69ca79a8fce2fe3649d0bcc62284480c754ad9db72135fb88523b29f5be1678b43eb14a4527
7
+ data.tar.gz: 647de6de4983fc9138dcbe815f37d2c8f7dcc0cfa879d16edf3ee6c0f1296d4dbf0621a9d75b18693674e7571fe238ee170f40ba3074813479ec2cf6decc30bd
@@ -72,7 +72,8 @@ module JenkinsApi
72
72
  "ca_file",
73
73
  "follow_redirects",
74
74
  "identity_file",
75
- "cookies"
75
+ "cookies",
76
+ "pretty_json_responses"
76
77
  ].freeze
77
78
 
78
79
  # Initialize a Client object with Jenkins CI server credentials
@@ -106,6 +107,7 @@ module JenkinsApi
106
107
  # @option args [Fixnum] :log_level (Logger::INFO) The level for messages to be logged. Should be one of:
107
108
  # Logger::DEBUG (0), Logger::INFO (1), Logger::WARN (2), Logger::ERROR (2), Logger::FATAL (3)
108
109
  # @option args [String] :cookies Cookies to be sent with all requests in the format: name=value; name2=value2
110
+ # @option args [Boolean] :pretty_json_responses Whether to append pretty=true to most JSON GET requests.
109
111
  #
110
112
  # @return [JenkinsApi::Client] a client object to Jenkins API
111
113
  #
@@ -415,18 +417,26 @@ module JenkinsApi
415
417
  raw_response = false)
416
418
  url_prefix = "#{@jenkins_path}#{url_prefix}"
417
419
  to_get = ""
420
+
421
+
418
422
  if tree
419
423
  to_get = "#{url_prefix}#{url_suffix}?#{tree}"
424
+ query_param_separator = "&"
420
425
  else
421
426
  to_get = "#{url_prefix}#{url_suffix}"
427
+ query_param_separator = "?"
428
+ end
429
+ if @pretty_json_responses && url_suffix == "/api/json"
430
+ to_get += query_param_separator
431
+ to_get += "pretty=true"
422
432
  end
423
433
  request = Net::HTTP::Get.new(to_get)
424
434
  @logger.debug "GET #{to_get}"
425
435
  response = make_http_request(request)
426
436
  if raw_response
427
- handle_exception(response, "raw")
437
+ handle_exception(response, "raw", full_url: to_get)
428
438
  else
429
- handle_exception(response, "body", url_suffix =~ /json/)
439
+ handle_exception(response, "body", url_suffix =~ /json/, full_url: to_get)
430
440
  end
431
441
  end
432
442
 
@@ -797,10 +807,20 @@ module JenkinsApi
797
807
  # @raise [Exceptions::ApiException] Any other exception returned from
798
808
  # Jenkins that are not categorized in the API Client.
799
809
  #
800
- def handle_exception(response, to_send = "code", send_json = false)
801
- msg = "HTTP Code: #{response.code}, Response Body: #{response.body}"
802
- @logger.debug msg
803
- case response.code.to_i
810
+ def handle_exception(response, to_send = "code", send_json = false, full_url: nil)
811
+ msg = "HTTP Code: #{response.code} "
812
+
813
+ msg += ", URL: #{full_url}" unless full_url.nil?
814
+
815
+ if @logger.level <= Logger::DEBUG
816
+ @logger.debug "#{msg}; Response Body: #{response.body}"
817
+ end
818
+ response_code = response.code.to_i
819
+ if response_code >= 400
820
+ @logger.warn msg
821
+ end
822
+
823
+ case response_code
804
824
  # As of Jenkins version 1.519, the job builds return a 201 status code
805
825
  # with a Location HTTP header with the pointing the URL of the item in
806
826
  # the queue.
@@ -817,7 +837,7 @@ module JenkinsApi
817
837
  when 400
818
838
  matched = response.body.match(/<p>(.*)<\/p>/)
819
839
  api_message = matched[1] unless matched.nil?
820
- @logger.debug "API message: #{api_message}"
840
+ @logger.warn "API message: #{api_message}"
821
841
  case api_message
822
842
  when /A job already exists with the name/
823
843
  raise Exceptions::JobAlreadyExists.new(@logger, api_message)
@@ -839,7 +859,7 @@ module JenkinsApi
839
859
  when 500
840
860
  matched = response.body.match(/Exception: (.*)<br>/)
841
861
  api_message = matched[1] unless matched.nil?
842
- @logger.debug "API message: #{api_message}"
862
+ @logger.warn "API message: #{api_message}"
843
863
  raise Exceptions::InternalServerError.new(@logger, api_message)
844
864
  when 503
845
865
  raise Exceptions::ServiceUnavailable.new @logger
@@ -723,10 +723,10 @@ module JenkinsApi
723
723
  # @param [String] job_name
724
724
  #
725
725
  def get_builds(job_name, options = {})
726
- @logger.info "Obtaining the build details of '#{job_name}'"
726
+ @logger.info "Obtaining the builds of job '#{job_name}'"
727
727
  url = "/job/#{path_encode job_name}"
728
728
 
729
- tree = options[:tree] || nil
729
+ tree = options[:tree]
730
730
  response_json = @client.api_get_request url, tree_string(tree)
731
731
  response_json["builds"]
732
732
  end
@@ -1193,13 +1193,14 @@ module JenkinsApi
1193
1193
  #
1194
1194
  # @param [String] job_name
1195
1195
  # @param [Number] build_num
1196
+ # @param [String] tree
1196
1197
  #
1197
- def get_build_details(job_name, build_num)
1198
+ def get_build_details(job_name, build_num, tree: nil)
1198
1199
  build_num = get_current_build_number(job_name) if build_num == 0
1199
- @logger.info "Obtaining the build details of '#{job_name}'" +
1200
- " Build ##{build_num}"
1200
+ log_msg = "Obtaining the build details of '#{job_name}' Build ##{build_num}"
1201
+ log_msg += " (with tree=...)" unless tree.nil?
1201
1202
 
1202
- @client.api_get_request("/job/#{path_encode job_name}/#{build_num}/")
1203
+ @client.api_get_request("/job/#{path_encode job_name}/#{build_num}/", tree_string(tree))
1203
1204
  end
1204
1205
 
1205
1206
  # Change the description of a specific job
@@ -27,7 +27,7 @@ module JenkinsApi
27
27
  # Minor version of the gem
28
28
  MINOR = 6
29
29
  # Tiny version of the gem used for patches
30
- TINY = 2
30
+ TINY = 6
31
31
  # Used for pre-releases
32
32
  PRE = nil
33
33
  # Version String of Jenkins API Client.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: improved_jenkins_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.2
4
+ version: 1.6.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kannan Manickam (the original jenkins_api_client gem)
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-10-22 00:00:00.000000000 Z
12
+ date: 2021-10-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: nokogiri
@@ -165,7 +165,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
167
  requirements: []
168
- rubygems_version: 3.1.4
168
+ rubyforge_project:
169
+ rubygems_version: 2.7.6.3
169
170
  signing_key:
170
171
  specification_version: 4
171
172
  summary: Improved Jenkins JSON API Client