diff options
| author | Nat Morris <nat@nuqe.net> | 2017-02-13 12:49:51 +0000 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-02-13 12:49:51 +0000 | 
| commit | c83c7e87d8e56739aad37a1fa994a63896d2f684 (patch) | |
| tree | fbc9ab48eea893dc1ffec5eedeb5905933d67e8f /lib/oxidized/source | |
| parent | e6e72296d7e22eaa6fe20fd0b2007d3b58a078a2 (diff) | |
| parent | 3d3a308faae69572ac17fd6c44ac726d0a958cf9 (diff) | |
Merge pull request #3 from ytti/master
Bring Netflix fork in sync with upstream
Diffstat (limited to 'lib/oxidized/source')
| -rw-r--r-- | lib/oxidized/source/http.rb | 29 | 
1 files changed, 23 insertions, 6 deletions
| diff --git a/lib/oxidized/source/http.rb b/lib/oxidized/source/http.rb index 4fd388b..7186f98 100644 --- a/lib/oxidized/source/http.rb +++ b/lib/oxidized/source/http.rb @@ -35,19 +35,21 @@ class HTTP < Source      response = http.request(request)      data = JSON.parse(response.body) -    data.each do |line| -      next if line.empty? +    data.each do |node| +      next if node.empty?        # map node parameters        keys = {} -      @cfg.map.each do |key, position| -        keys[key.to_sym] = node_var_interpolate line[position] +      @cfg.map.each do |key, want_position| +        want_positions = want_position.split('.') +        keys[key.to_sym] = node_var_interpolate node.dig(*want_positions)        end        keys[:model] = map_model keys[:model] if keys.key? :model        # map node specific vars        vars = {} -      @cfg.vars_map.each do |key, position| -        vars[key.to_sym] = node_var_interpolate line[position] +      @cfg.vars_map.each do |key, want_position| +        want_positions = want_position.split('.') +        vars[key.to_sym] = node_var_interpolate node.dig(*want_positions)        end        keys[:vars] = vars unless vars.empty? @@ -58,3 +60,18 @@ class HTTP < Source  end  end + +if RUBY_VERSION < '2.3' +  class Hash +    def dig(key, *rest) +      value = self[key] +      if value.nil? || rest.empty? +        value +      elsif value.respond_to?(:dig) +        value.dig(*rest) +      else # foo.bar.baz (bar exist but is not hash) +        return nil +      end +    end +  end +end | 
