feedcellar-web 0.3.1 → 0.4.0

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: 4f3f80fe7f495bd7dc4e8de22632da3288e96fa8
4
- data.tar.gz: 511962c1a955ae422f4afe4fb57a4ab9d009f5b0
3
+ metadata.gz: 4e59c602c1a93b977060a29b050cd40e6d66b9a2
4
+ data.tar.gz: 13c6dcf680bafcd1d50c5e8b242c3293a65db9b6
5
5
  SHA512:
6
- metadata.gz: 625f5a92ea8e40d69a051540b95f94f8b5446492195c32b10c2a80b072ba3b677d9ecc4b5614c850b002851e4e0aa12b21656bc09b294f704b75b2dbe9d15a84
7
- data.tar.gz: 2e453adc110ee6cd6fca2c09e05f2ca65b1b752b7d2802aa2c07171ad3dd7fee9d9459927a855307d103e965f5d172df9ac357d5c02f261dd83752d2bc9e4d4b
6
+ metadata.gz: e1ddc14f72b6d5842f13b403de0f3fbfb0c31f7a6e5fb1ce553bcfebf61419684c339334cf04ed23b7c01d786236bb91cd6ab99a51ef2c9e548d71ec7231122d
7
+ data.tar.gz: cc02710a77ca9d3ac9f69cace3d65896f5ca3aac232f321cca1137857e67ba094c2431d489c9b78f8c9d78c6cd0615b5799902861477a51520e3bcfd37f5bb78
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- feedcellar-web (0.3.1)
4
+ feedcellar-web (0.3.2)
5
5
  feedcellar (>= 0.6.0)
6
6
  haml
7
7
  kaminari
@@ -9,6 +9,8 @@ PATH
9
9
  padrino-helpers
10
10
  racknga
11
11
  sinatra
12
+ sinatra-contrib
13
+ sinatra-cross_origin
12
14
  thor
13
15
 
14
16
  GEM
@@ -36,13 +38,14 @@ GEM
36
38
  addressable (2.3.8)
37
39
  archive-zip (0.7.0)
38
40
  io-like (~> 0.3.0)
41
+ backports (3.6.4)
39
42
  builder (3.2.2)
40
43
  erubis (2.7.0)
41
44
  feedcellar (0.6.0)
42
45
  rroonga (>= 5.0.0)
43
46
  thor
44
47
  gqtp (1.0.6)
45
- groonga-client (0.1.0)
48
+ groonga-client (0.1.6)
46
49
  gqtp (>= 1.0.4)
47
50
  groonga-command (>= 1.0.8)
48
51
  groonga-command (1.1.2)
@@ -51,16 +54,17 @@ GEM
51
54
  tilt
52
55
  i18n (0.7.0)
53
56
  io-like (0.3.0)
54
- json (1.8.2)
57
+ json (1.8.3)
55
58
  kaminari (0.16.3)
56
59
  actionpack (>= 3.0.0)
57
60
  activesupport (>= 3.0.0)
58
61
  launchy (2.4.3)
59
62
  addressable (~> 2.3)
60
- loofah (2.0.1)
63
+ loofah (2.0.2)
61
64
  nokogiri (>= 1.5.9)
62
65
  mini_portile (0.6.2)
63
- minitest (5.5.1)
66
+ minitest (5.7.0)
67
+ multi_json (1.11.1)
64
68
  nokogiri (1.6.6.2)
65
69
  mini_portile (~> 0.6.0)
66
70
  padrino-helpers (0.12.5)
@@ -71,7 +75,7 @@ GEM
71
75
  activesupport (>= 3.1)
72
76
  pkg-config (1.1.6)
73
77
  power_assert (0.2.3)
74
- rack (1.6.0)
78
+ rack (1.6.1)
75
79
  rack-protection (1.5.3)
76
80
  rack
77
81
  rack-test (0.6.3)
@@ -89,7 +93,7 @@ GEM
89
93
  loofah (~> 2.0)
90
94
  rake (10.4.2)
91
95
  rr (1.1.2)
