From e0c563373a065345ccf8c057b7b1c3c7811a9fc0 Mon Sep 17 00:00:00 2001 From: albert Date: Tue, 22 Jan 2013 17:42:00 -0500 Subject: [PATCH] added more legacy api endpoints --- app/assets/stylesheets/specific/posts.css.scss | 2 ++ app/controllers/legacy_controller.rb | 8 ++++++++ app/models/post_version.rb | 3 +++ app/models/tag.rb | 14 ++++++++++++++ app/models/user.rb | 13 +++++++++++++ app/views/legacy/tags.xml.erb | 6 ++++++ app/views/legacy/users.json.erb | 1 + app/views/legacy/users.xml.erb | 6 ++++++ config/routes.rb | 4 ++++ 9 files changed, 57 insertions(+) create mode 100644 app/views/legacy/tags.xml.erb create mode 100644 app/views/legacy/users.json.erb create mode 100644 app/views/legacy/users.xml.erb diff --git a/app/assets/stylesheets/specific/posts.css.scss b/app/assets/stylesheets/specific/posts.css.scss index 8876aedb7..9ccdc65a4 100644 --- a/app/assets/stylesheets/specific/posts.css.scss +++ b/app/assets/stylesheets/specific/posts.css.scss @@ -171,12 +171,14 @@ div#c-post-versions { color: green; text-decoration: none; margin-right: 0.5em; + word-wrap: break-word } del, del a { color: red; text-decoration: line-through; margin-right: 0.5em; + word-wrap: break-word } } } diff --git a/app/controllers/legacy_controller.rb b/app/controllers/legacy_controller.rb index b74125c93..1c4ea040b 100644 --- a/app/controllers/legacy_controller.rb +++ b/app/controllers/legacy_controller.rb @@ -3,6 +3,14 @@ class LegacyController < ApplicationController @post_set = PostSets::Post.new(tag_query, params[:page], params[:limit]) @posts = @post_set.posts end + + def users + @users = User.search(params).limit(100) + end + + def tags + @tags = Tag.search(params).limit(100) + end private def tag_query diff --git a/app/models/post_version.rb b/app/models/post_version.rb index ab8fcf2c3..4ff91cbc5 100644 --- a/app/models/post_version.rb +++ b/app/models/post_version.rb @@ -97,4 +97,7 @@ class PostVersion < ActiveRecord::Base PostVersion.where("post_id = ? and id < ?", post_id, id).order("id desc").first end + def truncated_source + source.gsub(/^http:\/\//, "").sub(/\/.+/, "") + end end diff --git a/app/models/tag.rb b/app/models/tag.rb index 7ff5b5581..7d9ed82f5 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -3,6 +3,19 @@ class Tag < ActiveRecord::Base after_save :update_category_cache has_one :wiki_page, :foreign_key => "name", :primary_key => "title" + module ApiMethods + def to_legacy_json + return { + "name" => name, + "id" => id, + "created_at" => created_at.strftime("%Y-%m-%d %H:%M"), + "count" => post_count, + "type" => category, + "ambiguous" => false + }.to_json + end + end + class CategoryMapping Danbooru.config.reverse_tag_category_mapping.each do |value, category| define_method(category.downcase) do @@ -399,6 +412,7 @@ class Tag < ActiveRecord::Base end end + include ApiMethods extend CountMethods extend ViewCountMethods include CategoryMethods diff --git a/app/models/user.rb b/app/models/user.rb index e32c478de..56f6f2a5c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -411,6 +411,15 @@ class User < ActiveRecord::Base options[:except] += hidden_attributes super(options, &block) end + + def to_legacy_json + return { + "name" => name, + "id" => id, + "level" => level, + "created_at" => created_at.strftime("%Y-%m-%d %H:%M") + }.to_json + end end module SearchMethods @@ -446,6 +455,10 @@ class User < ActiveRecord::Base q = scoped return q if params.blank? + if params[:name] + q = q.name_matches(params[:name]) + end + if params[:name_matches] q = q.name_matches(params[:name_matches]) end diff --git a/app/views/legacy/tags.xml.erb b/app/views/legacy/tags.xml.erb new file mode 100644 index 000000000..071f28936 --- /dev/null +++ b/app/views/legacy/tags.xml.erb @@ -0,0 +1,6 @@ + + + <% @tags.each do |tag| %> + + <% end %> + diff --git a/app/views/legacy/users.json.erb b/app/views/legacy/users.json.erb new file mode 100644 index 000000000..296d0b8e0 --- /dev/null +++ b/app/views/legacy/users.json.erb @@ -0,0 +1 @@ +[<%= @users.map {|x| x.to_legacy_json}.join(", ").html_safe %>] diff --git a/app/views/legacy/users.xml.erb b/app/views/legacy/users.xml.erb new file mode 100644 index 000000000..fe0dcb2c1 --- /dev/null +++ b/app/views/legacy/users.xml.erb @@ -0,0 +1,6 @@ + + + <% @users.each do |user| %> + + <% end %> + diff --git a/config/routes.rb b/config/routes.rb index dd97da9fd..1aa057829 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -236,9 +236,13 @@ Danbooru::Application.routes.draw do match "/post_tag_history" => redirect {|params, req| "/post_versions?page=#{req.params[:page]}"} match "/post_tag_history/index" => redirect {|params, req| "/post_versions?page=#{req.params[:page]}"} + match "/tag/index.xml", :controller => "legacy", :action => "tags", :format => "xml" + match "/tag/index.json", :controller => "legacy", :action => "tags", :format => "json" match "/tag" => redirect {|params, req| "/tags?page=#{req.params[:page]}"} match "/tag/index" => redirect {|params, req| "/tags?page=#{req.params[:page]}"} + match "/user/index.xml", :controller => "legacy", :action => "users", :format => "xml" + match "/user/index.json", :controller => "legacy", :action => "users", :format => "json" match "/user" => redirect {|params, req| "/users?page=#{req.params[:page]}"} match "/user/index" => redirect {|params, req| "/users?page=#{req.params[:page]}"}