aboutsummaryrefslogtreecommitdiffstats
path: root/core/plugin/search/model/search.rb
diff options
context:
space:
mode:
Diffstat (limited to 'core/plugin/search/model/search.rb')
-rw-r--r--core/plugin/search/model/search.rb24
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