beerdb 0.2.0 → 0.3.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.
data/Manifest.txt CHANGED
@@ -17,5 +17,12 @@ lib/beerdb/models/region.rb
17
17
  lib/beerdb/models/tag.rb
18
18
  lib/beerdb/reader.rb
19
19
  lib/beerdb/schema.rb
20
+ lib/beerdb/server.rb
21
+ lib/beerdb/server/public/style.css
22
+ lib/beerdb/server/views/_debug.erb
23
+ lib/beerdb/server/views/_version.erb
24
+ lib/beerdb/server/views/debug.erb
25
+ lib/beerdb/server/views/index.erb
26
+ lib/beerdb/server/views/layout.erb
20
27
  lib/beerdb/stats.rb
21
28
  lib/beerdb/version.rb
@@ -0,0 +1,36 @@
1
+ body {
2
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; }
3
+
4
+ a {
5
+ color: black;
6
+ text-decoration: none; }
7
+ a:hover {
8
+ color: black;
9
+ background-color: aqua;
10
+ text-decoration: underline; }
11
+ a:visited {
12
+ color: black; }
13
+
14
+ .params {
15
+ color: green;
16
+ font-style: italic;
17
+ font-weight: bold; }
18
+
19
+ pre {
20
+ background-color: #F3F3F3;
21
+ border-bottom: 1px solid #BBBBBB;
22
+ border-top: 1px solid #BBBBBB;
23
+ padding: 4px; }
24
+
25
+
26
+ /**********
27
+ * version / powered by
28
+ */
29
+
30
+ .version {
31
+ text-align: center;
32
+ margin-top: 10px;
33
+ color: grey; }
34
+ .version a, .version span {
35
+ font-size: 12px;
36
+ color: grey; }
@@ -0,0 +1,17 @@
1
+
2
+ <h3>Debug</h3>
3
+
4
+ <pre>
5
+ request.scheme <%= request.scheme %>
6
+ request.script_name <%= request.script_name %>
7
+ request.path_info <%= request.path_info %>
8
+ request.port <%= request.port %>
9
+ request.request_method <%= request.request_method %>
10
+ request.query_string <%= request.query_string %>
11
+ request.host <%= request.host %>
12
+ request.referrer <%= request.referrer %>
13
+ request.user_agent <%= request.user_agent %>
14
+ request.url <%= request.url %>
15
+ request.path <%= request.path %>
16
+ request.ip <%= request.ip %>
17
+ </pre>
@@ -0,0 +1,7 @@
1
+ <div class='version'>
2
+ <a href="http://groups.google.com/group/opensport">Questions? Comments?</a> |
3
+ <a href="https://github.com/geraldb/world.db">world.db/<%= WorldDb::VERSION %></a>,
4
+ <a href="https://github.com/geraldb/beer.db">beer.db/<%= BeerDb::VERSION %></a> -
5
+ <span>Ruby/<%= "#{RUBY_VERSION} (#{RUBY_RELEASE_DATE}/#{RUBY_PLATFORM})" %> on</span>
6
+ <span>Sinatra/<%= Sinatra::VERSION %> (<%= ENV['RACK_ENV'] %>)</span>
7
+ </div>
@@ -0,0 +1,3 @@
1
+
2
+ <%= erb :'_debug' %>
3
+
@@ -0,0 +1,128 @@
1
+
2
+ <h1>beer.db JSON(P) API Demo</h1>
3
+
4
+ <h2>Examples</h2>
5
+
6
+ <h3>Get beer by key <code>/beer/<span class='params'>:key</span></code></h3>
7
+
8
+ <table>
9
+ <tr>
10
+ <td>
11
+ <code>
12
+ <a href='<%= url("/beer/guinness") %>'>
13
+ /beer/<span class='params'>guinness</span>
14
+ </a>
15
+ </code>
16
+ </td>
17
+ </tr>
18
+
19
+ <tr>
20
+ <td>
21
+ <code>
22
+ <a href='<%= url("/beer/murphysred") %>'>
23
+ /beer/<span class='params'>murphysred</span>
24
+ </a>
25
+ </code>
26
+ </td>
27
+ </tr>
28
+
29
+ <tr>
30
+ <td>
31
+ <code>
32
+ <a href='<%= url("/beer/brooklynlager") %>'>
33
+ /beer/<span class='params'>brooklynlager</span>
34
+ </a>
35
+ </code>
36
+ </td>
37
+ </tr>
38
+
39
+ <tr>
40
+ <td>
41
+ <code>
42
+ <a href='<%= url("/beer/corona") %>'>
43
+ /beer/<span class='params'>corona</span>
44
+ </a>
45
+ </code>
46
+ </td>
47
+ </tr>
48
+
49
+ <tr>
50
+ <td>
51
+ <code>
52
+ <a href='<%= url("/beer/dosequisxxamber") %>'>
53
+ /beer/<span class='params'>dosequisxxamber</span>
54
+ </a>
55
+ </code>
56
+ </td>
57
+ </tr>
58
+
59
+ <tr>
60
+ <td>
61
+ <code>
62
+ <a href='<%= url("/beer/ottakringerhelles") %>'>
63
+ /beer/<span class='params'>ottakringerhelles</span>
64
+ </a>
65
+ </code>
66
+ </td>
67
+ </tr>
68
+
69
+ </table>
70
+
71
+
72
+ <h3>Get brewery by key <code>/brewery/<span class='params'>:key</span></code></h3>
73
+
74
+ <table>
75
+ <tr>
76
+ <td>
77
+ <code>
78
+ <a href='<%= url("/brewery/guinness") %>'>
79
+ /brewery/<span class='params'>guinness</span>
80
+ </a>
81
+ </code>
82
+ </td>
83
+ </tr>
84
+
85
+ <tr>
86
+ <td>
87
+ <code>
88
+ <a href='<%= url("/brewery/fullers") %>'>
89
+ /brewery/<span class='params'>fullers</span>
90
+ </a>
91
+ </code>
92
+ </td>
93
+ </tr>
94
+
95
+ <tr>
96
+ <td>
97
+ <code>
98
+ <a href='<%= url("/brewery/brooklyn") %>'>
99
+ /brewery/<span class='params'>brooklyn</span>
100
+ </a>
101
+ </code>
102
+ </td>
103
+ </tr>
104
+
105
+ <tr>
106
+ <td>
107
+ <code>
108
+ <a href='<%= url("/brewery/gmodelo") %>'>
109
+ /brewery/<span class='params'>gmodelo</span>
110
+ </a>
111
+ </code>
112
+ </td>
113
+ </tr>
114
+
115
+ <tr>
116
+ <td>
117
+ <code>
118
+ <a href='<%= url("/brewery/ottakringer") %>'>
119
+ /brewery/<span class='params'>ottakringer</span>
120
+ </a>
121
+ </code>
122
+ </td>
123
+ </tr>
124
+
125
+ </table>
126
+
127
+
128
+ <%= erb :'_debug' %>
@@ -0,0 +1,15 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset='UTF-8'>
5
+ <title>beer.db web service / HTTP JSON API</title>
6
+ <link href="<%= url('/style.css') %>" rel='stylesheet'>
7
+ </head>
8
+ <body>
9
+
10
+ <%= yield %>
11
+
12
+ <%= erb :'_version' %>
13
+
14
+ </body>
15
+ </html>
@@ -0,0 +1,119 @@
1
+ ######
2
+ # NB: use rackup to startup Sinatra service (see config.ru)
3
+ #
4
+ # e.g. config.ru:
5
+ # require './boot'
6
+ # run LogDb::Server
7
+
8
+
9
+ # 3rd party libs/gems
10
+
11
+ require 'sinatra/base'
12
+
13
+
14
+ # our own code
15
+
16
+
17
+ # require 'logutils'
18
+ # require 'logutils/db'
19
+
20
+
21
+
22
+ module BeerDb
23
+
24
+ class Server < Sinatra::Base
25
+
26
+ def self.banner
27
+ "beerdb-service #{BeerDb::VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] on Sinatra/#{Sinatra::VERSION} (#{ENV['RACK_ENV']})"
28
+ end
29
+
30
+ PUBLIC_FOLDER = "#{BeerDb.root}/lib/beerdb/server/public"
31
+ VIEWS_FOLDER = "#{BeerDb.root}/lib/beerdb/server/views"
32
+
33
+ puts "[debug] beerdb-service - setting public folder to: #{PUBLIC_FOLDER}"
34
+ puts "[debug] beerdb-service - setting views folder to: #{VIEWS_FOLDER}"
35
+
36
+ set :public_folder, PUBLIC_FOLDER # set up the static dir (with images/js/css inside)
37
+ set :views, VIEWS_FOLDER # set up the views dir
38
+
39
+ set :static, true # set up static file routing
40
+
41
+ #####################
42
+ # Models
43
+
44
+ include BeerDb::Models
45
+
46
+ ##################
47
+ # Helpers
48
+
49
+ helpers do
50
+ def path_prefix
51
+ request.env['SCRIPT_NAME']
52
+ end
53
+ end
54
+
55
+ ##############################################
56
+ # Controllers / Routing / Request Handlers
57
+
58
+ get '/' do
59
+ erb :index
60
+ end
61
+
62
+ get '/d*' do
63
+ erb :debug
64
+ end
65
+
66
+ get '/beer/:key' do |key|
67
+ beer = Beer.find_by_key!( key )
68
+
69
+ brewery = {}
70
+ if beer.brewery.present?
71
+ brewery = { key: beer.brewery.key, title: beer.brewery.title }
72
+ end
73
+
74
+ data = { beer: { key: beer.key, title: beer.title, abv: beer.abv, srm: beer.color, og: beer.plato },
75
+ brewery: brewery }
76
+
77
+ json_or_jsonp( data )
78
+ end
79
+
80
+
81
+ get '/brewery/:key' do |key|
82
+ brewery = Brewery.find_by_key!( key )
83
+
84
+ beers = []
85
+ brewery.beers.each do |b|
86
+ beers << { key: b.key, title: b.title }
87
+ end
88
+
89
+ data = { brewery: { key: brewery.key, title: brewery.title }, beers: beers }
90
+
91
+ json_or_jsonp( data )
92
+ end
93
+
94
+
95
+ ### helper for json or jsonp response (depending on callback para)
96
+
97
+ private
98
+ def json_or_jsonp( data )
99
+ callback = params.delete('callback')
100
+ response = ''
101
+
102
+ if callback
103
+ content_type :js
104
+ response = "#{callback}(#{data.to_json})"
105
+ else
106
+ content_type :json
107
+ response = data.to_json
108
+ end
109
+
110
+ response
111
+ end
112
+
113
+
114
+ end # class Server
115
+ end # module BeerDb
116
+
117
+
118
+ # say hello
119
+ puts BeerDb::Server.banner
@@ -1,4 +1,4 @@
1
1
 
