templates/ruby/lib/facebook_ads/param_set.rb (43 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 ParamSet def initialize @params = {} @accepts_files = false end def has_param(name, type) @params[name.to_sym] = FieldTypes.for(type) end def accepts_files! @accepts_files = true end def accepts_files? @accepts_files end def to_params(data) Hash[data.map do |key,val| key = key.to_sym field_type = @params[key] if (!field_type && accepts_files? && FieldTypes::UploadFile.acceptable?(val)) field_type = FieldTypes::UploadFile.new end if (!field_type && val.is_a?(Array)) # dynamic ads val = JSON.generate(val) end [key, (field_type ? field_type.serialize(val) : val)] # TODO CollectionProxy= end] end def from_params(data) Hash[data.map do |key,val| key = key.to_sym field_type = @params[key] [key, (field_type ? field_type.deserialize(val) : val)] end] end # TODO def deserialize(data) from_params(data) end def empty? @params.empty? end end end