jsend_wrapper-rails 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2aec426a71e880af5186aed2415ca18b84577f7
4
- data.tar.gz: 5fe8e2310b6ea9d72d6a5f9ab8207a6c26fc5354
3
+ metadata.gz: 321056c9ec61f7c53a5094e3c95a9871858dbc41
4
+ data.tar.gz: 36d9de6dd83e21e85ff64fa77496abbcd9496ab3
5
5
  SHA512:
6
- metadata.gz: 0c91c8f286be617c60ee2ebbbac8f54871fa0242f90cc65a312ee01a040531d1b5de50f175540e20863e6cd085ace5b7c5f8f4e25953d13259a552fc46efd88e
7
- data.tar.gz: ad1c3f2f9478f71bfe46e81f350378128ebe759d58216ab1b604e2a683c0afe3fe1371e93dd1683488ff7a1cb2ce39c797ce2246cbda83f301b5a318a71e50e4
6
+ metadata.gz: f97f06fa6e474260d8189bf7c97ae326dc4614d2e64d5d2d51a3545c57b5d9e6fbd8c35e8969ede4d59d29795eee05018cc720620cc5bfdac9fdd535f7f1caab
7
+ data.tar.gz: 3d03152cc8c4e418e43cc5d6f0d67659f2ff15f783c163f9fbba4f337ae736568a92b4b367ae6e6cbd34e296473431aee80197decc1ccf9120f7be7fa858575a
data/README.md CHANGED
@@ -81,7 +81,7 @@ json.year 1999
81
81
 
82
82
  #### Handling Errors
83
83
 
84
- You can use `rescue_from` to automatically handle errors:
84
+ You can use `rescue_from` to automatically handle errors:
85
85
 
86
86
  ```ruby
87
87
  rescue_from ActiveRecord::RecordNotFound do
@@ -102,7 +102,10 @@ end
102
102
  }
103
103
  ```
104
104
 
