class PPC::API::Sm::Report
Constants
- Device_map
- Level_map
- Service
- Type_map
需要用到的映射集合
- Unit_map
Public Class Methods
get_file( auth, id )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 40 def self.get_file( auth, id ) request( auth, 'file' , 'download' , {fileId: id} ) end
get_fileId( auth, id )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 35 def self.get_fileId( auth, id ) response = request( auth, 'task' , 'getTaskState' , {taskId: id} ) process( response, 'fileId' ){ |x| x } end
get_id( auth, params )
click to toggle source
API
wraping function #
# File lib/ppc/api/sm/report.rb, line 24 def self.get_id( auth, params ) body = make_reportrequest( params ) response = request( auth, 'report' , 'getReport' ,body) process( response, 'taskId' ){ |x| x } end
get_state( auth, id )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 30 def self.get_state( auth, id ) response = request( auth, 'task' , 'getTaskState' , {taskId: id} ) process( response, 'status' ){ |x| x } end
Private Class Methods
account_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 96 def self.account_report( auth, param = {} ) param[:type] ||= 'account' param[:fields] ||= %w(click impression cost cpc ctr) param[:range] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end
creative_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 80 def self.creative_report( auth, param = {} ) param[:type] ||= 'creative' param[:fields] ||= %w(click impression) param[:range] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end
download_report( auth, param )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 120 def self.download_report( auth, param ) response = get_id( auth, param ) if response[:succ] id = response[:result] p "Got report id:" + id.to_s if ENV["DEBUG"] loop do sleep 2 break if get_state( auth, id )[:result] == 'FINISHED' p "Report is not generated, waiting..." if ENV["DEBUG"] end fileId = get_fileId(auth, id)[:result] return get_file(auth, fileId).force_encoding("utf-8") else raise response[:failure][0]["message"] end end
group_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 112 def self.group_report( auth, param = {} ) param[:type] ||= 'group' param[:fields] ||= %w(click impression cost cpc ctr) param[:range] ||= 'group' param[:unit] ||= 'day' download_report( auth, param ) end
keyword_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 88 def self.keyword_report( auth, param = {} ) param[:type] ||= 'keyword' param[:fields] ||= %w(click impression cost cpc ctr) param[:range] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end
make_reportrequest( param )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 45 def self.make_reportrequest( param ) """ make RepoerRequestType ============== @Input : :fields,:type,:level,:range,:unit,:device,:id_only,:startDate:endDate ============== Note: We cast [ type, level, range, unit,device ] from int to string. For more information please see those map at the begining of the file """ requesttype = {} requesttype[:performanceData] = param[:fields] || %w(click impression cost cpc ctr) requesttype[:reportType] = Type_map[ param[:type] ] if param[:type] requesttype[:levelOfDetails] = Level_map[ param[:level] ] if param[:level] requesttype[:statRange] = Level_map[ param[:range] ] if param[:range] requesttype[:unitOfTime] = Unit_map[ param[:unit] ] if param[:unit] requesttype[:device] = Device_map[ param[:device] ] if param[:device] requesttype[:idOnly] = param[:id_only] || false requesttype[:startDate] = Date.parse( param[:startDate] ) rescue Date.today requesttype[:endDate] = Date.parse( param[:endDate] ) rescue Date.today requesttype[:statIds] = param[:statIds] if param[:type] == "keyword" && param[:range] != "account" return requesttype end
plan_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/sm/report.rb, line 104 def self.plan_report( auth, param = {} ) param[:type] ||= 'plan' param[:fields] ||= %w(click impression cost cpc ctr) param[:range] ||= 'plan' param[:unit] ||= 'day' download_report( auth, param ) end
query_report( auth, param = {} )
click to toggle source
useful function for operation #
# File lib/ppc/api/sm/report.rb, line 72 def self.query_report( auth, param = {} ) param[:type] ||= 'query' param[:fields] ||= %w(click impression) param[:range] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end