class Proxied::Importer
Public Class Methods
import(proxies)
click to toggle source
Expected format: {
host port protocol (http,socks) proxy_type (private,public) category country city username password
}
# File lib/proxied/importer.rb, line 17 def self.import(proxies) proxies.each do |proxy_item| host = proxy_item[:host]&.to_s&.strip&.downcase port = proxy_item[:port]&.to_s&.strip&.to_i ip_address = proxy_item.fetch(:ip_address, host)&.to_s&.strip&.downcase query = { host: host, port: port } parsed = { ip_address: ip_address, protocol: proxy_item.fetch(:protocol, "http")&.to_s&.strip&.downcase, proxy_type: proxy_item.fetch(:type, :private)&.to_s&.strip, category: proxy_item.fetch(:category, nil)&.to_s&.strip&.downcase, country: proxy_item.fetch(:country, nil)&.to_s&.strip&.upcase, city: proxy_item.fetch(:city, nil)&.to_s&.strip&.downcase, username: proxy_item.fetch(:username, nil)&.to_s&.strip, password: proxy_item.fetch(:password, nil)&.to_s&.strip, auth_mode: proxy_item.fetch(:auth_mode, :credentials)&.to_s&.strip, checkable: proxy_item.fetch(:checkable, true), asyncable: proxy_item.fetch(:asyncable, true), }.merge(query) proxy = ::Proxied.configuration.proxy_class.constantize.where(query).first || ::Proxied.configuration.proxy_class.constantize.new parsed.each do |key, value| proxy.send("#{key}=", value) end proxy.last_checked_at = Time.now proxy.valid_proxy = true proxy.successful_attempts = 1 proxy.save end end