lib/facebook_ads/batch_api/batch_proxy.rb (41 lines of code) (raw):

# Copyright (c) 2017-present, Facebook, Inc. All rights reserved. # # You are hereby granted a non-exclusive, worldwide, royalty-free license to use, # copy, modify, and distribute this software in source code or binary form for use # in connection with the web services and APIs provided by Facebook. # # As with any software that integrates with the Facebook platform, your use of # this software is subject to the Facebook Platform Policy # [http://developers.facebook.com/policy/]. This copyright notice shall be # included in all copies or substantial portions of the software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR # COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. module FacebookAds class BatchProxy < BasicObject def initialize(api_request) @api_request = api_request @loaded = false @result = nil @exception = nil end def set_result(result) @result = result @loaded = true end def set_error(exception) @exception = exception @loaded = true end def method_missing(method_name, *args, &block) if @loaded if @result @result.__send__(method_name, *args, &block) else ::Object.send(:raise, @exception) end else __attr_ref(method_name) end end def __api_request @api_request end def __result @result end def __loaded? @loaded end def __attr_ref(attr_name) # generate JSONPath of the attribute "{result=#{__api_request.batch_name}:$.#{attr_name}}" end end end