diff --git a/app/assets/javascripts/sources.js b/app/assets/javascripts/sources.js new file mode 100644 index 000000000..027e0566b --- /dev/null +++ b/app/assets/javascripts/sources.js @@ -0,0 +1,8 @@ +(function() { + Danbooru.Sources = {}; + + Danbooru.Sources.get = function(url) { + + } +})(); + diff --git a/app/controllers/sources_controller.rb b/app/controllers/sources_controller.rb new file mode 100644 index 000000000..7c927a381 --- /dev/null +++ b/app/controllers/sources_controller.rb @@ -0,0 +1,9 @@ +class SourcesController < ApplicationController + # before_filter :member_only + respond_to :json + + def show + @source = Sources::Site.new(params[:url]) + respond_with(@source) + end +end diff --git a/app/logical/art_site_proxies/proxy.rb b/app/logical/sources/site.rb similarity index 90% rename from app/logical/art_site_proxies/proxy.rb rename to app/logical/sources/site.rb index 1aabee8af..b9efea02c 100644 --- a/app/logical/art_site_proxies/proxy.rb +++ b/app/logical/sources/site.rb @@ -1,5 +1,5 @@ -module ArtSiteProxies - class Proxy +module Sources + class Site attr_reader :url, :strategy delegate :artist_name, :profile_url, :image_url, :tags, :to => :strategy diff --git a/app/logical/art_site_proxies/strategies/base.rb b/app/logical/sources/strategies/base.rb similarity index 96% rename from app/logical/art_site_proxies/strategies/base.rb rename to app/logical/sources/strategies/base.rb index 25d7ad5d2..92f427b13 100644 --- a/app/logical/art_site_proxies/strategies/base.rb +++ b/app/logical/sources/strategies/base.rb @@ -1,4 +1,4 @@ -module ArtSiteProxies +module Sources module Strategies class Base attr_reader :url, :agent diff --git a/app/logical/art_site_proxies/strategies/default.rb b/app/logical/sources/strategies/default.rb similarity index 78% rename from app/logical/art_site_proxies/strategies/default.rb rename to app/logical/sources/strategies/default.rb index 3fc849b63..8fc4e0e47 100644 --- a/app/logical/art_site_proxies/strategies/default.rb +++ b/app/logical/sources/strategies/default.rb @@ -1,4 +1,4 @@ -module ArtSiteProxies +module Sources module Strategies class Default < Base def artist_name @@ -16,6 +16,10 @@ module ArtSiteProxies def tags [] end + + protected + def create_agent + end end end end diff --git a/app/logical/sources/strategies/fc2.rb b/app/logical/sources/strategies/fc2.rb new file mode 100644 index 000000000..acf84e2f0 --- /dev/null +++ b/app/logical/sources/strategies/fc2.rb @@ -0,0 +1,25 @@ +module Sources + module Strategies + class Fc2 < Base + def artist_name + "?" + end + + def profile_url + url + end + + def image_url + url + end + + def tags + [] + end + + protected + def create_agent + end + end + end +end diff --git a/app/logical/sources/strategies/nico_seiga.rb b/app/logical/sources/strategies/nico_seiga.rb new file mode 100644 index 000000000..8f7a8a7de --- /dev/null +++ b/app/logical/sources/strategies/nico_seiga.rb @@ -0,0 +1,25 @@ +module Sources + module Strategies + class NicoSeiga < Base + def artist_name + "?" + end + + def profile_url + url + end + + def image_url + url + end + + def tags + [] + end + + protected + def create_agent + end + end + end +end diff --git a/app/logical/sources/strategies/pixa.rb b/app/logical/sources/strategies/pixa.rb new file mode 100644 index 000000000..5176419b0 --- /dev/null +++ b/app/logical/sources/strategies/pixa.rb @@ -0,0 +1,25 @@ +module Sources + module Strategies + class Pixa < Base + def artist_name + "?" + end + + def profile_url + url + end + + def image_url + url + end + + def tags + [] + end + + protected + def create_agent + end + end + end +end diff --git a/app/logical/art_site_proxies/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb similarity index 93% rename from app/logical/art_site_proxies/strategies/pixiv.rb rename to app/logical/sources/strategies/pixiv.rb index 72ca994ed..274f80de5 100644 --- a/app/logical/art_site_proxies/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -1,4 +1,4 @@ -module ArtSiteProxies +module Sources module Strategies class Pixiv < Base attr_reader :artist_name, :profile_url, :image_url, :tags @@ -29,7 +29,7 @@ module ArtSiteProxies end if links.any? - profile_url = links[0]["href"] + profile_url = "http://www.pixiv.net/" + links[0]["href"] children = links[0].children artist = children[0]["alt"] return [artist, profile_url] @@ -54,7 +54,7 @@ module ArtSiteProxies if links.any? links.map do |node| - [node.inner_text, node.attr("href")] + [node.inner_text, "http://www.pixiv.net/" + node.attr("href")] end else [] diff --git a/app/logical/sources/strategies/tinami.rb b/app/logical/sources/strategies/tinami.rb new file mode 100644 index 000000000..6789dbeff --- /dev/null +++ b/app/logical/sources/strategies/tinami.rb @@ -0,0 +1,25 @@ +module Sources + module Strategies + class Tinami < Base + def artist_name + "?" + end + + def profile_url + url + end + + def image_url + url + end + + def tags + [] + end + + protected + def create_agent + end + end + end +end diff --git a/app/views/sources/show.json.erb b/app/views/sources/show.json.erb new file mode 100644 index 000000000..8d0aaae7d --- /dev/null +++ b/app/views/sources/show.json.erb @@ -0,0 +1,6 @@ +({ + "artist_name": "<%= j @source.artist_name %>", + "profile_url": "<%= j @source.profile_url %>", + "image_url": "<%= j @source.image_url %>", + "tags": <%= @source.tags.to_json.html_safe %> +}); diff --git a/config/routes.rb b/config/routes.rb index c1d1a4a56..37a0e56e1 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -32,6 +32,7 @@ Danbooru::Application.routes.draw do resources :advertisements do resources :hits, :controller => "advertisement_hits", :only => [:create] end + resource :art_site_proxy, :only => [:show] resources :artists do member do put :revert diff --git a/test/unit/pixiv_proxy_test.rb b/test/unit/pixiv_proxy_test.rb index 5eb29c5ff..50fc6336a 100644 --- a/test/unit/pixiv_proxy_test.rb +++ b/test/unit/pixiv_proxy_test.rb @@ -5,9 +5,9 @@ require 'test_helper' class PixivProxyTest < ActiveSupport::TestCase context "The proxy" do should "get a single post" do - proxy = ArtSiteProxies::Proxy.new("http://www.pixiv.net/member_illust.php?mode=medium&illust_id=9646484") + proxy = Sources::Site.new("http://www.pixiv.net/member_illust.php?mode=medium&illust_id=9646484") - assert_equal("member.php?id=4015", proxy.profile_url) + assert_equal("http://www.pixiv.net/member.php?id=4015", proxy.profile_url) assert(proxy.tags.size > 0) first_tag = proxy.tags.first assert_equal(2, first_tag.size)