resat 0.7.5 → 0.7.6

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/lib/api_request.rb +26 -8
  2. data/lib/resat.rb +1 -1
  3. metadata +2 -2
data/lib/api_request.rb CHANGED
@@ -114,11 +114,7 @@ module Resat
114
114
 
115
115
  # Does response include given header or body field?
116
116
  def has_response_field?(field, target)
117
- return unless @response
118
- return @response.key?(field) if target == 'header'
119
- return true if field.nil? || field.empty?
120
- doc = REXML::Document.new(@response.body) rescue nil
121
- return doc && !doc.elements[field].nil?
117
+ !!get_response_field(field, target)
122
118
  end
123
119
 
124
120
  # Get value of response header or body field
@@ -126,13 +122,35 @@ module Resat
126
122
  return unless @response
127
123
  return @response[field] if target == 'header'
128
124
  return @response.body if field.nil? || field.empty?
129
- doc = REXML::Document.new(@response.body)
130
- elem = doc.elements[field]
131
- return elem.get_text.to_s if elem
125
+ json = JSON.load(@response.body) rescue nil
126
+ field = nil
127
+ if json
128
+ field = json_field(json, field)
129
+ else
130
+ doc = REXML::Document.new(@response.body)
131
+ elem = doc.elements[field]
132
+ field = elem.get_text.to_s if elem
133
+ end
134
+ field
132
135
  end
133
136
 
134
137
  protected
135
138
 
139
+ # Retrieve JSON body field
140
+ def json_field(json, field)
141
+ return nil unless json
142
+ fields = field.split('/')
143
+ fields.each do |field|
144
+ if json.is_a?(Array)
145
+ json = json[field.to_i]
146
+ else
147
+ json = json[field]
148
+ end
149
+ return nil unless json
150
+ end
151
+ json
152
+ end
153
+
136
154
  # Calculate number of seconds to wait before sending request
137
155
  def delay_seconds
138
156
  seconds = nil
data/lib/resat.rb CHANGED
@@ -3,7 +3,7 @@
3
3
  #
4
4
 
5
5
  module Resat
6
- VERSION = '0.7.5'
6
+ VERSION = '0.7.6'
7
7
  end
8
8
 
9
9
  require File.join(File.dirname(__FILE__), 'engine')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.5
4
+ version: 0.7.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphael Simon
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2010-05-19 00:00:00 -07:00
12
+ date: 2010-06-07 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency