class PPC::API::Baidu::Report
Constants
- Device_map
- Level_map
- Service
- Type_map
需要用到的映射集合
- Unit_map
Public Class Methods
get_id( auth, params )
click to toggle source
API
wraping function #
# File lib/ppc/api/baidu/report.rb, line 23 def self.get_id( auth, params ) request = make_reportrequest( params ) body = { reportRequestType: request } response = request( auth, Service, 'getProfessionalReportId' ,body) process( response, 'reportId' ){ |x| x[0]["reportId"] } end
get_state( auth, id )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 30 def self.get_state( auth, id ) ''' input id should be string ''' status = {1=>'Waiting' ,2=>'Opearting' ,3=>'Finished'} body = { reportId: id } response = request( auth, Service, 'getReportState' ,body) process( response, 'isGenerated' ){ |x| status[x[0]["isGenerated"]] } end
get_url( auth, id )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 40 def self.get_url( auth, id ) body = { reportId: id } response = request( auth, Service, 'getReportFileUrl' ,body) process( response, 'reportFilePath' ){ |x| x[0]["reportFilePath"] } end
Private Class Methods
account_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 101 def self.account_report( auth, param = {} ) param[:type] ||= 'account' param[:fields] ||= %w(impression click cpc cost ctr cpm conversion) param[:level] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end
creative_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 83 def self.creative_report( auth, param = {} ) param[:type] ||= 'creative' param[:fields] ||= %w(impression click cpc cost ctr cpm position conversion) param[:level] ||= 'creative' param[:range] ||= 'creative' param[:unit] ||= 'day' download_report( auth, param ) end
download_report( auth, param )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 125 def self.download_report( auth, param ) p 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].to_s[/(Finished|3)/] p "Report is not generated, waiting..." if ENV["DEBUG"] end url = get_url( auth, id )[:result] return open(url).read.force_encoding('gb18030').encode('utf-8') else raise response[:failure][0]["message"] end end
group_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 117 def self.group_report( auth, param = {} ) param[:type] ||= 'group' param[:fields] ||= %w(impression click cpc cost ctr cpm conversion) param[:level] ||= 'group' param[:unit] ||= 'day' download_report( auth, param ) end
keyword_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 92 def self.keyword_report( auth, param = {} ) param[:type] ||= 'keyword' param[:fields] ||= %w(impression click cpc cost ctr cpm position conversion) param[:level] ||= 'keywordid' param[:range] ||= 'keywordid' param[:unit] ||= 'day' download_report( auth, param ) end
make_reportrequest( param )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 47 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) 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] = Time.parse( param[:startDate] ) rescue Time.now - 86400 requesttype[:endDate] = Time.parse( param[:endDate] ) rescue Time.now - 86400 requesttype[:statIds] = param[:statIds] if param[:statIds] requesttype end
plan_report( auth, param = {} )
click to toggle source
# File lib/ppc/api/baidu/report.rb, line 109 def self.plan_report( auth, param = {} ) param[:type] ||= 'plan' param[:fields] ||= %w(impression click cpc cost ctr cpm conversion) param[:level] ||= '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/baidu/report.rb, line 74 def self.query_report( auth, param = {} ) param[:type] ||= 'query' param[:fields] ||= %w(click impression) param[:level] ||= 'pair' param[:range] ||= 'account' param[:unit] ||= 'day' download_report( auth, param ) end