chen 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/chen-server +7 -2
- data/bin/views/index.haml +17 -0
- data/bin/views/nav_bar.haml +12 -0
- data/bin/views/theme.erb +24 -0
- data/lib/chen.rb +30 -5
- metadata +19 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9cc3cb5e819ae0bcf933934cd195fff4705a4db2
|
|
4
|
+
data.tar.gz: 85914f2b8af1ec0fc51dac7131a84c3fc00ff8d4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 5b80cb404a53931435ca89c4a6548b0190a870f4cf0d528ff51e2d6ffbcec363201bf6592435c4ff2b34f1ede7874459c05d8f55bb1de8a8aa441ea34a317415
|
|
7
|
+
data.tar.gz: 8a4514a1c5add02b0310bd86d929cd011dde6b90fd9f7a735dd26a1a53c7feffe424811bdc005a2590683eb32334a1d8a115f63111ad70a62fb77e21a0db12c3
|
data/bin/chen-server
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
-
|
|
2
|
+
#require_relative '../lib/chen.rb'
|
|
3
|
+
require 'chen'
|
|
3
4
|
require 'sinatra'
|
|
4
5
|
class ChenApiServer < Sinatra::Application
|
|
5
6
|
set :bind, '0.0.0.0'
|
|
6
|
-
get '
|
|
7
|
+
get '/' do
|
|
8
|
+
haml :index
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
get '/api/:str/:page/:number' do
|
|
7
12
|
return Chen::Google.query_to_json(params[:str], params[:page].to_i, params[:number].to_i)
|
|
8
13
|
end
|
|
9
14
|
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
= erb :theme
|
|
2
|
+
= haml :nav_bar
|
|
3
|
+
.container
|
|
4
|
+
.row
|
|
5
|
+
.col-sm-3
|
|
6
|
+
%div{class: 'col-sm-6 vertical-center'}
|
|
7
|
+
%center
|
|
8
|
+
%font{size: '100'}
|
|
9
|
+
%h1{style:"font-size:140%"}
|
|
10
|
+
Chen
|
|
11
|
+
.input-group
|
|
12
|
+
|
|
13
|
+
%input{type:'text', class:'form-control'}
|
|
14
|
+
%span{class:'input-group-btn'}
|
|
15
|
+
%button{class:'btn btn-default', type: 'button'}
|
|
16
|
+
Search
|
|
17
|
+
.col-sm-3
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
%nav{class: 'navbar navbar-inverse navbar-fixed-top', role: 'navigation'}
|
|
2
|
+
.container
|
|
3
|
+
.navbar-header
|
|
4
|
+
%a{class: 'navbar-brand'}
|
|
5
|
+
Chen
|
|
6
|
+
%p{class:'navbar-text navbar-right'}
|
|
7
|
+
Powered by Google
|
|
8
|
+
%form{class:'navbar-form navbar-left', role:'search'}
|
|
9
|
+
.form-group
|
|
10
|
+
%input{type: 'text', class: 'form-control', placeholder:'Search via Google'}
|
|
11
|
+
%button{type: 'submit', class: 'btn btn-default'}
|
|
12
|
+
Submit
|
data/bin/views/theme.erb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
<script src="http://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
|
|
2
|
+
<link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" rel="stylesheet">
|
|
3
|
+
<link href="http://cdn.bootcss.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
|
|
4
|
+
<script src="http://cdn.bootcss.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
|
5
|
+
<link href="http://cdn.bootcss.com/bootswatch/3.2.0+2/yeti/bootstrap.min.css" rel="stylesheet">
|
|
6
|
+
<style>
|
|
7
|
+
html,body,.container {
|
|
8
|
+
height: 100%;
|
|
9
|
+
}
|
|
10
|
+
.container {
|
|
11
|
+
display: table;
|
|
12
|
+
}
|
|
13
|
+
.row
|
|
14
|
+
{
|
|
15
|
+
height: 100%;
|
|
16
|
+
display: table-row;
|
|
17
|
+
}
|
|
18
|
+
.vertical-center
|
|
19
|
+
{
|
|
20
|
+
display: table-cell;
|
|
21
|
+
float: none;
|
|
22
|
+
vertical-align: middle;
|
|
23
|
+
}
|
|
24
|
+
</style>
|
data/lib/chen.rb
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
require 'google'
|
|
2
|
+
|
|
2
3
|
require 'erb'
|
|
4
|
+
require 'open-uri'
|
|
3
5
|
|
|
4
6
|
module Chen; end
|
|
5
7
|
|
|
6
|
-
Chen::SearchResult = Struct.new(:title, :url, :desc, :number
|
|
8
|
+
Chen::SearchResult = Struct.new(:title, :url, :desc, :number)
|
|
7
9
|
Chen::Template = <<HERE
|
|
8
10
|
{
|
|
9
|
-
"estimated_results": "<%=results
|
|
11
|
+
"estimated_results": "<%=results.estimated%>",
|
|
10
12
|
"query_results": [
|
|
11
13
|
<%results.each do |r|%>
|
|
12
14
|
{
|
|
@@ -24,6 +26,29 @@ Chen::Template = <<HERE
|
|
|
24
26
|
}
|
|
25
27
|
HERE
|
|
26
28
|
|
|
29
|
+
class Chen::Results < Array
|
|
30
|
+
attr_accessor :estimated
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class Chen::RemoteQuery
|
|
34
|
+
attr_accessor :default_host
|
|
35
|
+
def default_host
|
|
36
|
+
return @default_host || 'http://haruhi.socket.so:4567'
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def raw_query(url)
|
|
40
|
+
content = open url
|
|
41
|
+
return content.read
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def query_with_params(host, keyword, page_number = 1, size = 8)
|
|
45
|
+
if(default_host && host.empty?)
|
|
46
|
+
host = default_host
|
|
47
|
+
end
|
|
48
|
+
return raw_query("#{host}/api/#{keyword}/#{page_number}/#{size}")
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
27
52
|
|
|
28
53
|
|
|
29
54
|
class Chen::Google < Google
|
|
@@ -59,15 +84,15 @@ class Chen::Google < Google
|
|
|
59
84
|
estimated_results = results['responseData']['cursor']['resultCount']
|
|
60
85
|
result_array = results['responseData']['results']
|
|
61
86
|
|
|
62
|
-
datas =
|
|
87
|
+
datas = Chen::Results.new
|
|
88
|
+
datas.estimated = estimated_results
|
|
63
89
|
result_array.each_with_index do |result, i|
|
|
64
90
|
new_data = Chen::SearchResult.new
|
|
65
91
|
new_data.tap do |d|
|
|
66
92
|
d.title = result["titleNoFormatting"]
|
|
67
93
|
d.url = result["url"]
|
|
68
|
-
d.desc = result["content"].squeeze(" ")
|
|
94
|
+
d.desc = result["content"].gsub(/<b>/, "__").gsub(/<\/b>/, "__").squeeze(" ")
|
|
69
95
|
d.number = (i + query_strings[:start] + 1)
|
|
70
|
-
d.estimated = estimated_results
|
|
71
96
|
end
|
|
72
97
|
datas << new_data
|
|
73
98
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: chen
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LBQ
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-10-02 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: sinatra
|
|
@@ -38,6 +38,20 @@ dependencies:
|
|
|
38
38
|
- - ~>
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '1.0'
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: haml
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - ~>
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: '4.0'
|
|
48
|
+
type: :runtime
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - ~>
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: '4.0'
|
|
41
55
|
description: a quick-to-setup google search proxy
|
|
42
56
|
email: liubaqiao@126.com
|
|
43
57
|
executables:
|
|
@@ -46,6 +60,9 @@ extensions: []
|
|
|
46
60
|
extra_rdoc_files: []
|
|
47
61
|
files:
|
|
48
62
|
- bin/chen-server
|
|
63
|
+
- bin/views/index.haml
|
|
64
|
+
- bin/views/nav_bar.haml
|
|
65
|
+
- bin/views/theme.erb
|
|
49
66
|
- lib/chen.rb
|
|
50
67
|
homepage: http://rubygems.org/gems/chen
|
|
51
68
|
licenses:
|