diff options
Diffstat (limited to 'core/plugin/search/model/search.rb')
-rw-r--r-- | core/plugin/search/model/search.rb | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/core/plugin/search/model/search.rb b/core/plugin/search/model/search.rb new file mode 100644 index 00000000..3158bdd7 --- /dev/null +++ b/core/plugin/search/model/search.rb @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- + +module Plugin::Search + class Search < Retriever::Model + register :twitter_search, name: Plugin[:search]._('Twitter検索') + + field.string :query, required: true + + # https://twitter.com/search?q=%23superfuckjp + handle ->uri{ + uri.scheme == 'https' && + uri.host == 'twitter.com' && + uri.path == '/search' && + uri.query.split('&').any?{|r|r.split('=', 2).first == 'q'} + } do |uri| + _, query = uri.query.split('&').lazy.map{|r| r.split('=', 2) }.find{|k,v| k == 'q' } + new(query: CGI.unescape(query)) + end + + memoize def perma_link + URI.parse("https://twitter.com/search?q=#{CGI.escape(self.query)}") + end + end +end |