nimbu 0.3 → 0.4

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/lib/nimbu/auth.rb CHANGED
@@ -45,11 +45,15 @@ class Nimbu::Auth
45
45
  end
46
46
 
47
47
  def get_nimbu_host
48
- get_configuration[:hostname]
48
+ if Nimbu.development
49
+ get_configuration[:development]
50
+ else
51
+ get_configuration[:hostname]
52
+ end
49
53
  end
50
54
 
51
55
  def get_nimbu_theme
52
- get_configuration[:theme]
56
+ get_configuration[:theme] || "default-theme"
53
57
  end
54
58
 
55
59
  def get_configuration # :nodoc:
data/lib/nimbu/client.rb CHANGED
@@ -233,7 +233,7 @@ class Nimbu::Client
233
233
  uri = URI.parse(given)
234
234
  uri.host ||= host.host
235
235
  uri.scheme ||= host.scheme || "http"
236
- uri.path = "/api/v1" + ((uri.path[0..0] == "/") ? uri.path : "/#{uri.path}")
236
+ uri.path = "/api/v2" + ((uri.path[0..0] == "/") ? uri.path : "/#{uri.path}")
237
237
  uri.port = host.port if full_host =~ /\:\d+/
238
238
  uri.to_s
239
239
  end
@@ -16,6 +16,10 @@ class Nimbu::Command::Base
16
16
  def initialize(args=[], options={})
17
17
  @args = args
18
18
  @options = options
19
+
20
+ Nimbu.debug = args.include?("--debug")
21
+ Nimbu.development = args.include?("--development") || args.include?("--dev")
22
+ Nimbu.v2 = args.include?("--v2")
19
23
  end
20
24
 
21
25
  def app
@@ -20,7 +20,6 @@ class Nimbu::Command::Server < Nimbu::Command::Base
20
20
  else
21
21
  no_haml = args.include?("--no-haml")
22
22
  no_compass = args.include?("--no-compass")
23
- Nimbu.debug = args.include?("--debug")
24
23
 
25
24
  if !(File.exists?(File.join(Dir.pwd,'haml')) && File.directory?(File.join(Dir.pwd,'haml')))
26
25
  no_haml = true
@@ -29,12 +28,14 @@ class Nimbu::Command::Server < Nimbu::Command::Base
29
28
 
30
29
  puts white("\nStarting up Nimbu Server" + (no_compass ? "" : " + Compass Watcher") + (no_haml ? "" : " + HAML Compiler") + "...")
31
30
  puts green(
32
- " _ ___ __ \n" +
31
+ "\n _ ___ __ \n" +
33
32
  " / | / (_)____ ___ / /_ __ __\n" +
34
33
  " / |/ / // __ `__ \\/ __ \\/ / / /\n" +
35
34
  " / /| / // / / / / / /_/ / /_/ / \n" +
36
35
  " /_/ |_/_//_/ /_/ /_/_.___/\\__,_/ \n")
37
36
 
37
+ puts green("\nConnnected to '#{Nimbu::Auth.host}', using '#{Nimbu::Auth.theme}' theme.\n")
38
+
38
39
  rd1, wr1 = IO::pipe
39
40
  rd2, wr2 = IO::pipe
40
41
  rd3, wr3 = IO::pipe
@@ -14,12 +14,11 @@ module Nimbu
14
14
  include Term::ANSIColor
15
15
  register Sinatra::MultiRoute
16
16
 
17
- enable :sessions
18
-
19
17
  configure :development do
20
18
  register Sinatra::Reloader
21
19
  end
22
20
 
21
+ set :method_override, true
23
22
  set :static, true # set up static file routing
24
23
  set :public_folder, Dir.pwd # set up the static dir (with images/js/css inside)
25
24
 
@@ -57,14 +56,60 @@ module Nimbu
57
56
  )
58
57
  puts green("#{method.upcase} #{request.fullpath}")
59
58
 