105
- ## JSend Spec
105
+ ## JSend Specification
106
+
107
+ *This section is copied from [omniti.com](http://labs.omniti.com/labs/jsend)
108
+ under via a modified BSD License (see below).*
106
109
 
107
110
  * **What?** - Put simply, JSend is a specification that lays down some rules
108
111
  for how [JSON](http://json.org) responses from web servers should be
@@ -118,7 +121,7 @@ end
118
121
  of responses. Also, this helps promote happiness and unity between backend
119
122
  developers and frontend designers, as everyone can come to expect a common
120
123
  approach to interacting with one another.
121
- * **Hold on now, aren't there already specs for this kind of thing?** -
124
+ * **Hold on now, aren't there already specs for this kind of thing?** -
122
125
  Well... no. While there are a few handy specifications for dealing with JSON
123
126
  data, most notably [Douglas Crockford](http://www.crockford.com/)'s
124
127
  [JSONRequest](http://www.json.org/JSONRequest.html) proposal, there's nothing
@@ -171,7 +174,7 @@ required and optional keys for each type:
171
174
  <tr>
172
175
  <td>fail</td>
173
176
  <td>
174
- There was a problem with the data submitted, or some pre-condition of
177
+ There was a problem with the data submitted, or some pre-condition of
175
178
  the API call wasn't satisfied.
176
179
  </td>
177
180
  <td>status, message</td>
@@ -180,7 +183,7 @@ required and optional keys for each type:
180
183
  <tr>
181
184
  <td>error</td>
182
185
  <td>
183
- An error occurred in processing the request, i.e. an exception was
186
+ An error occurred in processing the request, i.e. an exception was
184
187
  thrown.
185
188
  </td>
186
189
  <td>status, message</td>
@@ -219,7 +222,7 @@ simple envelope for the results, using the {{{data}}} key, as in the following:
219
222
  "status": "success",
220
223
  "data": {
221
224
  "id": 2,
222
- "title": "Another blog post",
225
+ "title": "Another blog post",
223
226
  "body": "More content"
224
227
  }
225
228
  }
@@ -263,8 +266,8 @@ Required keys:
263
266
  **`GET /posts.json`**:
264
267
  ```json
265
268
  {
266
- "status" : "error",
267
- "message" : "A title is required"
269
+ "status": "error",
270
+ "message": "A title is required"
268
271
  }
269
272
  ```
270
273
 
@@ -277,7 +280,7 @@ Optional keys:
277
280
  * code: A numeric code corresponding to the error, if applicable
278
281
  * data: A generic container for any other information about the error, i.e. the
279
282
  conditions that caused the error, stack traces, etc.
280
-
283
+
281
284
  ### Whither HTTP?
282
285
 
283
286
  But wait, you ask, doesn't HTTP already provide a way to communicate response
@@ -20,7 +20,7 @@ module JsendWrapper
20
20
  class Railtie < ::Rails::Railtie
21
21
  initializer 'jsend_wrapper-rails.initialization' do
22
22
  if JsendWrapper::Rails.jbuilder_available?
23
- JsendWrapper::Rails.install_template
23
+ JsendWrapper::Rails.install_template_handler
24
24
  end
25
25
  JsendWrapper::Rails.install_render_option
26
26
  end
@@ -32,14 +32,16 @@ module JsendWrapper
32
32
  require 'jbuilder'
33
33
  true
34
34
  rescue LoadError
35
- STDERR.puts 'WARN: Please include the "jbuilder" gem for .jsend templates'
35
+ $stderr.puts 'WARN: Please include the "jbuilder" gem for .jsend templates'
36
36
  false
37
37
  end
38
38
 
39
39
  # Install a "template handler" for .jsend view files. These files will be
40
40
  # processed with {Jbuilder}, just like .jbuilder view files, but the result
41
41
  # will be wrapped in a "success" JSend wrapper.
42
- def self.install_template
42
+ def self.install_template_handler
43
+ require 'jsend_wrapper/rails/template_handler'
44
+
43
45
  ActionView::Template.register_template_handler \
44
46
  :jsend, JsendWrapper::Rails::TemplateHandler
45
47
  end
@@ -47,7 +49,7 @@ module JsendWrapper
47
49
 
48
50
  # Adds the "jsend:" option to {ActiveController::Base#render}
49
51
  def self.install_render_option
50
- require_relative 'render_option'
52
+ require 'jsend_wrapper/rails/render_option'
51
53
 
52
54
  ActionController::Renderers.add :jsend do |value, _|
53
55
  self.content_type ||= Mime::JSON
@@ -13,7 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative '../renderers'
16
+ require 'active_support/core_ext/hash/slice'
17
+ require 'jsend_wrapper/renderers'
17
18
 
18
19
  module JsendWrapper
19
20
  # Parses the "render jsend: {...}" command. Valid forms:
@@ -22,7 +22,7 @@ module JsendWrapper
22
22
 
23
23
  <<-RUBY
24
24
  content = instance_eval #{json.inspect}
25
- JsendWrapper::Handlers::Success.new(self).render content
25
+ JsendWrapper::Rails::TemplateHandler.new(self).render content
26
26
  RUBY
27
27
  end
28
28
 
@@ -13,13 +13,13 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Error. JSend Errors have two required
20
20
  # elements (status, message) and two optional elements (code, data).
21
21
  class ErrorRenderer < Renderer
22
- attr_accessor :message, :has_code, :code, :has_data, :data
22
+ attr_reader :message, :has_code, :code, :has_data, :data
23
23
 
24
24
  alias_method :code?, :has_code
25
25
  alias_method :data?, :has_data
@@ -30,18 +30,18 @@ module JsendWrapper
30
30
  #@option optional [Object] :data a generic container for any other
31
31
  # information about the error
32
32
  def initialize(message, optional)
33
- self.message = message.to_s
34
- self.has_code = optional.key? :code
35
- self.has_data = optional.key? :data
33
+ @message = message.to_s
34
+ @has_code = optional.key? :code
35
+ @has_data = optional.key? :data
36
36
 
37
- self.code = parse_code optional[:code] if code?
38
- self.data = optional[:data] if data?
37
+ @code = parse_code optional[:code] if code?
38
+ @data = optional[:data] if data?
39
39
  end
40
40
 
41
41
 
42
42
  #@return [String] the rendered JSON
43
43
  def call
44
- %[{"status":"error","message":#{message.to_json}#{optional}}]
44
+ %[{"status":"error","message":#{message.inspect}#{optional}}]
45
45
  end
46
46
 
47
47
 
@@ -49,11 +49,8 @@ module JsendWrapper
49
49
 
50
50
 
51
51
  def parse_code(code)
52
- if code.respond_to? :to_i
53
- code.to_i
54
- else
55
- raise '"code" must respond to #to_i'
56
- end
52
+ raise '"code" must respond to #to_i' unless code.respond_to? :to_i
53
+ code.to_i
57
54
  end
58
55
 
59
56
 
@@ -13,16 +13,16 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Failure. JSend Failures have two required
20
20
  # elements (status, data).
21
21
  class FailRenderer < Renderer
22
- attr_accessor :data
22
+ attr_reader :data
23
23
 
24
- def initialize(obj)
25
- self.data = obj
24
+ def initialize(data)
25
+ @data = data
26
26
  end
27
27
 
28
28
  def call
@@ -13,6 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
+ require 'json'
17
+
16
18
  module JsendWrapper
17
19
  class Renderer
18
20
  protected
@@ -23,7 +25,7 @@ module JsendWrapper
23
25
  elsif obj.nil?
24
26
  'null'
25
27
  else
26
- obj.to_s.to_json
28
+ JSON.dump obj
27
29
  end
28
30
  end
29
31
  end
@@ -13,16 +13,16 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderer'
16
+ require 'jsend_wrapper/renderers/renderer'
17
17
 
18
18
  module JsendWrapper
19
19
  # Wraps the given message in a JSend Success. JSend Successs have two required
20
20
  # elements (status, data).
21
21
  class SuccessRenderer < Renderer
22
- attr_accessor :data
22
+ attr_reader :data
23
23
 
24
- def initialize(obj)
25
- self.data = obj
24
+ def initialize(data)
25
+ @data = data
26
26
  end
27
27
 
28
28
  def call
@@ -13,6 +13,6 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- require_relative 'renderers/success_renderer'
17
- require_relative 'renderers/fail_renderer'
18
- require_relative 'renderers/error_renderer'
16
+ require 'jsend_wrapper/renderers/success_renderer'
17
+ require 'jsend_wrapper/renderers/fail_renderer'
18
+ require 'jsend_wrapper/renderers/error_renderer'
@@ -13,8 +13,8 @@
13
13
  #
14
14
  # You should have received a copy of the GNU General Public License
15
15
  # along with this program. If not, see <http://www.gnu.org/licenses/>.
16
- JsendWrapper = Module.new
17
-
18
16
  if defined? Rails
19
- require_relative 'jsend_wrapper/rails/railtie'
17
+ require 'jsend_wrapper/rails/railtie'
18
+ else
19
+ $stderr.puts 'WARN: Rails is not defined! jsend_wrapper-rails cannot load.'
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsend_wrapper-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Sangster
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-21 00:00:00.000000000 Z
11
+ date: 2014-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pry