sinatra-jsonp 0.1

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.
Files changed (3) hide show
  1. data/README.md +33 -0
  2. data/lib/sinatra/jsonp.rb +23 -0
  3. metadata +87 -0
data/README.md ADDED
@@ -0,0 +1,33 @@
1
+ Sinatra::JSONP
2
+ =================
3
+
4
+ JSONP output for [Sinatra](http://sinatrarb.com). Automatically detects callback params
5
+ and returns proper JSONP output. If no callback params where detected returns plain JSON.
6
+ Works with [jQuery](http://jquery.com) [jQuery.getJSON](http://api.jquery.com/jQuery.getJSON/) function out of the box.
7
+
8
+ Installation
9
+ ------------
10
+
11
+ gem install sinatra-jsonp
12
+
13
+ Usage
14
+ -----
15
+
16
+ Simple example:
17
+
18
+ require "sinatra"
19
+ require "sinatra/jsonp"
20
+
21
+
22
+ get '/users/:user' do
23
+ user = User[params[:user]]
24
+ JSONP user
25
+ end
26
+
27
+ # or define your own callback as second param
28
+
29
+ get '/' do
30
+ data = ["hello","hi","hallo"]
31
+ jsonp data, 'functionA'
32
+ end
33
+
@@ -0,0 +1,23 @@
1
+ require 'sinatra/base'
2
+ require 'json'
3
+
4
+ module Sinatra
5
+ module Jsonp
6
+ # Format data according to request JSON/JSONP
7
+ def jsonp(obj, callback = nil)
8
+ data = obj.to_json
9
+ ['callback','jscallback','jsonp'].each do |x|
10
+ callback = params.delete(x) if not callback
11
+ end
12
+ if callback
13
+ content_type :js
14
+ response = "#{callback}(#{data})"
15
+ else
16
+ response = data
17
+ end
18
+ response
19
+ end
20
+ alias JSONP jsonp
21
+ end
22
+ helpers Jsonp
23
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: sinatra-jsonp
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ version: "0.1"
9
+ platform: ruby
10
+ authors:
11
+ - Serg Podtynnyi
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2010-05-03 00:00:00 +04:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: sinatra
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ segments:
27
+ - 1
28
+ - 0
29
+ version: "1.0"
30
+ type: :runtime
31
+ version_requirements: *id001
32
+ - !ruby/object:Gem::Dependency
33
+ name: json
34
+ prerelease: false
35
+ requirement: &id002 !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ~>
38
+ - !ruby/object:Gem::Version
39
+ segments:
40
+ - 1
41
+ - 4
42
+ version: "1.4"
43
+ type: :runtime
44
+ version_requirements: *id002
45
+ description: Simple extension to produce JSONP/JSON output
46
+ email: serg.podtynnyi@gmail.com
47
+ executables: []
48
+
49
+ extensions: []
50
+
51
+ extra_rdoc_files: []
52
+
53
+ files:
54
+ - lib/sinatra/jsonp.rb
55
+ - README.md
56
+ has_rdoc: true
57
+ homepage: http://github.com/shtirlic/sinatra-jsonp
58
+ licenses: []
59
+
60
+ post_install_message:
61
+ rdoc_options: []
62
+
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ segments:
70
+ - 0
71
+ version: "0"
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ segments:
77
+ - 0
78
+ version: "0"
79
+ requirements: []
80
+
81
+ rubyforge_project:
82
+ rubygems_version: 1.3.6
83
+ signing_key:
84
+ specification_version: 3
85
+ summary: Simple extension to produce JSONP/JSON output
86
+ test_files: []
87
+