92
- rroonga (5.0.0)
96
+ rroonga (5.0.3)
93
97
  archive-zip
94
98
  groonga-client (>= 0.0.3)
95
99
  json
@@ -98,7 +102,15 @@ GEM
98
102
  rack (~> 1.4)
99
103
  rack-protection (~> 1.4)
100
104
  tilt (>= 1.3, < 3)
101
- test-unit (3.0.9)
105
+ sinatra-contrib (1.4.4)
106
+ backports (>= 2.0)
107
+ multi_json
108
+ rack-protection
109
+ rack-test
110
+ sinatra (~> 1.4.0)
111
+ tilt (>= 1.3, < 3)
112
+ sinatra-cross_origin (0.3.2)
113
+ test-unit (3.1.2)
102
114
  power_assert
103
115
  test-unit-notify (1.0.4)
104
116
  test-unit (>= 2.4.9)
data/NEWS.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # NEWS
2
2
 
3
+ ## 0.4.0: 2016-02-17
4
+
5
+ ### Changes
6
+
7
+ #### Improvements
8
+
9
+ * Add space between resources and years.
10
+ * Break by years.
11
+ * Break by months by years.
12
+ * Added /search.json route.
13
+ * Supported CORS.
14
+ * Don't paginate unless params[:page] is specified.
15
+
3
16
  ## 0.3.1: 2015-04-13
4
17
 
5
18
  Bug fix release for 0.3.0.
@@ -40,6 +40,8 @@ Gem::Specification.new do |spec|
40
40
  spec.add_runtime_dependency("feedcellar", ">= 0.6.0")
41
41
  spec.add_runtime_dependency("thor")
42
42
  spec.add_runtime_dependency("sinatra")
43
+ spec.add_runtime_dependency("sinatra-contrib")
44
+ spec.add_runtime_dependency("sinatra-cross_origin")
43
45
  spec.add_runtime_dependency("padrino-helpers")
44
46
  spec.add_runtime_dependency("kaminari")
45
47
  spec.add_runtime_dependency("haml")
@@ -18,6 +18,8 @@
18
18
 
19
19
  require "feedcellar"
20
20
  require "sinatra/base"
21
+ require "sinatra/json"
22
+ require "sinatra/cross_origin"
21
23
  require "haml"
22
24
  require "padrino-helpers"
23
25
  require "kaminari/sinatra"
@@ -26,30 +28,24 @@ module Feedcellar
26
28
  module Web
27
29
  class App < Sinatra::Base
28
30
  helpers Kaminari::Helpers::SinatraHelpers
31
+ register Sinatra::CrossOrigin
29
32
 
30
33
  get "/" do
31
34
  haml :index
32
35
  end
33
36
 
34
37
  get "/search" do
35
- if params[:word]
36
- words = params[:word].split(" ")
37
- else
38
- words = []
39
- end
40
- options ||= {}
41
- options[:resource_id] = params[:resource_id] if params[:resource_id]
42
- options[:year] = params[:year].to_i if params[:year]
43
- options[:month] = params[:month].to_i if params[:month]
44
- @feeds = search(words, options)
45
- if @feeds
46
- page = params[:page]
47
- n_per_page = options[:n_per_page] || 50
48
- @paginated_feeds = pagenate_feeds(@feeds, page, n_per_page)
49
- end
38
+ search_and_paginate
50
39
  haml :index
51
40
  end
52
41
 
42
+ get "/search.json" do
43
+ cross_origin
44
+ search_and_paginate
45
+ feeds = @paginated_feeds || @feeds
46
+ json feeds.collect {|feed| feed.attributes }
47
+ end
48
+
53
49
  get "/registers.opml" do
54
50
  content_type :xml
55
51
  opml = nil
@@ -60,6 +56,24 @@ module Feedcellar
60
56
  end
61
57
 
62
58
  helpers do
