Test if body content is likely JSON, if so parse the json format of subscriptions export. If the content is anything else, assume it is CSV and parse

This commit is contained in:
bbielsa 2021-10-27 17:54:40 -04:00 committed by Samantaz Fox
parent 7cbd79fee5
commit 43ff3be751
No known key found for this signature in database
GPG Key ID: F42821059186176E

View File

@ -821,11 +821,14 @@ post "/data_control" do |env|
user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel| user.subscriptions += subscriptions.xpath_nodes(%q(//outline[@type="rss"])).map do |channel|
channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0] channel["xmlUrl"].match(/UC[a-zA-Z0-9_-]{22}/).not_nil![0]
end end
else elsif body[0] == '['
subscriptions = JSON.parse(body) subscriptions = JSON.parse(body)
user.subscriptions += subscriptions.as_a.compact_map do |entry| user.subscriptions += subscriptions.as_a.compact_map do |entry|
entry["snippet"]["resourceId"]["channelId"].as_s entry["snippet"]["resourceId"]["channelId"].as_s
end end
else
subscriptions = parse_subscription_export_csv(body)
user.subscriptions += subscriptions
end end
user.subscriptions.uniq! user.subscriptions.uniq!