60
- if request.post? || request.put? || request.delete?
61
- ##### POST / PUT / DELET #####
62
- path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
59
+ # if request.post? || request.put? || request.delete?
60
+ # ##### POST / PUT / DELET #####
61
+ # path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
62
+ # begin
63
+ # response = nimbu.post_request({:path => path, :extra => params, :method => method, :client_session => session, :ajax => request.xhr? })
64
+ # puts "RESPONSE: #{response}" if Nimbu.debug
65
+ # result = json_decode(response)
66
+ # parse_session(result)
67
+ # rescue Exception => e
68
+ # if e.respond_to?(:http_body)
69
+ # return e.http_body
70
+ # else
71
+ # raise e
72
+ # end
73
+ # end
74
+
75
+ # session[:flash] = result["flash"] if result["flash"]
76
+ # if request.xhr?
77
+ # if !result["json"].nil?
78
+ # puts "JSON: #{result["json"]["data"]}" if Nimbu.debug
79
+ # status result["json"]["status"].to_i
80
+ # return json(result["json"]["data"], :encoder => :to_json, :content_type => :js)
81
+ # end
82
+ # else
83
+ # redirect result["redirect_to"] and return if result["redirect_to"]
84
+ # end
85
+ # else
86
+ # # First get the template name and necessary subtemplates
87
+ # ##### GET #####
88
+ # path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
89
+ # begin
90
+ # result = json_decode(nimbu.get_template({:path => path, :extra => params, :method => "get", :extra => params, :client_session => session, :ajax => request.xhr? }))
91
+ # puts result if Nimbu.debug
92
+ # parse_session(result)
93
+ # rescue Exception => e
94
+ # return e.http_body
95
+ # end
96
+
97
+ # redirect result["redirect_to"] and return if result["redirect_to"]
98
+ # end
99
+ ### GET THE TEMPLATES ###
100
+ path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
101
+ if !request.xhr?
63
102
  begin
64
- response = nimbu.post_request({:path => path, :extra => params, :method => method, :client_session => session, :ajax => request.xhr? })
65
- puts "RESPONSE: #{response}" if Nimbu.debug
66
- result = json_decode(response)
67
- parse_session(result)
103
+ params = ({} || params).merge({:simulator => {
104
+ :host => request.host,
105
+ :port => request.port,
106
+ :path => path,
107
+ :method => method,
108
+ :session => session,
109
+ :headers => request.env.to_json,
110
+ }})
111
+ result = json_decode(nimbu.get_template(params))
112
+ puts result if Nimbu.debug
68
113
  rescue Exception => e
69
114
  if e.respond_to?(:http_body)
70
115
  return e.http_body
@@ -72,100 +117,90 @@ module Nimbu
72
117
  raise e
73
118
  end
74
119
  end
75
-
76
- session[:flash] = result["flash"] if result["flash"]
77
- if request.xhr?
78
- if !result["json"].nil?
79
- puts "JSON: #{result["json"]["data"]}" if Nimbu.debug
80
- status result["json"]["status"].to_i
81
- return json(result["json"]["data"], :encoder => :to_json, :content_type => :js)
82
- end
83
- else
84
- redirect result["redirect_to"] and return if result["redirect_to"]
85
- end
86
- else
87
- # First get the template name and necessary subtemplates
88
- ##### GET #####
89
- path = request.path == "/" ? request.path : request.path.gsub(/\/$/,'')
90
- begin
91
- result = json_decode(nimbu.get_template({:path => path, :extra => params, :method => "get", :extra => params, :client_session => session, :ajax => request.xhr? }))
92
- puts result if Nimbu.debug
93
- parse_session(result)
94
- rescue Exception => e
95
- return e.http_body
120
+
121
+ if result["template"].nil?
122
+ raise Sinatra::NotFound
96
123
  end
97
124
 
98
- redirect result["redirect_to"] and return if result["redirect_to"]
99
- end
100
-
101
- if result["template"].nil?
102
- raise Sinatra::NotFound
103
- end
104
-
105
- template = result["template"].gsub(/buddha$/,'liquid')
106
- # Then render everything
107
- puts green(" => using template '#{template}'")
108
- # Read the template file
109
- template_file = File.join(Dir.pwd,'templates',template)
110
- if File.exists?(template_file)
111
- template_code = IO.read(template_file)
112
- else
113
- puts red("Layout file '#{template_file}' is missing...")
114
- return render_missing(File.join('templates',template),'template')
115
- end
125
+ unless result["template"] == "<<<< REDIRECT >>>>"
126
+ template = result["template"].gsub(/buddha$/,'liquid')
127
+ # Then render everything
128
+ puts green(" => using template '#{template}'")
129
+ # Read the template file
130
+ template_file = File.join(Dir.pwd,'templates',template)
131
+ if File.exists?(template_file)
132
+ template_code = IO.read(template_file)
133
+ else
134
+ puts red("Layout file '#{template_file}' is missing...")
135
+ return render_missing(File.join('templates',template),'template')
136
+ end
116
137
 