59
+ def search_and_paginate
60
+ if params[:word]
61
+ words = params[:word].split(" ")
62
+ else
63
+ words = []
64
+ end
65
+ options ||= {}
66
+ options[:resource_id] = params[:resource_id] if params[:resource_id]
67
+ options[:year] = params[:year].to_i if params[:year]
68
+ options[:month] = params[:month].to_i if params[:month]
69
+ @feeds = search(words, options)
70
+ if @feeds and params[:page]
71
+ page = params[:page]
72
+ n_per_page = options[:n_per_page] || 50
73
+ @paginated_feeds = pagenate_feeds(@feeds, page, n_per_page)
74
+ end
75
+ end
76
+
63
77
  def search(words, options={})
64
78
  database = GroongaDatabase.new
65
79
  database.open(Command.new.database_dir)
@@ -1,6 +1,6 @@
1
1
  # constant Feedcellar::Web::VERSION
2
2
  #
3
- # Copyright (C) 2015 Masafumi Yokoyama <myokoym@gmail.com>
3
+ # Copyright (C) 2015-2016 Masafumi Yokoyama <myokoym@gmail.com>
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -18,6 +18,6 @@
18
18
 
19
19
  module Feedcellar
20
20
  module Web
21
- VERSION = "0.3.1"
21
+ VERSION = "0.4.0"
22
22
  end
23
23
  end
@@ -1,8 +1,10 @@
1
- = paginate(@paginated_feeds)
1
+ - if @paginated_feeds
2
+ = paginate(@paginated_feeds)
2
3
  %ul
3
- - @paginated_feeds.each do |feed|
4
+ - (@paginated_feeds || @feeds).each do |feed|
4
5
  %li
5
6
  %p
6
7
  = feed.date.strftime("%Y-%m-%d")
7
8
  = link_to("#{feed.title} - #{feed.resource.title}", feed.link)
8
- = paginate(@paginated_feeds)
9
+ - if @paginated_feeds
10
+ = paginate(@paginated_feeds)
@@ -4,3 +4,4 @@
4
4
  - month = sub_record.month
5
5
  = link_to("#{"%04d" % year}-#{"%02d" % month} (#{group.n_sub_records})",
6
6
  url("/search?word=#{params[:word]}&year=#{year}&month=#{month}"))
7
+ %br
@@ -2,3 +2,4 @@
2
2
  - year = group.key
3
3
  = link_to("#{"%04d" % year} (#{group.n_sub_records})",
4
4
  url("/search?word=#{params[:word]}&year=#{year}"))
5
+ %br
@@ -7,7 +7,8 @@
7
7
  .col-sm-6
8
8
  = render :_feeds, layout: false
9
9
  .col-sm-4
10
- = render :_resources, layout: false
10
+ %p
11
+ = render :_resources, layout: false
11
12
  .col-sm-2
12
13
  %p
13
14
  = render :_years, layout: false
data/test/test-app.rb CHANGED
@@ -11,4 +11,19 @@ class AppTest < Test::Unit::TestCase
11
11
  get "/"
12
12
  assert_true(last_response.ok?)
13
13
  end
14
+
15
+ def test_search
16
+ get "/search"
17
+ assert_true(last_response.ok?)
18
+ end
19
+
20
+ def test_search_json
21
+ get "/search.json"
22
+ assert_true(last_response.ok?)
23
+ end
24
+
25
+ def test_registers
26
+ get "/registers.opml"
27
+ assert_true(last_response.ok?)
28
+ end
14
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: feedcellar-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masafumi Yokoyama
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-04-12 00:00:00.000000000 Z
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: feedcellar
@@ -52,6 +52,34 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: sinatra-contrib
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sinatra-cross_origin
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: padrino-helpers
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -262,7 +290,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
262
290
  version: '0'
263
291
  requirements: []
264
292
  rubyforge_project:
265
- rubygems_version: 2.4.5
293
+ rubygems_version: 2.5.1
266
294
  signing_key:
267
295
  specification_version: 4
268
296
  summary: Web interface for Feedcellar
@@ -270,3 +298,4 @@ test_files:
270
298
  - test/run-test.rb
271
299
  - test/test-app.rb
272
300
  - test/test-command.rb
301
+ has_rdoc: