jerakia-client 0.5.3 → 1.0.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: bc1e33dd378de698790edad5c5fff66666e59d1a
4
- data.tar.gz: 7051717e68417a4fed955f345a6262ec75b3baba
3
+ metadata.gz: 4989cd5cb49bbd373c3fd8e45b8540a0f2966bac
4
+ data.tar.gz: 71f59ae0a1e0e2624e5d0eabfa4c00725b88d279
5
5
  SHA512:
6
- metadata.gz: baa075fef4285f2608d25c67b9dbbc81ffa76f9cf293f2e34ea593f1dc627543b00a05f4169101e7b7d607088505e3a526ac765b1e57b9d3b286831524bba9e5
7
- data.tar.gz: 8a5b1d27c25c87a48a61f1abedd9bb7cdecd74f114dbc8353c21de3177ceb2f981971ddcc22c99d6a4e40e1443dd1bf3ea2f2b3b12614b833eb1813aea799a9c
6
+ metadata.gz: ffa938ab9719823a952ef6880b779deb38552a9e8beaf3761a46262eeed1f5a30f4984e8661a8995a389ecf5f6edd608ff038ffe28f6fb3b8ab1cf5b6e313234
7
+ data.tar.gz: 8cc5df3a87890088bce061da24fee3b0a1988ca36e33ba2db9ef9a5c05c9ce335260e2d8f17082b1f7b351373d30b03fd51cd35dde71a3f1d1db82caf5eafce2
@@ -6,6 +6,7 @@ require 'jerakia/client/token'
6
6
  require 'uri'
7
7
  require 'json'
8
8
  require 'net/http'
9
+ require 'msgpack'
9
10
 
10
11
  class Jerakia
11
12
  class Client
@@ -53,6 +54,7 @@ class Jerakia
53
54
  :port => 9843,
54
55
  :api => 'v1',
55
56
  :proto => 'http',
57
+ :content_type => 'json',
56
58
  }
57
59
  end
58
60
 
@@ -82,7 +84,11 @@ class Jerakia
82
84
 
83
85
  case response.code
84
86
  when "200"
85
- return JSON.parse(response.body)
87
+ if not @config.key?(:content_type) or @config[:content_type] == 'json'
88
+ return JSON.parse(response.body)
89
+ else @config[:content_type] == 'msgpack'
90
+ return MessagePack.unpack(response.body)
91
+ end
86
92
  when "401"
87
93
  raise Jerakia::Client::AuthorizationError, "Request not authorized"
88
94
  when "501"
@@ -93,22 +99,39 @@ class Jerakia
93
99
  end
94
100
  end
95
101
 
102
+ def encode_request(request)
103
+ if not @config.key?(:content_type) or @config[:content_type] == 'json'
104
+ request.add_field('Content-Type', 'application/json')
105
+ if request.key?('body')
106
+ request.body.to_json
107
+ end
108
+ elsif @config[:content_type] == 'msgpack'
109
+ request.add_field('Content-Type', 'application/x-msgpack')
110
+ if request.key?('body')
111
+ request.body.to_msgpack
112
+ end
113
+ else
114
+ raise Jerakia::Client::Error, "Invalid setting \"#{@config[:content_type]}\" for \":content_type\" in config - supported is either json or msgpack."
115
+ exit(false)
116
+ end
117
+ return request
118
+ end
96
119
 
97
120
  def get(url_path, params={})
98
121
  uri = URI.parse(url_address + url_path)
99
122
  uri.query = URI.encode_www_form(params)
100
123
  request = Net::HTTP::Get.new(uri.to_s)
124
+ request = encode_request(request)
101
125
  return http_send(request)
102
126
  end
103
127
 
104
128
  def put(url_path, params)
105
129
  uri = URI.parse(url_address + url_path)
106
130
  request = Net::HTTP::Put.new(uri.path)
107
- request.add_field('Content-Type', 'application/json')
108
- request.body = params.to_json
131
+ request = set_content_type(request)
132
+ request.body = params
133
+ request = encode_request(request)
109
134
  return http_send(request)
110
135
  end
111
136
  end
112
137
  end
113
-
114
-
@@ -1,5 +1,6 @@
1
1
  require 'json'
2
2
  require 'yaml'
3
+ require 'msgpack'
3
4
 
4
5
  class Jerakia
5
6
  class Client
@@ -80,7 +81,13 @@ class Jerakia
80
81
  aliases: :o,
81
82
  type: :string,
82
83
  default: 'json',
83
- desc: 'Output format, yaml or json'
84
+ desc: 'Output format, yaml, json or msgpack'
85
+
86
+ option :content_type,
87
+ aliases: :c,
88
+ type: :string,
89
+ default: 'json',
90
+ desc: 'Content type, json or msgpack'
84
91
 
85
92
  def lookup(key)
86
93
  client = Jerakia::Client.new({
@@ -88,6 +95,7 @@ class Jerakia
88
95
  :port => options[:port],
89
96
  :api => options[:api],
90
97
  :token => options[:token],
98
+ :content_type => options[:content_type],
91
99
  })
92
100
 
93
101
  lookup_opts = {
@@ -118,6 +126,8 @@ class Jerakia
118
126
  puts answer.to_json
119
127
  when 'yaml'
120
128
  puts answer.to_yaml
129
+ when 'msgpack'
130
+ puts answer.to_msgpack
121
131
  else
122
132
  raise Jerakia::Client::Error, "Unknown output type #{options[:output]}"
123
133
  end
@@ -1,6 +1,6 @@
1
1
  class Jerakia
2
2
  class Client
3
- VERSION = '0.5.3'.freeze
3
+ VERSION = '1.0.0'.freeze
4
4
  end
5
5
  end
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jerakia-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Craig Dunn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-12 00:00:00.000000000 Z
11
+ date: 2017-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.19'
27
+ - !ruby/object:Gem::Dependency
28
+ name: msgpack
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
27
41
  description: CLI and ruby client libraries for Jerakia Server
28
42
  email:
29
43
  executables: