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 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: