Sha256: dd0d8c7fa8d980210f4e0df3caeea349284d5e652b5f4f5ecd4926db91ca5adf
Contents?: true
Size: 1.75 KB
Versions: 4
Compression:
Stored size: 1.75 KB
Contents
# frozen_string_literal: true require 'net/http' module Tcat class HttpClient DEFAULT_HEADERS = { 'User-Agent' => 'BlackCat/2.49 (iPhone; iOS 17.6.1; Scale/3.00)', 'Accept-Language' => 'zh-Hant-TW;q=1, en-TW;q=0.9', 'Cookie' => 'citrix_ns_id=AAE7go4rZDusCRcEAAAAADuVBLGLdqo1FolMO02r_jOEnjNmr4u9sIYwtllmmfsOOw==KJArZA==AQJLxyeLYOXPo3Uzfh_rWrr_NcU=; ASP.NET_SessionId=p4v1z4nijrynbortgf4iqml4' }.freeze API_ENDPOINT = 'https://www.t-cat.com.tw/iPhone/TCatApp.aspx' API_VERSION = '24.26' class RequestError < StandardError; end def initialize(timeout: 30) @timeout = timeout end def post(params) uri = URI("#{API_ENDPOINT}?ver=#{API_VERSION}") http = setup_http_client(uri) request = Net::HTTP::Post.new(uri) DEFAULT_HEADERS.each { |key, value| request[key] = value } request.body = URI.encode_www_form(params) handle_response(http.request(request)) rescue Net::ReadTimeout, Net::OpenTimeout => e raise RequestError, "Request timeout: #{e.message}" rescue SocketError, Net::HTTPError => e raise RequestError, "Network error: #{e.message}" rescue StandardError => e raise RequestError, "Unexpected error: #{e.message}" end private def setup_http_client(uri) http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true http.read_timeout = @timeout http.open_timeout = @timeout http end def handle_response(response) case response when Net::HTTPSuccess response.body when Net::HTTPRedirection raise RequestError, "Unexpected redirect to #{response['location']}" else raise RequestError, "HTTP #{response.code}: #{response.message}" end end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
tcat-0.1.8 | lib/tcat/http_client.rb |
tcat-0.1.7 | lib/tcat/http_client.rb |
tcat-0.1.6 | lib/tcat/http_client.rb |
tcat-0.1.5 | lib/tcat/http_client.rb |