resat 0.7.5 → 0.7.6

Sign up to get free protection for your applications and to get access to all the features.
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