117
- if template_code=~ /You have an Error in your HAML code/
118
- return template_code
119
- end
138
+ if template_code=~ /You have an Error in your HAML code/
139
+ return template_code
140
+ end
120
141
 
121
- # Parse template file for a special layout
122
- search = Regexp.new("\{\% layout \'(.*)\' \%\}")
123
- if search =~ template_code
124
- # There seems to be a special layout?
125
- layout = $1
126
- else
127
- layout = 'default.liquid'
128
- end
142
+ # Parse template file for a special layout
143
+ search = Regexp.new("\{\% layout \'(.*)\' \%\}")
144
+ if search =~ template_code
145
+ # There seems to be a special layout?
146
+ layout = $1
147
+ else
148
+ layout = 'default.liquid'
149
+ end
129
150
 
130
- # Read the layout file
131
- layout_file = File.join(Dir.pwd,'layouts',layout)
132
- if File.exists?(layout_file)
133
- layout_code = IO.read(layout_file)
134
- else
135
- puts red("Layout file '#{layout_file}' is missing...")
136
- return render_missing(File.join('layouts',layout),'layout')
137
- end
151
+ # Read the layout file
152
+ layout_file = File.join(Dir.pwd,'layouts',layout)
153
+ if File.exists?(layout_file)
154
+ layout_code = IO.read(layout_file)
155
+ else
156
+ puts red("Layout file '#{layout_file}' is missing...")
157
+ return render_missing(File.join('layouts',layout),'layout')
158
+ end
138
159
 
139
- puts green(" using layout '#{layout}'")
160
+ puts green(" using layout '#{layout}'")
140
161
 
141
- begin
142
- snippets = parse_snippets(template_code)
143
- snippets = parse_snippets(layout_code,snippets)
144
- rescue Exception => e
145
- # If there is a snippet missing, we raise an error
146
- puts red("Snippet file '#{e.message}' is missing...")
147
- return render_missing(e.message,'snippet')
148
- end
162
+ begin
163
+ snippets = parse_snippets(template_code)
164
+ snippets = parse_snippets(layout_code,snippets)
165
+ rescue Exception => e
166
+ # If there is a snippet missing, we raise an error
167
+ puts red("Snippet file '#{e.message}' is missing...")
168
+ return render_missing(e.message,'snippet')
169
+ end
149
170
 
150
- if snippets.any?
151
- puts green(" using snippets '#{snippets.keys.join('\', \'')}'")
171
+ if snippets.any?
172
+ puts green(" using snippets '#{snippets.keys.join('\', \'')}'")
173
+ end
174
+ end
175
+ else
176
+ template_file = ""
152
177
  end
153
178
 
154
179
  # Send the templates to the browser
155
180
  begin
156
- results = json_decode(nimbu.get_request({:path => path, :template => template_code, :layout => layout_code, :snippets => snippets, :extra => params, :method => method, :client_session => session, :ajax => request.xhr? }))
157
- puts result if Nimbu.debug
158
- parse_session(results)
159
- html = results["result"]
181
+ params = ({} || params).merge({:simulator => {
182
+ :path => path,
183
+ :template => template_code,
184
+ :host => request.host,
185
+ :port => request.port,
186
+ :layout => layout_code,
187
+ :snippets => snippets,
188
+ :method => method,
189
+ :session => session,
190
+ :headers => request.env.to_json,
191
+ }})
192
+ results = json_decode(nimbu.get_request(params))
193
+ puts results["status"] if Nimbu.debug
194
+ puts results["headers"] if Nimbu.debug
195
+ puts results["body"].gsub(/\n/,'') if Nimbu.debug
196
+
197
+ status results["status"]
198
+ headers results["headers"] unless results["headers"] == ""
199
+ body results["body"]
160
200
  rescue RestClient::Exception => error
201
+ puts "Error! #{error.http_body}"
161
202
  html = error.http_body
