print_json_response 1.0

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/History.txt ADDED
@@ -0,0 +1,5 @@
1
+ === 1.0 / ??
2
+
3
+ * Major Enhancement
4
+ * Birthday!
5
+
data/Manifest.txt ADDED
@@ -0,0 +1,6 @@
1
+ History.txt
2
+ Manifest.txt
3
+ README.txt
4
+ Rakefile
5
+ bin/pjr
6
+ lib/print_json_response.rb
data/README.txt ADDED
@@ -0,0 +1,42 @@
1
+ = pjr (print_json_response)
2
+
3
+ * http://github.com/jdunphy/print_json_response
4
+
5
+ == DESCRIPTION
6
+
7
+ A simple script to grab JSON from a URI and view it in a readable manner.
8
+
9
+ == SYNOPSIS:
10
+
11
+ $ pjr "http://someplace.com/someurl.json"
12
+ Retrieving http://someplace.com/someurl.json:
13
+ {
14
+ "what":"oh hey look some pretty-printed json"
15
+ }
16
+
17
+ You can also drop the hostname nonsense when hitting localhost
18
+
19
+ $ pjr "/someurl.json"
20
+ Retrieving http://127.0.0.1:3000/someurl.json:
21
+ {
22
+ "what":"oh hey look some pretty-printed json"
23
+ }
24
+
25
+ Override the base default host of localhost:3000 with a .pjr file.
26
+
27
+ $ cat /Users/jdunphy/.pjr
28
+ default_host:http://localhost:7000
29
+
30
+ pjr can jump into irb, instead of printing json
31
+
32
+ $ pjr -i someurl.json
33
+ Retrieving http://127.0.0.1:3000/someurl.json:
34
+ Loading IRB.
35
+ JSON response is in @response
36
+ irb(main):001:0> @response['what']
37
+ => "oh hey look some pretty-printed json"
38
+
39
+ == INSTALL:
40
+
41
+ * gem install print_json_response
42
+
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.plugin :git
7
+
8
+ Hoe.spec 'print_json_response' do
9
+ developer 'Jacob Dunphy', ''
10
+ end
11
+
12
+ # vim: syntax=Ruby
data/bin/pjr ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'print_json_response'
4
+
5
+ PrintJsonResponse.run
6
+
@@ -0,0 +1,99 @@
1
+ require 'net/http'
2
+ require 'optparse'
3
+ require 'uri'
4
+
5
+ require 'json'
6
+
7
+ class PrintJsonResponse
8
+
9
+ VERSION = '1.0'
10
+
11
+ DEFAULT_HOST = 'http://127.0.0.1:3000'
12
+
13
+ CONFIG_PATH = File.expand_path '~/.pjr'
14
+
15
+ def self.process_args argv
16
+ options = {}
17
+
18
+ op = OptionParser.new do |opts|
19
+ opts.program_name = 'pjr'
20
+ opts.version = VERSION
21
+ opts.banner = <<-BANNER
22
+ Usage: pjr [options] URL [PATH ...]
23
+
24
+ PATH is a path of keys in the JSON document you wish to descend. Given a JSON
25
+ document like:
26
+
27
+ { "a": { "b": ["c", "d"] } }
28
+
29
+ `pjr http://example/json a b` will print ["c", "d"]
30
+
31
+ BANNER
32
+
33
+ opts.on '--[no-]irb', 'Dump the results into @response in IRB' do |value|
34
+ options[:irb] = value
35
+ end
36
+ end
37
+
38
+ op.parse! argv
39
+
40
+ abort op.to_s if argv.empty?
41
+
42
+ url = argv.shift
43
+
44
+ options[:path] = argv
45
+
46
+ return url, options
47
+ end
48
+
49
+ def self.run argv = ARGV
50
+ url, options = process_args argv
51
+
52
+ pjr = new url, options
53
+
54
+ pjr.run
55
+ end
56
+
57
+ def initialize url, options
58
+ unless url =~ /\Ahttp/i then
59
+ url = '/' + url unless url.start_with? '/'
60
+ url = default_host + url
61
+ end
62
+
63
+ @url = URI.parse url
64
+
65
+ @irb = options[:irb]
66
+ @path = options[:path]
67
+ end
68
+
69
+ def default_host
70
+ if File.exist? CONFIG_PATH and
71
+ File.read(CONFIG_PATH) =~ /default_host:(.+)/i then
72
+ $1.strip
73
+ else
74
+ DEFAULT_HOST
75
+ end
76
+ end
77
+
78
+ def run
79
+ $stderr.puts "Retrieving #{@url}:" if $stdout.tty?
80
+
81
+ resp = Net::HTTP.get_response @url
82
+ json = JSON.parse resp.body
83
+
84
+ json = @path.inject json do |data, item| data[item] end
85
+
86
+ if @irb then
87
+ require 'irb'
88
+ @response = json
89
+ puts "Loading IRB."
90
+ puts "JSON response is in @response"
91
+ IRB.start
92
+ else
93
+ require 'pp'
94
+ puts json.pretty_inspect
95
+ end
96
+ end
97
+
98
+ end
99
+
metadata ADDED
@@ -0,0 +1,97 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: print_json_response
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 1
7
+ - 0
8
+ version: "1.0"
9
+ platform: ruby
10
+ authors:
11
+ - Jacob Dunphy
12
+ autorequire:
13
+ bindir: bin
14
+ cert_chain: []
15
+
16
+ date: 2010-07-23 00:00:00 -07:00
17
+ default_executable:
18
+ dependencies:
19
+ - !ruby/object:Gem::Dependency
20
+ name: rubyforge
21
+ prerelease: false
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ segments:
27
+ - 2
28
+ - 0
29
+ - 4
30
+ version: 2.0.4
31
+ type: :development
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: hoe
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 2
42
+ - 6
43
+ - 1
44
+ version: 2.6.1
45
+ type: :development
46
+ version_requirements: *id002
47
+ description: A simple script to grab JSON from a URI and view it in a readable manner.
48
+ email:
49
+ - ""
50
+ executables:
51
+ - pjr
52
+ extensions: []
53
+
54
+ extra_rdoc_files:
55
+ - History.txt
56
+ - Manifest.txt
57
+ - README.txt
58
+ files:
59
+ - History.txt
60
+ - Manifest.txt
61
+ - README.txt
62
+ - Rakefile
63
+ - bin/pjr
64
+ - lib/print_json_response.rb
65
+ has_rdoc: true
66
+ homepage: http://github.com/jdunphy/print_json_response
67
+ licenses: []
68
+
69
+ post_install_message:
70
+ rdoc_options:
71
+ - --main
72
+ - README.txt
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ segments:
80
+ - 0
81
+ version: "0"
82
+ required_rubygems_version: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ segments:
87
+ - 0
88
+ version: "0"
89
+ requirements: []
90
+
91
+ rubyforge_project: print_json_response
92
+ rubygems_version: 1.3.6
93
+ signing_key:
94
+ specification_version: 3
95
+ summary: A simple script to grab JSON from a URI and view it in a readable manner.
96
+ test_files: []
97
+