class Sentofu::Api
Attributes
credentials[RW]
spec[R]
Public Class Methods
new(name, spec)
click to toggle source
Calls superclass method
Sentofu::Resource::new
# File lib/sentofu/api.rb, line 147 def initialize(name, spec) u = spec['servers'].first['url'] rescue nil unless u.is_a?(String) && u.match?(/\Ahttps?:\/\//) #p name; pp spec; p u c = spec['code'] rescue -1 m = spec['message'] rescue '(no message)' fail "cannot setup #{name.inspect} API - HTTP #{c} - #{m.inspect}" end super(nil, u) @name = name @spec = spec @credentials = nil @token = nil inflate_parameters #puts "================== #{name}" spec['paths'].each do |path, point| #p path re = self pas = path.split('/').collect { |s| s.gsub(/-/, '_') } pas.shift if pas.first == '' pas[0..-2].each do |pa| re = re.add_segment(pa) end re.add_leaf_segment(pas.last, point) end end
Public Instance Methods
modified()
click to toggle source
# File lib/sentofu/api.rb, line 205 def modified Time.parse(@spec[:meta][:modified]) end
paths()
click to toggle source
# File lib/sentofu/api.rb, line 190 def paths @spec['paths'] end
query(path, params={})
click to toggle source
# File lib/sentofu/api.rb, line 195 def query(path, params={}) pa = server + path pa = pa + '?' + URI.encode_www_form(params) if params.any? return params.merge(path: pa) if params[:debug] get(pa) end
token()
click to toggle source
# File lib/sentofu/api.rb, line 181 def token if @token && @token.not_expired? @token else @token = Sentofu::Http.fetch_token(@credentials) end end
version()
click to toggle source
# File lib/sentofu/api.rb, line 210 def version @spec[:meta][:version] end
Protected Instance Methods
inflate_parameters()
click to toggle source
# File lib/sentofu/api.rb, line 222 def inflate_parameters pars = @spec['components']['parameters'] return unless pars refs = pars .inject({}) { |h, (k, v)| h["#/components/parameters/#{k}"] = v h } @spec['paths'].each do |_, pa| pa.each do |_, me| next unless me['parameters'] me['parameters'] = me['parameters'] .collect { |pm| if ref = pm['$ref'] refs[ref] || fail("found no $ref #{ref.inspect} in spec") else pm end } end end end
server()
click to toggle source
# File lib/sentofu/api.rb, line 217 def server @spec['servers'].first['url'] end