162
- end
163
-
164
- if request.xhr?
165
- return results["json"]
166
- else
167
- return "#{html}"
168
- end
203
+ end
169
204
  end
170
205
 
171
206
  error 404 do
@@ -226,19 +261,19 @@ module Nimbu
226
261
  Nimbu::Auth.client
227
262
  end
228
263
 
229
- def parse_session(response)
230
- if !response["client_session"].nil?
231
- response["client_session"].each do |key,value|
232
- session[key.to_sym] = value
233
- #puts "Session: :#{key} => #{value}" if Nimbu.debug
234
- end
235
- session.each do |key,value|
236
- if !response["client_session"].has_key?(key.to_s)
237
- session.delete(key)
238
- end
239
- end
240
- end
241
- end
264
+ # def parse_session(response)
265
+ # if !response["session"].nil?
266
+ # response["session"].each do |key,value|
267
+ # session[key.to_sym] = value
268
+ # #puts "Session: :#{key} => #{value}" if Nimbu.debug
269
+ # end
270
+ # session.each do |key,value|
271
+ # if !response["session"].has_key?(key.to_s)
272
+ # session.delete(key)
273
+ # end
274
+ # end
275
+ # end
276
+ # end
242
277
 
243
278
  def parse_snippets(code, snippets = {})
244
279
  # Parse template file for snippets
data/lib/nimbu/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Nimbu
2
- VERSION = "0.3"
2
+ VERSION = "0.4"
3
3
  end
data/lib/nimbu.rb CHANGED
@@ -9,4 +9,20 @@ module Nimbu
9
9
  def self.debug
10
10
  @@debug
11
11
  end
12
+
13
+ def self.development=(value)
14
+ @@development = value
15
+ end
16
+
17
+ def self.development
18
+ @@development
19
+ end
20
+
21
+ def self.v2=(value)
22
+ @@v2 = value
23
+ end
24
+
25
+ def self.v2
26
+ @@v2
27
+ end
12
28
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nimbu
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.3'
4
+ version: '0.4'
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: 2012-05-20 00:00:00.000000000 Z
12
+ date: 2012-07-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: term-ansicolor
16
- requirement: &70218127116440 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.0.5
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70218127116440
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.5
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rest-client
27
- requirement: &70218127130520 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ~>
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: 1.6.1
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *70218127130520
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.6.1
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: launchy
38
- requirement: &70218127128180 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: 0.3.2
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *70218127128180
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.2
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: rubyzip
49
- requirement: &70218127126060 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *70218127126060
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: sinatra
60
- requirement: &70218127123980 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :runtime
67
87
  prerelease: false
68
- version_requirements: *70218127123980
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: sinatra-contrib
71
- requirement: &70218127137420 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :runtime
78
103
  prerelease: false
79
- version_requirements: *70218127137420
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: compass
82
- requirement: &70218127148300 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :runtime
89
119
  prerelease: false
90
- version_requirements: *70218127148300
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: haml
93
- requirement: &70218127147000 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :runtime
100
135
  prerelease: false
101
- version_requirements: *70218127147000
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: fssm
104
- requirement: &70218127146340 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,10 +149,15 @@ dependencies:
109
149
  version: '0'
110
150
  type: :runtime
111
151
  prerelease: false
112
- version_requirements: *70218127146340
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  - !ruby/object:Gem::Dependency
114
159
  name: thin
115
- requirement: &70218127145540 !ruby/object:Gem::Requirement
160
+ requirement: !ruby/object:Gem::Requirement
116
161
  none: false
117
162
  requirements:
118
163
  - - ! '>='
@@ -120,7 +165,12 @@ dependencies:
120
165
  version: '0'
121
166
  type: :runtime
122
167
  prerelease: false
123
- version_requirements: *70218127145540
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
124
174
  description: Client library and command-line tool to design and manage websites on
125
175
  the Nimbu platform.
126
176
  email:
@@ -169,7 +219,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
219
  version: '0'
170
220
  requirements: []
171
221
  rubyforge_project:
172
- rubygems_version: 1.8.17
222
+ rubygems_version: 1.8.23
173
223
  signing_key:
174
224
  specification_version: 3
175
225
  summary: Client library and CLI to design websites on the Nimbu platform.