Sha256: cae008f34920c3369dd24393bed22e7c9a454f96f11cc9a47cee6fb6b4589025

Contents?: true

Size: 1.3 KB

Versions: 47

Compression:

Stored size: 1.3 KB

Contents

module Alula
  module Video
    class BaseResource < Alula::ApiResource
      extend Alula::ResourceAttributes

      class << self
        def api_name(name = nil)
          if name
            @api_name = name
          elsif @api_name
            @api_name
          else
            superclass.api_name
          end
        end

        # Infer resource name from classname if not provided
        def resource_name(name = nil)
          if name
            @resource_name = name
          elsif @resource_name
            @resource_name
          else
            @resource_name = self.name.split('::').last.downcase.to_sym
          end
        end

        def resource_url(id = nil)
          "/#{api_name}/v1/#{resource_name}/#{id}"
        end
      end

      api_name :video

      # Instance method
      def resource_url(id = self.id)
        "/#{self.class.api_name}/v1/#{self.class.resource_name}/#{id}"
      end

      def construct_from(json_object)
        @raw_data = json_object.dup
        @values = json_object

        self.id = json_object['id'] unless [nil, ''].include?(json_object['id'])

        @dirty_attributes = Set.new
        @errors = ModelErrors.new(self.class)

        @related_models = {}
        cache_links(json_object['relationships'] || {})

        self
      end
    end
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
alula-ruby-2.12.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.11.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.10.1 lib/alula/resources/video/base_resource.rb
alula-ruby-2.10.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.9.1 lib/alula/resources/video/base_resource.rb
alula-ruby-2.9.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.8.1 lib/alula/resources/video/base_resource.rb
alula-ruby-2.8.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.7.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.6.3 lib/alula/resources/video/base_resource.rb
alula-ruby-2.6.2 lib/alula/resources/video/base_resource.rb
alula-ruby-2.6.1 lib/alula/resources/video/base_resource.rb
alula-ruby-2.6.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.5.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.4.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.3.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.2.0 lib/alula/resources/video/base_resource.rb
alula-ruby-2.1.2 lib/alula/resources/video/base_resource.rb
alula-ruby-2.1.1 lib/alula/resources/video/base_resource.rb
alula-ruby-2.1.0 lib/alula/resources/video/base_resource.rb