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