Sha256: 70b3b42c3c2ada582beeb0243091c4eb9d3bf3655b1134b8f99dd39a6a71a952

Contents?: true

Size: 823 Bytes

Versions: 2

Compression:

Stored size: 823 Bytes

Contents

module AppleNews
  module Resource
    extend ActiveSupport::Concern

    included do
      attr_accessor :config

      def update_with_data(data)
        load_properties(data)
      end

      def resource_url
        File.join(@resource_path, id)
      end

      def get_request(path, params = {})
        AppleNews::Request::Get.new(path, config).call(params)
      end

      private

      def hydrate!
        if respond_to?(:load_properties)
          load_properties(fetch_data['data'])
        else
          set_read_only_properties(fetch_data['data'])
        end
      end

      def fetch_data
        get_request(resource_url)
      end

      def set_read_only_properties(data)
        data.each do |k, v|
          instance_variable_set("@#{k.to_s.underscore}", v)
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
apple-news-0.5.1 lib/apple-news/resource.rb
apple-news-0.5.0 lib/apple-news/resource.rb