beerdb 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
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