sources: use http client from base strategy.
This commit is contained in:
@@ -122,7 +122,7 @@ module Sources::Strategies
|
||||
def api_response
|
||||
return {} if project_id.blank?
|
||||
|
||||
resp = Danbooru::Http.cache(1.minute).get("https://www.artstation.com/projects/#{project_id}.json")
|
||||
resp = http.cache(1.minute).get("https://www.artstation.com/projects/#{project_id}.json")
|
||||
return {} if resp.code != 200
|
||||
|
||||
resp.parse.with_indifferent_access
|
||||
|
||||
@@ -266,7 +266,7 @@ module Sources
|
||||
def page
|
||||
return nil if page_url_from_image_url.blank?
|
||||
|
||||
resp = Danbooru::Http.cache(1.minute).get(page_url_from_image_url, follow: {max_hops: 1})
|
||||
resp = http.cache(1.minute).get(page_url_from_image_url, follow: {max_hops: 1})
|
||||
|
||||
if resp.status.success?
|
||||
Nokogiri::HTML(resp.body.to_s)
|
||||
|
||||
@@ -64,7 +64,7 @@ module Sources
|
||||
def page
|
||||
return nil if page_url.blank?
|
||||
|
||||
response = Danbooru::Http.new.cache(1.minute).get("#{page_url}?enterAgree=1")
|
||||
response = http.cache(1.minute).get("#{page_url}?enterAgree=1")
|
||||
return nil unless response.status == 200
|
||||
|
||||
response.parse
|
||||
|
||||
@@ -113,7 +113,7 @@ module Sources
|
||||
return {}
|
||||
end
|
||||
|
||||
response = Danbooru::Http.cache(1.minute).get("https://#{site_name}/post.json", params: params)
|
||||
response = http.cache(1.minute).get("https://#{site_name}/post.json", params: params)
|
||||
post = response.parse.first&.with_indifferent_access
|
||||
post || {}
|
||||
end
|
||||
|
||||
@@ -50,7 +50,7 @@ module Sources
|
||||
def page
|
||||
return nil if page_url.blank?
|
||||
|
||||
response = Danbooru::Http.cache(1.minute).get(page_url)
|
||||
response = http.cache(1.minute).get(page_url)
|
||||
return nil if response.status == 404
|
||||
|
||||
response.parse
|
||||
|
||||
@@ -190,10 +190,10 @@ module Sources
|
||||
memoize :page
|
||||
|
||||
def client
|
||||
http = Danbooru::Http.new.timeout(60)
|
||||
nijie = http.timeout(60).use(retriable: { max_retries: 20 })
|
||||
|
||||
cookie = Cache.get("nijie-session-cookie", 1.week) do
|
||||
login_page = http.use(retriable: { max_retries: 20 }).get("https://nijie.info/login.php").parse
|
||||
login_page = nijie.get("https://nijie.info/login.php").parse
|
||||
form = {
|
||||
email: Danbooru.config.nijie_login,
|
||||
password: Danbooru.config.nijie_password,
|
||||
@@ -201,14 +201,14 @@ module Sources
|
||||
save: "on",
|
||||
ticket: ""
|
||||
}
|
||||
response = http.use(retriable: { max_retries: 20 }).post("https://nijie.info/login_int.php", form: form)
|
||||
response = nijie.post("https://nijie.info/login_int.php", form: form)
|
||||
DanbooruLogger.info "Nijie login failed (#{url}, #{response.status})" if response.status != 200
|
||||
return nil unless response.status == 200
|
||||
|
||||
response.cookies.select { |c| c.name == "NIJIEIJIEID" }.compact.first
|
||||
end
|
||||
|
||||
http.cookies(NIJIEIJIEID: cookie, R18: 1)
|
||||
nijie.cookies(NIJIEIJIEID: cookie, R18: 1)
|
||||
end
|
||||
memoize :client
|
||||
end
|
||||
|
||||
@@ -28,11 +28,6 @@ module Sources::Strategies
|
||||
VIDEO = %r{\Ahttps?://(?:vtt|ve|va\.media)\.tumblr\.com/}i
|
||||
POST = %r{\Ahttps?://(?<blog_name>[^.]+)\.tumblr\.com/(?:post|image)/(?<post_id>\d+)}i
|
||||
|
||||
NEW_HEADERS = {
|
||||
"user-agent": Danbooru.config.canonical_app_name,
|
||||
"accept": "text/html"
|
||||
}
|
||||
|
||||
def self.enabled?
|
||||
Danbooru.config.tumblr_consumer_key.present?
|
||||
end
|
||||
@@ -180,7 +175,7 @@ module Sources::Strategies
|
||||
max_size = Integer.sqrt(Danbooru.config.max_image_resolution)
|
||||
url = url.gsub(%r{/s\d+x\d+/\w+\.\w+$}i, "/s#{max_size}x#{max_size}/#{$1}")
|
||||
|
||||
resp = Danbooru::Http.cache(1.minute).get(url, headers: NEW_HEADERS).parse
|
||||
resp = http.cache(1.minute).headers(accept: "text/html").get(url).parse
|
||||
resp.at("img[src*='/s#{max_size}x#{max_size}/']")["src"]
|
||||
else
|
||||
url
|
||||
@@ -204,7 +199,7 @@ module Sources::Strategies
|
||||
return {} unless self.class.enabled?
|
||||
return {} unless blog_name.present? && post_id.present?
|
||||
|
||||
response = Danbooru::Http.cache(1.minute).get(
|
||||
response = http.cache(1.minute).get(
|
||||
"https://api.tumblr.com/v2/blog/#{blog_name}/posts",
|
||||
params: { id: post_id, api_key: Danbooru.config.tumblr_consumer_key }
|
||||
)
|
||||
|
||||
@@ -205,7 +205,7 @@ module Sources
|
||||
def api_response
|
||||
return {} if mobile_url.blank?
|
||||
|
||||
resp = Danbooru::Http.cache(1.minute).get(mobile_url)
|
||||
resp = http.cache(1.minute).get(mobile_url)
|
||||
json_string = resp.to_s[/var \$render_data = \[(.*)\]\[0\]/m, 1]
|
||||
|
||||
return {} if json_string.blank?
|
||||
|
||||
Reference in New Issue
Block a user