2
2
  module BeerDb
3
- VERSION = '0.2.0'
3
+ VERSION = '0.3.0'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: beerdb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-03-30 00:00:00.000000000 Z
12
+ date: 2013-04-07 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
16
- requirement: &83368970 !ruby/object:Gem::Requirement
16
+ requirement: &75206180 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *83368970
24
+ version_requirements: *75206180
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: worlddb
27
- requirement: &83368740 !ruby/object:Gem::Requirement
27
+ requirement: &75205960 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.6'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *83368740
35
+ version_requirements: *75205960
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: commander
38
- requirement: &83368520 !ruby/object:Gem::Requirement
38
+ requirement: &75205740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 4.1.3
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *83368520
46
+ version_requirements: *75205740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rdoc
49
- requirement: &83368300 !ruby/object:Gem::Requirement
49
+ requirement: &75205520 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '3.10'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *83368300
57
+ version_requirements: *75205520
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: hoe
60
- requirement: &84239690 !ruby/object:Gem::Requirement
60
+ requirement: &75205300 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '3.3'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *84239690
68
+ version_requirements: *75205300
69
69
  description: beerdb - beer.db command line tool
70
70
  email: tobedone@googlegroups.com
71
71
  executables:
@@ -93,6 +93,13 @@ files:
93
93
  - lib/beerdb/models/tag.rb
94
94
  - lib/beerdb/reader.rb
95
95
  - lib/beerdb/schema.rb
96
+ - lib/beerdb/server.rb
97
+ - lib/beerdb/server/public/style.css
98
+ - lib/beerdb/server/views/_debug.erb
99
+ - lib/beerdb/server/views/_version.erb
100
+ - lib/beerdb/server/views/debug.erb
101
+ - lib/beerdb/server/views/index.erb
102
+ - lib/beerdb/server/views/layout.erb
96
103
  - lib/beerdb/stats.rb
97
104
  - lib/beerdb/version.rb
98
105
  homepage: https://github.com/geraldb/beer.db.ruby