baidu-tuiguang 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: af00a2da8c08836a6f99a6153de28f0ad0a0dbd7
4
- data.tar.gz: 9467ab33800680b41ad7b47c1f5ef00a4776ca12
3
+ metadata.gz: 8f7cfd9e817799bddadf9fc3a85c0f777e091b5e
4
+ data.tar.gz: dfcb1d19776ae3245cdd277c26b2d4b2a08bde59
5
5
  SHA512:
6
- metadata.gz: aa164a9752e962c21651827333b4eff42b65c803aa04a017f87bb6f376aac14fb722dbaba7a38f5dea6c90627dd0d27691f20ec29e2734a769b9d2a8a2c091a5
7
- data.tar.gz: f039446cef6f9738616a18b0cf66638be954bb62d1c4217837a9f81b039e24899c246bab2578234548cb05cbae4774664e3f220623df7111d3c270608e6dc727
6
+ metadata.gz: 828310e8a8303e2a4ef6f63fb68218939dc7844221367020912e63a0a30fecef30d5bb5e7ad7addcbf6308daaebc112363122494fd100245f6382416e5bb9f17
7
+ data.tar.gz: a38160ed804790fce2e22f6414fa9138d1d1ab4741f10ac9564f0914032cf7ecd6cb760f595a53b3a5cd516afbb73990cae16d7e80dbc386f50967496daa3ce5
@@ -9,17 +9,22 @@ require 'date'
9
9
  module Baidu
10
10
  module Tuiguang
11
11
  class Action
12
- attr_reader :req_url
13
- attr_reader :req_params
14
- attr_reader :resp
12
+ attr_reader :url
13
+ attr_reader :params
14
+ attr_reader :res
15
15
 
16
16
  def initialize(cookies)
17
17
  @cookies = cookies
18
18
  end
19
19
 
20
+ def basic_info
21
+ data = request("path": 'GET/authInfo', "params": {})
22
+ {'username' => data['username']}
23
+ end
24
+
20
25
  def plans(page = 1, page_size = 20)
21
26
  today = Time.now.to_date
22
- data = request(path: 'vega/GET/mtllist/plan', params: {"fields": ["planid", "pausestat", "planname", "shows", "clks", "paysum", "trans", "avgprice", "plandynamicideastat", "acctdynamicideastat", "mPriceFactor", "planstat", "remarketingstat", "deviceprefer", "wregion", "qrstat1", "phonetrans", "allipblackcnt", "clkrate", "wbudget", "plancyc", "showprob", "allnegativecnt", "showpay", "adtype", "acctdynamictagsublinkstat", "acctdynamictitlestat", "acctdynamichotredirectstat", "plandynamictagsublinkstat", "plandynamictitlestat", "plandynamichotredirectstat", "plandynamictitlelist", "plandynamictitleabstract", "acctdynamictitlelist", "acctdynamictitleabstract", "acctscenarizedstatus", "planscenarizedphrasestatus", "atstatus", "atbid", "atbudget", "bidprefer", "pcpricefactor", "inpeople", "remarketingPauseStat", "robotAPlanState"], "levelCond": {"userid": "23597360"}, "pageNo": page, "pageSize": page_size, "startTime": today, "endTime": today})
27
+ data = request(path: 'vega/GET/mtllist/plan', params: {"fields": ["planid", "pausestat", "planname", "shows", "clks", "paysum", "trans", "avgprice", "plandynamicideastat", "acctdynamicideastat", "mPriceFactor", "planstat", "remarketingstat", "deviceprefer", "wregion", "qrstat1", "phonetrans", "allipblackcnt", "clkrate", "wbudget", "plancyc", "showprob", "allnegativecnt", "showpay", "adtype", "acctdynamictagsublinkstat", "acctdynamictitlestat", "acctdynamichotredirectstat", "plandynamictagsublinkstat", "plandynamictitlestat", "plandynamichotredirectstat", "plandynamictitlelist", "plandynamictitleabstract", "acctdynamictitlelist", "acctdynamictitleabstract", "acctscenarizedstatus", "planscenarizedphrasestatus", "atstatus", "atbid", "atbudget", "bidprefer", "pcpricefactor", "inpeople", "remarketingPauseStat", "robotAPlanState"], "levelCond": {"userid": cookies_params['__cas__id__3']}, "pageNo": page, "pageSize": page_size, "startTime": today, "endTime": today})
23
28
  result = {'data' => [], 'count' => data['totalCount']}
