Sha256: b18878edb67d204f395277a8f11bae41a59a10a208dd5fff3dedae32b1c128d6

Contents?: true

Size: 1005 Bytes

Versions: 12

Compression:

Stored size: 1005 Bytes

Contents

module ResoTransport
  Resource = Struct.new(:client, :entity_set) do

    def query
      Query.new(self)
    end

    def name
      entity_set.name
    end

    def property(name)
      properties.detect {|p| p.name == name }
    end

    def properties
      entity_type.properties
    end

    def expandable
      entity_type.navigation_properties
    end
    
    def entity_type
      @entity_type ||= schema.entity_types.detect {|et| et.name == entity_set.entity_type }
    end

    def schema
      @schema ||= md.schemas.detect {|s| s.namespace == entity_set.schema }
    end

    def md
      client.metadata
    end

    def parse(results)
      results.map {|r| entity_type.parse(r) }
    end

    def get(params)
      client.connection.get(name, params) do |req|
        req.headers['Accept'] = 'application/json'
      end
    end

    def to_s
      %(#<ResoTransport::Resource entity_set="#{name}", schema="#{schema&.namespace}">)
    end

    def inspect
      to_s
    end

  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
reso_transport-1.5.5 lib/reso_transport/resource.rb
reso_transport-1.5.4 lib/reso_transport/resource.rb
reso_transport-1.5.3 lib/reso_transport/resource.rb
reso_transport-1.5.2 lib/reso_transport/resource.rb
reso_transport-1.5.1 lib/reso_transport/resource.rb
reso_transport-1.4.0 lib/reso_transport/resource.rb
reso_transport-1.3.2 lib/reso_transport/resource.rb
reso_transport-1.3.1 lib/reso_transport/resource.rb
reso_transport-1.3.0 lib/reso_transport/resource.rb
reso_transport-1.2.0 lib/reso_transport/resource.rb
reso_transport-1.1.0 lib/reso_transport/resource.rb
reso_transport-1.0.0 lib/reso_transport/resource.rb