Skip to content

Commit 9c5994b

Browse files
committed
chore: remove wrapper
1 parent 5193c43 commit 9c5994b

File tree

1 file changed

+29
-94
lines changed

1 file changed

+29
-94
lines changed

lib/lingodotdev.rb

Lines changed: 29 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ def initialize(api_key:, api_url: 'https://engine.lingo.dev', batch_size: 25, id
171171
batch_size: batch_size,
172172
ideal_batch_item_size: ideal_batch_item_size
173173
)
174-
@client = nil
175174
yield @config if block_given?
176175
@config.send(:validate!)
177176
end
@@ -456,13 +455,13 @@ def recognize_locale(text)
456455
raise ValidationError, 'Text cannot be empty' if text.nil? || text.strip.empty?
457456

458457
begin
459-
response = http_client.post(
458+
response = make_request(
460459
"#{config.api_url}/recognize",
461460
json: { text: text }
462461
)
463462

464463
handle_response(response)
465-
data = JSON.parse(response.body.to_s, symbolize_names: true)
464+
data = JSON.parse(response.body, symbolize_names: true)
466465
data[:locale] || ''
467466
rescue StandardError => e
468467
raise APIError, "Request failed: #{e.message}"
@@ -478,11 +477,12 @@ def recognize_locale(text)
478477
# # => { email: "user@example.com", id: "user-id" }
479478
def whoami
480479
begin
481-
response = http_client.post("#{config.api_url}/whoami")
480+
response = make_request("#{config.api_url}/whoami")
482481

483-
return nil unless response.status.success?
482+
status_code = response.code.to_i
483+
return nil unless status_code >= 200 && status_code < 300
484484

485-
data = JSON.parse(response.body.to_s, symbolize_names: true)
485+
data = JSON.parse(response.body, symbolize_names: true)
486486
return nil unless data[:email]
487487

488488
{ email: data[:email], id: data[:id] }
@@ -603,85 +603,19 @@ def self.quick_batch_translate(content, api_key:, target_locales:, source_locale
603603

604604
private
605605

606-
def http_client
607-
@client ||= NetHTTPAdapter.new(config.api_key)
608-
end
609-
610-
# Adapter class to use Net::HTTP instead of HTTP gem
611-
# This provides better control over SSL context and avoids CRL verification issues
612-
class NetHTTPAdapter
613-
def initialize(api_key)
614-
@api_key = api_key
615-
end
616-
617-
def post(url, json: nil)
618-
uri = URI(url)
619-
http = Net::HTTP.new(uri.host, uri.port)
620-
http.use_ssl = true
621-
http.read_timeout = 60
622-
http.open_timeout = 60
623-
624-
request = Net::HTTP::Post.new(uri.path)
625-
request['Authorization'] = "Bearer #{@api_key}"
626-
request['Content-Type'] = 'application/json; charset=utf-8'
627-
request.body = JSON.generate(json) if json
628-
629-
response = http.request(request)
630-
631-
# Wrap response to be compatible with HTTP gem interface
632-
ResponseWrapper.new(response)
633-
end
634-
end
635-
636-
# Wrapper to make Net::HTTP response compatible with HTTP gem interface
637-
class ResponseWrapper
638-
def initialize(response)
639-
@response = response
640-
end
641-
642-
def status
643-
StatusWrapper.new(@response.code.to_i)
644-
end
606+
def make_request(url, json: nil)
607+
uri = URI(url)
608+
http = Net::HTTP.new(uri.host, uri.port)
609+
http.use_ssl = true
610+
http.read_timeout = 60
611+
http.open_timeout = 60
645612

646-
def body
647-
BodyWrapper.new(@response.body)
648-
end
613+
request = Net::HTTP::Post.new(uri.path)
614+
request['Authorization'] = "Bearer #{config.api_key}"
615+
request['Content-Type'] = 'application/json; charset=utf-8'
616+
request.body = JSON.generate(json) if json
649617

650-
def reason
651-
@response.message
652-
end
653-
end
654-
655-
class StatusWrapper
656-
def initialize(code)
657-
@code = code
658-
end
659-
660-
def code
661-
@code
662-
end
663-
664-
def success?
665-
@code >= 200 && @code < 300
666-
end
667-
668-
def server_error?
669-
@code >= 500
670-
end
671-
672-
def to_s
673-
@code.to_s
674-
end
675-
end
676-
677-
class BodyWrapper
678-
def initialize(body)
679-
@body = body
680-
end
681-
682-
def to_s
683-
@body
684-
end
618+
http.request(request)
685619
end
686620

687621
def localize_raw(payload, target_locale:, source_locale: nil, fast: nil, reference: nil, concurrent: false, &progress_callback)
@@ -747,14 +681,14 @@ def localize_chunk(chunk, target_locale:, source_locale:, fast:, reference:, wor
747681
end
748682

749683
begin
750-
response = http_client.post(
684+
response = make_request(
751685
"#{config.api_url}/i18n",
752686
json: request_body
753687
)
754688

755689
handle_response(response)
756690

757-
data = JSON.parse(response.body.to_s, symbolize_names: true)
691+
data = JSON.parse(response.body, symbolize_names: true)
758692

759693
if !data[:data] && data[:error]
760694
raise APIError, data[:error]
@@ -804,16 +738,17 @@ def count_words_in_record(payload)
804738
end
805739

806740
def handle_response(response)
807-
return if response.status.success?
808-
809-
if response.status.server_error?
810-
raise ServerError, "Server error (#{response.status}): #{response.reason}. #{response.body}. This may be due to temporary service issues."
811-
elsif response.status.code == 400
812-
raise ValidationError, "Invalid request (#{response.status}): #{response.reason}"
813-
elsif response.status.code == 401
814-
raise AuthenticationError, "Authentication failed (#{response.status}): #{response.reason}"
741+
status_code = response.code.to_i
742+
return if status_code >= 200 && status_code < 300
743+
744+
if status_code >= 500
745+
raise ServerError, "Server error (#{status_code}): #{response.message}. #{response.body}. This may be due to temporary service issues."
746+
elsif status_code == 400
747+
raise ValidationError, "Invalid request (#{status_code}): #{response.message}"
748+
elsif status_code == 401
749+
raise AuthenticationError, "Authentication failed (#{status_code}): #{response.message}"
815750
else
816-
raise APIError, response.body.to_s
751+
raise APIError, response.body
817752
end
818753
end
819754
end

0 commit comments

Comments
 (0)