chen 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 25b49bb25199172cb2a0ca6adf8b412b425b962c
4
- data.tar.gz: 2aadcce566c4c3ab369d72507baeee0c1443982d
3
+ metadata.gz: 9cc3cb5e819ae0bcf933934cd195fff4705a4db2
4
+ data.tar.gz: 85914f2b8af1ec0fc51dac7131a84c3fc00ff8d4
5
5
  SHA512:
6
- metadata.gz: a52437fc986c9d85503ccfa5821c9782c1b8ce4bc6fa48c5b0534c7e0add4624a12a0f45b9fb366d7a20cb5f1d4c11a5816c8577ac95c5f83eb5c4d08fe45f02
7
- data.tar.gz: 769b1c023b5266d22603ff79a126057900e0db998c21e0b5e4b52e459f829f7bbf82665dacb77f769f9bc540a177ef02d8f21f032b5f52c36fd4df732c398a8a
6
+ metadata.gz: 5b80cb404a53931435ca89c4a6548b0190a870f4cf0d528ff51e2d6ffbcec363201bf6592435c4ff2b34f1ede7874459c05d8f55bb1de8a8aa441ea34a317415
7
+ data.tar.gz: 8a4514a1c5add02b0310bd86d929cd011dde6b90fd9f7a735dd26a1a53c7feffe424811bdc005a2590683eb32334a1d8a115f63111ad70a62fb77e21a0db12c3
@@ -1,9 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
- require 'chen.rb'
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 '/:str/:page/:number' do
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
@@ -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>
@@ -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, :estimated)
8
+ Chen::SearchResult = Struct.new(:title, :url, :desc, :number)
7
9
  Chen::Template = <<HERE
8
10
  {
9
- "estimated_results": "<%=results[0].estimated%>",
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
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-09-30 00:00:00.000000000 Z
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: