From 6675c1663f3c810c1e5d3887aad58f02e0214a29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrik=20B=C3=B3na?= Date: Thu, 27 Nov 2014 16:08:14 +0100 Subject: [PATCH] Add possibility to specify which fields should be loaded Before this commit it was impossible to load particular items with custom fields. With this commit you can do it directly when loading item by ID: ``` file = client.file_by_id('12345', [:name, :version_number]) file.version_number ``` Or manually by calling `#update_metadata`: ``` file = client.file('document.pdf') file.reload_meta([:version_number]) file.version_number ``` You can find more information here: https://developers.box.com/docs/#fields --- lib/ruby-box/client.rb | 8 ++++---- lib/ruby-box/item.rb | 5 ++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/lib/ruby-box/client.rb b/lib/ruby-box/client.rb index 22a66e8..6187607 100644 --- a/lib/ruby-box/client.rb +++ b/lib/ruby-box/client.rb @@ -15,9 +15,9 @@ def root_folder folder_by_id('0') end - def folder_by_id(id) + def folder_by_id(id, fields=nil) folder = Folder.new(@session, {'id' => id}) - folder.reload_meta + folder.reload_meta(fields) end def folder(path='/') @@ -26,9 +26,9 @@ def folder(path='/') folder_from_split_path( split_path(path) ) end - def file_by_id(id) + def file_by_id(id, fields=nil) file = File.new(@session, {'id' => id}) - file.reload_meta + file.reload_meta(fields) end def file(path) diff --git a/lib/ruby-box/item.rb b/lib/ruby-box/item.rb index e0b447c..b52173a 100644 --- a/lib/ruby-box/item.rb +++ b/lib/ruby-box/item.rb @@ -63,8 +63,9 @@ def delete(opts={}) resp = @session.delete( url ) end - def reload_meta + def reload_meta(fields=nil) url = "#{RubyBox::API_URL}/#{resource_name}/#{@raw_item['id']}" + url = "#{url}?fields=#{fields.map(&:to_s).join(',')}" if fields @raw_item = @session.get( url ) self end @@ -175,7 +176,5 @@ def serialize def update_fields ['name', 'description', 'parent'] end - - end end