Sha256: a167764aec762ee0fa51c6058554c65c0606556bcd2b839972b04d6468e6d931

Contents?: true

Size: 1.43 KB

Versions: 2

Compression:

Stored size: 1.43 KB

Contents

module VimeoRuby
  class User < Base
    attr_reader :vimeo_id, :video_collection, :available_for_hire, :bio, :can_work_remotely, :location, :name, :profile_link, :additional_info

    def initialize(attrs: {})
      @vimeo_id = extract_vimeo_id_from_uri(attrs.delete("uri"))
      @available_for_hire = attrs.delete("available_for_hire")
      @bio = attrs.delete("bio")
      @can_work_remotely = attrs.delete("can_work_remotely")
      @location = attrs.delete("location")
      @name = attrs.delete("name")
      @profile_link = attrs.delete("link")
      @video_collection = nil
      @additional_info = OpenStruct.new(attrs)
    end

    def self.get_user(user_id)
      user_info = get("#{base_uri}/users/#{user_id}")
      new(attrs: user_info)
    end

    def base_uri
      self.class.base_uri
    end

    def uploaded_videos(query_params: {})
      if @video_collection.nil? || !query_params.empty?
        @video_collection = retrieve_video_collection(query_params)
      else
        @video_collection
      end
    end

    def available_for_hire?
      @available_for_hire
    end

    def can_work_remotely?
      @can_work_remotely
    end

    private

    def retrieve_video_collection(query_params)
      uploaded_videos_response = self.class.get("#{base_uri}/users/#{vimeo_id}/videos", query_params: query_params)
      uploaded_videos = uploaded_videos_response["data"]
      UploadedVideoCollection.new(uploaded_videos)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vimeo_ruby-0.4.3 lib/vimeo_ruby/user.rb
vimeo_ruby-0.4.2 lib/vimeo_ruby/user.rb