nimbu 0.3 → 0.4

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