24
29
  data['listData'].each do |item|
25
30
  result['data'] << {
@@ -91,23 +96,39 @@ module Baidu
91
96
  end
92
97
 
93
98
  def keyword_pause(keyword_id)
94
- request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": 1}})
99
+ keyword_pause_and_enable(keyword_id)
95
100
  end
96
101
 
97
102
  def keyword_enable(keyword_id)
98
- request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": 0}})
103
+ keyword_pause_and_enable(keyword_id, false)
104
+ end
105
+
106
+ def keywords_pause(keyword_ids = [])
107
+ keywords_pause_and_enable(keyword_ids)
108
+ end
109
+
110
+ def keywords_enable(keyword_ids = [])
111
+ keywords_pause_and_enable(keyword_ids, false)
112
+ end
113
+
114
+ def keyword_pause_and_enable(keyword_id, pause = true)
115
+ request("path": 'vega/MOD/keyword', "params": {"winfoid": [keyword_id.to_i], "items": {"pausestat": pause ? 1 : 0}})
116
+ end
117
+
118
+ def keywords_pause_and_enable(keyword_ids = [], pause = true)
119
+ request("path": 'vega/MOD/adkeyword', "params": {"checkAll": false, "mtlCond": {"levelCond": {"userid": cookies_params['__cas__id__3']}}, "mtlIds": keyword_ids.map {|keyword_id| keyword_id.to_s}, "items": {"pausestat": pause}})
99
120
  end
100
121
 
101
122
  def request(params = {})
102
- @req_params = params
103
123
  params.merge!(
104
124
  "userid": cookies_params['__cas__id__3'],
105
- "token": cookies_params['__cas__st__3'],
106
- "reqid": "",
107
- "eventId": ""
125
+ "token": cookies_params['__cas__st__3']
108
126
  )
127
+ @params = params
109
128
  params[:"params"] = params[:"params"].to_json
110
- url = URI(@req_url = "http://fengchao.baidu.com/nirvana/request.ajax?#{URI.encode_www_form(path: params[:"path"], reqid: '')}")
129
+ url = URI('http://fengchao.baidu.com/nirvana/request.ajax')
130
+ url.query = URI.encode_www_form(path: params[:"path"])
131
+ @url = url.to_s
111
132
  http = Net::HTTP.new(url.host, url.port)
112
133
  request = Net::HTTP::Post.new(url)
113
134
  request["accept"] = '*/*'
@@ -125,13 +146,19 @@ module Baidu
125
146
  request.body = URI.encode_www_form(params)
126
147
  response = http.request(request)
127
148
  raise RequestError, "HTTP Response: #{response.code} #{response.message}" unless response.is_a?(Net::HTTPSuccess)
128
- @resp = response.read_body
149
+ @res = response.read_body
129
150
  if response['Content-Encoding'] && response['Content-Encoding'].include?('gzip')
130
- @resp = Zlib::GzipReader.new(StringIO.new(@resp)).read
151
+ @res = Zlib::GzipReader.new(StringIO.new(@res)).read
131
152
  end
132
- result = JSON.parse(@resp)
153
+ result = JSON.parse(@res)
133
154
  raise LoginExpired if result['redirect'] && result['redirecturl'] && result['redirecturl'].include?('http://cas.baidu.com')
134
- raise Error.new result['error'], result['status'] unless result['status'].to_i == 200
155
+ unless result['status'].to_i == 200
156
+ if params[:"path"] == 'vega/MOD/keyword'
157
+ raise Error.new result['error'].map {|k, v| v['winfoid']['message']}.join('; '), result['status']
158
+ else
159
+ raise Error.new result['error'], result['status']
160
+ end
161
+ end
135
162
  result['data']
136
163
  end
137
164
 
@@ -142,7 +169,7 @@ module Baidu
142
169
  @cookies.split(%r(; ?)).each do |cooky|
143
170
  items = cooky.split('=', 2)
144
171
  params[items[0]] = items[1]
145
- end
172
+ end unless @cookies.nil?
146
173
  params
147
174
  end
148
175
  end
@@ -1,5 +1,5 @@
1
1
  module Baidu
2
2
  module Tuiguang
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baidu-tuiguang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Xiao Jie
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-21 00:00:00.000000000 Z
11
+ date: 2017-04-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler