Class: PPC::API::Baidu

Inherits:
Object
  • Object
show all
Extended by:
PPC::API
Defined in:
lib/ppc/api/baidu.rb,
lib/ppc/api/shenma.rb,
lib/ppc/api/baidu/bulk.rb,
lib/ppc/api/baidu/plan.rb,
lib/ppc/api/baidu/rank.rb,
lib/ppc/api/baidu/group.rb,
lib/ppc/api/baidu/report.rb,
lib/ppc/api/baidu/account.rb,
lib/ppc/api/baidu/keyword.rb,
lib/ppc/api/baidu/creative.rb,
lib/ppc/api/baidu/phone_new_creative.rb

Direct Known Subclasses

Account, Bulk, Creative, Group, Keyword, Phone, Plan, Rank, Report

Defined Under Namespace

Classes: Account, Bulk, Creative, Group, Keyword, Phone, Plan, Rank, Report

Constant Summary collapse

@@debug =
false

Class Method Summary collapse

Methods included from PPC::API

debug_off, debug_on, is_no_quota, make_type, process, request, request_http_body, request_http_header, request_uri, reverse_type

Class Method Details

.debug_offObject



11
12
13
# File 'lib/ppc/api/shenma.rb', line 11

def self.debug_off
  @@debug = false
end

.debug_onObject



7
8
9
# File 'lib/ppc/api/shenma.rb', line 7

def self.debug_on
  @@debug = true
end

.process(response, key, &func) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ppc/api/baidu.rb', line 22

def self.process(response, key, &func)
  '''
  Process Http response. If operation successes, return value of given keys.
  You can process the result using function &func, or do nothing by passing 
  block {|x|x}
  =========================== 
  @Output: resultType{ desc: boolean, failure: Array,  result: Array }

  failure is the failures part of response\'s header
  result is the processed response body.
  '''
  result = {}
  result[:succ] = response['header']['desc'] =='success'
  result[:failure] = response['header']['failures']
  if !response['body'].nil? && response['body'][key]
    result[:result] = func[ response['body'][key] ]
  end
  result[:no_quota] = is_no_quota(response['header']['failures'], '8501')
  return result
end

.request(auth, path, params = {}) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ppc/api/shenma.rb', line 15

def self.request( auth, path, params = {} )
  '''
  request should return whole http response including header
  '''
  uri = URI("https://e.sm.cn#{path}")
  http_body = {
    header: {
      username:   auth[:username],
      password:   auth[:password],
      token:      auth[:token],
      target:     auth[:tarvget]
    },
    body: params
  }.to_json

  http_header = {
    'Content-Type' => 'application/json; charset=UTF-8'
  }

  http = Net::HTTP.new(uri.host, 443)
  # 是否显示http通信输出
  http.set_debug_output( $stdout ) if @@debug
  http.use_ssl = true

  response = http.post(uri.path, http_body, http_header)
  response = JSON.parse( response.body )
end

.request_uri(param) ⇒ Object



18
19
20
# File 'lib/ppc/api/baidu.rb', line 18

def self.request_uri(param)
  URI("https://api.baidu.com/json/sms/v3/#{param[:service]}Service/#{param[:method]}")
end

.reverse_type(types, maps = @map) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/ppc/api/baidu.rb', line 43

def self.reverse_type( types, maps = @map )
  types = [ types ] unless types.is_a? Array
  types.map do |item| 
    maps.each{|m| item.filter_and_replace_key(m[0],m[1].to_s)}
    item
  end
end