datapost 0.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 +12 -0
  2. data/bin/datapost +61 -0
  3. metadata +98 -0
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # DataPost
2
+
3
+ Read json from STDIN and post it to a designated REST endpoint.
4
+
5
+ ## Install
6
+
7
+ gem install datapost
8
+
9
+ ## Usage
10
+
11
+ vspheremonitor | jsonpost http://superapp.example.net:8080/post/json
12
+
data/bin/datapost ADDED
@@ -0,0 +1,61 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ begin
4
+ require 'json'
5
+ require 'net/http'
6
+ require 'rest_client'
7
+ require 'cri'
8
+ rescue LoadError => e
9
+ puts "Unable to load library: #{e}"
10
+ exit 1
11
+ end
12
+
13
+ unless ARGV[0]
14
+ puts "need url as first argument"
15
+ exit 2
16
+ end
17
+
18
+ module DataPost
19
+ module_function
20
+
21
+ def post(url)
22
+ body = ''
23
+ body += STDIN.read
24
+ jsondata = JSON.parse(body)
25
+ begin
26
+ raise "jsondata is not of class Hash. Is #{jsondata.class}" unless jsondata.is_a? Hash
27
+ RestClient.post(url, jsondata.to_json, :content_type => :json, :accept => :json )
28
+ rescue => e
29
+ puts "something broke:"
30
+ puts e.message
31
+ puts e.backtrace.inspect
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ command = Cri::Command.define do
38
+ name __FILE__
39
+ usage __FILE__ + ' [options]'
40
+ summary 'Post json data to a REST endpoint.'
41
+
42
+ flag :h, :help, 'show help for this command' do |value, cmd|
43
+ puts cmd.help
44
+ exit 0
45
+ end
46
+ flag :v, :verbose, 'Be less quiet'
47
+ option :u, :url, 'URL for REST endpoint', :argument => :required
48
+
49
+ run do |opts, args, cmd|
50
+ starttime = Time.now
51
+ puts "Initializing at #{starttime}" if opts[:verbose]
52
+
53
+ endpoint = opts[:url] || ARGV[0]
54
+ puts "posting to #{endpoint}" if opts[:verbose]
55
+
56
+ DataPost.post(endpoint)
57
+ end
58
+ end
59
+
60
+ command.run(ARGV)
61
+
metadata ADDED
@@ -0,0 +1,98 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: datapost
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Zach Leslie
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-11-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: json
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rest-client
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: cri
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: Read json from STDIN and post it to a designated REST endpoint. Useful
63
+ for things like cronjobs, when you just need to post the json output to your application
64
+ server.
65
+ email: xaque208@gmail.com
66
+ executables:
67
+ - datapost
68
+ extensions: []
69
+ extra_rdoc_files: []
70
+ files:
71
+ - bin/datapost
72
+ - README.md
73
+ homepage: https://github.com/xaque208/datapost
74
+ licenses: []
75
+ post_install_message:
76
+ rdoc_options: []
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ none: false
81
+ requirements:
82
+ - - ! '>='
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ none: false
87
+ requirements:
88
+ - - ! '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 1.8.23
94
+ signing_key:
95
+ specification_version: 3
96
+ summary: Read json from STDIN and post it to a designated REST endpoint.
97
+ test_files: []
98
+ has_rdoc: