Files
chromebrew/lib/gem_compact_index_client.rb
SupeChicken666 8cfa64a3da crew: Fix more SSL errors (#11861)
* crew: Fix more SSL errors

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Also include URL query params in request

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* [skip ci] rubocop: Disable Layout/SpaceAroundMethodCallOperator

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

* Revert "[skip ci] rubocop: Disable Layout/SpaceAroundMethodCallOperator"

This reverts commit 8f238860b7.

* Pass block as lambda

Signed-off-by: SupeChicken666 <me@supechicken666.dev>

---------

Signed-off-by: SupeChicken666 <me@supechicken666.dev>
2025-05-01 15:42:29 +00:00

37 lines
934 B
Ruby

require 'uri'
require_relative 'downloader'
# Adapted from https://github.com/rubygems/rubygems/issues/8012#issuecomment-2375499571
# by @duckinator (Ellen Marie Dash)
# A very bare-bones client for the Compact Index API
# https://guides.rubygems.org/rubygems-org-compact-index-api/
class BasicCompactIndexClient
def initialize(gem_server = 'https://rubygems.org/')
@gem_server = gem_server
end
# Returns a list of all gems on the specified gem server.
def gems
lines(request('/versions'))
end
private
def request(endpoint)
uri = URI.join(@gem_server, endpoint)
response = get_http_response(uri)
raise "got HTTP code #{response.code}, expected 200" unless response.is_a?(Net::HTTPOK)
return response.body
end
def lines(data)
return [] if data.nil? || data.empty?
lines = data.split("\n")
header = lines.index('---')
header ? lines[header + 1..] : lines
end
end