ppc 1.3.0 → 1.3.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.
Files changed (107) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -1
  3. data/LICENSE +334 -17
  4. data/README.md +75 -3
  5. data/lib/ppc.rb +3 -1
  6. data/lib/ppc/api.rb +137 -2
  7. data/lib/ppc/api/baidu.rb +20 -99
  8. data/lib/ppc/api/baidu/account.rb +21 -21
  9. data/lib/ppc/api/baidu/bulk.rb +39 -3
  10. data/lib/ppc/api/baidu/creative.rb +33 -33
  11. data/lib/ppc/api/baidu/group.rb +14 -14
  12. data/lib/ppc/api/baidu/keyword.rb +57 -46
  13. data/lib/ppc/api/baidu/phone_new_creative.rb +51 -0
  14. data/lib/ppc/api/baidu/plan.rb +34 -31
  15. data/lib/ppc/api/baidu/rank.rb +23 -0
  16. data/lib/ppc/api/baidu/report.rb +100 -81
  17. data/lib/ppc/api/qihu.rb +150 -0
  18. data/lib/ppc/api/qihu/account.rb +86 -0
  19. data/lib/ppc/api/qihu/bulk.rb +35 -0
  20. data/lib/ppc/api/qihu/creative.rb +108 -0
  21. data/lib/ppc/api/qihu/group.rb +96 -0
  22. data/lib/ppc/api/qihu/keyword.rb +113 -0
  23. data/lib/ppc/api/qihu/plan.rb +64 -0
  24. data/lib/ppc/api/qihu/rank.rb +25 -0
  25. data/lib/ppc/api/qihu/report.rb +159 -0
  26. data/lib/ppc/api/qihu/sublink.rb +71 -0
  27. data/lib/ppc/api/shenma.rb +64 -0
  28. data/lib/ppc/api/shenma/report.rb +135 -0
  29. data/lib/ppc/api/sm.rb +50 -0
  30. data/lib/ppc/api/sm/account.rb +44 -0
  31. data/lib/ppc/api/sm/bulk.rb +69 -0
  32. data/lib/ppc/api/sm/creative.rb +86 -0
  33. data/lib/ppc/api/sm/group.rb +94 -0
  34. data/lib/ppc/api/sm/keyword.rb +132 -0
  35. data/lib/ppc/api/sm/phone_new_creative.rb +51 -0
  36. data/lib/ppc/api/sm/plan.rb +63 -0
  37. data/lib/ppc/api/sm/report.rb +136 -0
  38. data/lib/ppc/api/sogou.rb +118 -0
  39. data/lib/ppc/api/sogou/account.rb +42 -0
  40. data/lib/ppc/api/sogou/bulk.rb +69 -0
  41. data/lib/ppc/api/sogou/creative.rb +117 -0
  42. data/lib/ppc/api/sogou/group.rb +123 -0
  43. data/lib/ppc/api/sogou/keyword.rb +188 -0
  44. data/lib/ppc/api/sogou/plan.rb +66 -0
  45. data/lib/ppc/api/sogou/report.rb +129 -0
  46. data/lib/ppc/ext.rb +17 -0
  47. data/lib/ppc/operation.rb +50 -36
  48. data/lib/ppc/operation/account.rb +19 -7
  49. data/lib/ppc/operation/creative.rb +7 -7
  50. data/lib/ppc/operation/group.rb +2 -2
  51. data/lib/ppc/operation/keyword.rb +11 -8
  52. data/lib/ppc/operation/report.rb +23 -0
  53. data/ppc.gemspec +14 -4
  54. data/spec/baidu/api_baidu_account_spec.rb +16 -0
  55. data/spec/baidu/api_baidu_creative_spec.rb +73 -0
  56. data/spec/{api_baidu_group_spec.rb → baidu/api_baidu_group_spec.rb} +12 -17
  57. data/spec/baidu/api_baidu_keyword_spec.rb +61 -0
  58. data/spec/baidu/api_baidu_phone_spec.rb +22 -0
  59. data/spec/{api_baidu_plan_spec.rb → baidu/api_baidu_plan_spec.rb} +11 -10
  60. data/spec/baidu/api_baidu_report_spec.rb +44 -0
  61. data/spec/{api_baidu_spec.rb → baidu/api_baidu_spec.rb} +10 -15
  62. data/spec/operation/operation_baidu_report_spec.rb +17 -0
  63. data/spec/operation/operation_baidu_spec.rb +126 -0
  64. data/spec/operation/operation_qihu_report_spec.rb +18 -0
  65. data/spec/operation/operation_qihu_spec.rb +94 -0
  66. data/spec/operation/operation_sm_report_spec.rb +21 -0
  67. data/spec/operation/operation_sogou_report_spec.rb +17 -0
  68. data/spec/operation/operation_sogou_spec.rb +88 -0
  69. data/spec/{operation_spec_helper.rb → operation/operation_spec_helper.rb} +3 -5
  70. data/spec/qihu/api_qihu_account_spec.rb +29 -0
  71. data/spec/qihu/api_qihu_creative_spec.rb +48 -0
  72. data/spec/qihu/api_qihu_group_spec.rb +40 -0
  73. data/spec/qihu/api_qihu_keyword_spec.rb +50 -0
  74. data/spec/qihu/api_qihu_plan_spec.rb +39 -0
  75. data/spec/qihu/api_qihu_report_spec.rb +54 -0
  76. data/spec/qihu/api_qihu_sublink_spec.rb +36 -0
  77. data/spec/sm/api_sm_account_spec.rb +8 -0
  78. data/spec/sm/api_sm_creative_spec.rb +52 -0
  79. data/spec/sm/api_sm_group_spec.rb +75 -0
  80. data/spec/sm/api_sm_keyword_spec.rb +59 -0
  81. data/spec/sm/api_sm_plan_spec.rb +39 -0
  82. data/spec/sm/api_sm_report_spec.rb +30 -0
  83. data/spec/sogou/api_sogou_account_spec.rb +17 -0
  84. data/spec/sogou/api_sogou_creative_spec.rb +51 -0
  85. data/spec/sogou/api_sogou_group_spec.rb +50 -0
  86. data/spec/sogou/api_sogou_keyword_spec.rb +54 -0
  87. data/spec/sogou/api_sogou_plan_spec.rb +43 -0
  88. data/spec/sogou/api_sogou_report_spec.rb +51 -0
  89. data/spec/spec_helper.rb +49 -10
  90. metadata +140 -46
  91. data/lib/ppc/baidu.rb +0 -152
  92. data/lib/ppc/baidu/account.rb +0 -88
  93. data/lib/ppc/baidu/bulk.rb +0 -52
  94. data/lib/ppc/baidu/group.rb +0 -99
  95. data/lib/ppc/baidu/key.rb +0 -38
  96. data/lib/ppc/baidu/plan.rb +0 -85
  97. data/lib/ppc/baidu/report.rb +0 -82
  98. data/spec/api_baidu_account_spec.rb +0 -18
  99. data/spec/api_baidu_creative_spec.rb +0 -71
  100. data/spec/api_baidu_keyword_spec.rb +0 -64
  101. data/spec/api_baidu_report_spec.rb +0 -32
  102. data/spec/baidu_account_spec.rb +0 -32
  103. data/spec/baidu_bulk_spec.rb +0 -21
  104. data/spec/baidu_group_spec.rb +0 -56
  105. data/spec/baidu_plan_spec.rb +0 -129
  106. data/spec/baidu_report_spec.rb +0 -24
  107. data/spec/operation_spec.rb +0 -87
@@ -0,0 +1,30 @@
1
+ describe ::PPC::API::Sm::Report do
2
+ auth = $sm_auth
3
+ date = "20150407"
4
+
5
+ task_id = nil
6
+ it 'can get professional report id' do
7
+ param = { type: 'account', level:'account',range:'account',unit:'day', device:'all', startDate: date, endDate: date}
8
+ response = ::PPC::API::Sm::Report::get_id( auth, param )
9
+ task_id = response[:result]
10
+ expect(task_id).not_to be_nil
11
+ end
12
+
13
+ it 'can get professional report status' do
14
+ response = ::PPC::API::Sm::Report::get_state( auth, task_id )
15
+ status = response[:result]
16
+ expect(status).not_to be_nil
17
+ end
18
+
19
+ fileId = nil
20
+ it 'can get professional report download fileId' do
21
+ response = ::PPC::API::Sm::Report::get_fileId( auth, task_id )
22
+ fileId = response[:result]
23
+ expect(fileId).not_to be_nil
24
+ end
25
+
26
+ it 'can get the file' do
27
+ response = ::PPC::API::Sm::Report::get_file(auth, fileId)
28
+ warn response.force_encoding("GB2312").encode("UTF-8")
29
+ end
30
+ end
@@ -0,0 +1,17 @@
1
+ describe ::PPC::API::Sogou::Account do
2
+ auth = $sogou_auth
3
+
4
+ it 'can get account info' do
5
+ result = ::PPC::API::Sogou::Account::info( auth )
6
+ is_success( result )
7
+ expect(result[:result][:id].to_i).to be > 0
8
+ end
9
+
10
+ it 'can update account' do
11
+ update = {budget:0}
12
+ result = ::PPC::API::Sogou::Account::update( auth, update )
13
+ is_success( result )
14
+ expect(result[:result][:id].to_i).to be > 0
15
+ end
16
+
17
+ end
@@ -0,0 +1,51 @@
1
+ # -*- coding:utf-8 -*-
2
+ describe ::PPC::API::Sogou::Creative do
3
+ '''
4
+ sogou的创意服务在add的时候需要审核因此自动测试不能一次通过,
5
+ 会出现Creative is pending的error.不过手动测试方法没问题了。
6
+ '''
7
+ auth = $sogou_auth
8
+
9
+ # prepare for test param
10
+ ::PPC::API::Sogou.debug_off
11
+ test_group_id = ::PPC::API::Sogou::Group::ids( auth )[:result][0][:group_ids][0]
12
+ test_creative_id = []
13
+ #::PPC::API::Sogou.debug_on
14
+
15
+ it 'can search Creative by group id' do
16
+ response = ::PPC::API::Sogou::Creative::search_by_group_id( auth, test_group_id )
17
+ is_success( response )
18
+ expect(response[:result]).not_to be_nil
19
+ end
20
+
21
+ it 'can add Creative' do
22
+ Creative = { group_id: test_group_id, title: 'testCreative0',
23
+ description1:"this is a test", description2: "this is another test",
24
+ pc_destination:$domain, pc_display:$domain }
25
+ response = ::PPC::API::Sogou::Creative::add( auth, Creative )
26
+ is_success( response )
27
+ expect(response[:result]).not_to be_nil
28
+ test_creative_id << response[:result][0][:id]
29
+ end
30
+
31
+ it 'can get status' do
32
+ response = ::PPC::API::Sogou::Creative::status( auth, test_creative_id)
33
+ is_success(response)
34
+ expect(response[:result]).not_to be_nil
35
+ expect(response[:result][0].keys).to eq [:cpc_grp_id, :title, :description1, :description2, :visit_url, :show_url, :pause, :opt, :id, :status]
36
+ end
37
+
38
+ it 'can update Creative' do
39
+ update = { id: test_creative_id[0], description1: 'sogou_expiediction', pause: true}
40
+ response = ::PPC::API::Sogou::Creative::update( auth, update )
41
+ is_success( response )
42
+ expect(response[:result]).not_to be_nil
43
+ p response
44
+ end
45
+
46
+ it 'can delete Creative' do
47
+ response = ::PPC::API::Sogou::Creative::delete( auth, test_creative_id )
48
+ is_success( response )
49
+ end
50
+
51
+ end
@@ -0,0 +1,50 @@
1
+ describe ::PPC::API::Sogou::Group do
2
+ auth = $sogou_auth
3
+
4
+ test_plan_id = ::PPC::API::Sogou::Plan.ids(auth)[:result][0]
5
+ test_group_id = []
6
+
7
+ it 'can get all group' do
8
+ response = ::PPC::API::Sogou::Group::ids( auth )
9
+ is_success( response )
10
+ expect(response[:result]).not_to be_nil
11
+ end
12
+
13
+ it 'can add group' do
14
+ group = { name: 'test_group', plan_id:test_plan_id, price:500 }
15
+ response = ::PPC::API::Sogou::Group::add( auth, group )
16
+ is_success( response )
17
+ test_group_id << response[:result][0][:id]
18
+ end
19
+
20
+ it 'can update group' do
21
+ group = { id: test_group_id[0], price:600 }
22
+ response = ::PPC::API::Sogou::Group::update( auth, group )
23
+ is_success( response )
24
+ expect(response[:result]).not_to be_nil
25
+ end
26
+
27
+ it 'can search group by group id' do
28
+ response = ::PPC::API::Sogou::Group::get( auth, test_group_id )
29
+ is_success( response )
30
+ expect(response[:result]).not_to be_nil
31
+ end
32
+
33
+ it 'can search group id by plan id' do
34
+ response = ::PPC::API::Sogou::Group::search_id_by_plan_id( auth, test_plan_id )
35
+ is_success( response )
36
+ expect(response[:result]).not_to be_nil
37
+ end
38
+
39
+ it 'search by plan id' do
40
+ response = ::PPC::API::Sogou::Group::search_by_plan_id( auth, test_plan_id )
41
+ is_success( response )
42
+ expect(response[:result]).not_to be_nil
43
+ end
44
+
45
+ it 'can delete group' do
46
+ response = ::PPC::API::Sogou::Group::delete( auth, test_group_id )
47
+ is_success( response )
48
+ end
49
+
50
+ end
@@ -0,0 +1,54 @@
1
+ # -*- coding:utf-8 -*-
2
+ describe ::PPC::API::Sogou::Keyword do
3
+ '''
4
+ sogou的关键词服务在add的时候需要审核因此不能一次通过,
5
+ 会出现keyword is pending的error.不过手动测试方法没问题了。
6
+ '''
7
+ auth = $sogou_auth
8
+
9
+ ::PPC::API::Sogou.debug_off
10
+ test_group_id = ::PPC::API::Sogou::Group::ids( auth )[:result][0][:group_ids][0]
11
+ test_keyword_id = []
12
+ #::PPC::API::Sogou.debug_on
13
+
14
+ it 'can search keyword by group id' do
15
+ response = ::PPC::API::Sogou::Keyword::search_by_group_id( auth, test_group_id )
16
+ is_success( response )
17
+ expect(response[:result]).not_to be_nil
18
+ end
19
+
20
+ it 'can add keyword' do
21
+ keyword = { group_id: test_group_id, keyword: 'testkeyword123', match_type:'exact' }
22
+ response = ::PPC::API::Sogou::Keyword::add( auth, keyword )
23
+ is_success( response )
24
+ expect(response[:result]).not_to be_nil
25
+ test_keyword_id << response[:result][0][:id]
26
+ end
27
+
28
+ it 'can get status' do
29
+ response = ::PPC::API::Sogou::Keyword::status( auth, test_keyword_id )
30
+ is_success(response)
31
+ expect(response[:result][0].keys).to eq [:id,:status]
32
+ expect(response[:result]).not_to be_nil
33
+ end
34
+
35
+ it 'can get quality' do
36
+ response = ::PPC::API::Sogou::Keyword::quality( auth, test_keyword_id)
37
+ is_success(response)
38
+ expect(response[:result][0].keys).to eq [:id,:quality]
39
+ expect(response[:result]).not_to be_nil
40
+ end
41
+
42
+ it 'can update keyword' do
43
+ update = { id: test_keyword_id[0], pause: true}
44
+ response = ::PPC::API::Sogou::Keyword::update( auth, update )
45
+ is_success( response )
46
+ expect(response[:result]).not_to be_nil
47
+ end
48
+
49
+ it 'can delete keyword' do
50
+ response = ::PPC::API::Sogou::Keyword::delete( auth, test_keyword_id )
51
+ is_success( response )
52
+ end
53
+
54
+ end
@@ -0,0 +1,43 @@
1
+ describe ::PPC::API::Sogou::Plan do
2
+ auth = $sogou_auth
3
+
4
+ test_plan_id = []
5
+
6
+ it "can get all plans" do
7
+ response = ::PPC::API::Sogou::Plan::all( auth )
8
+ is_success( response )
9
+ expect(response[:result]).not_to be_nil
10
+ end
11
+
12
+ it "can get all plan id" do
13
+ response = ::PPC::API::Sogou::Plan::ids( auth )
14
+ is_success( response )
15
+ expect(response[:result]).not_to be_nil
16
+ end
17
+
18
+ it "can add plan" do
19
+ test_plan = { name: "test_elong", negative: ["test"] }
20
+ response = ::PPC::API::Sogou::Plan::add( auth, test_plan )
21
+ is_success( response )
22
+ test_plan_id << response[:result][0][:id]
23
+ end
24
+
25
+ it "can get plan by id" do
26
+ response = ::PPC::API::Sogou::Plan::get( auth, test_plan_id )
27
+ is_success( response )
28
+ expect(response[:result]).not_to be_nil
29
+ end
30
+
31
+ it 'can update plan' do
32
+ update = { id: test_plan_id[0], name:"test_plan_update"}
33
+ response = ::PPC::API::Sogou::Plan::update( auth, update )
34
+ is_success( response )
35
+ expect(response[:result]).not_to be_nil
36
+ end
37
+
38
+ it "can delete plan" do
39
+ response = ::PPC::API::Sogou::Plan::delete( auth, test_plan_id )
40
+ is_success( response )
41
+ end
42
+
43
+ end
@@ -0,0 +1,51 @@
1
+ describe ::PPC::API::Sogou::Report do
2
+ auth = $sogou_auth
3
+
4
+ param = {}
5
+ param[:type] = 'keyword'
6
+ param[:fields] = %w(impression click cpc cost ctr)
7
+ param[:endDate] = ( Time.now-2*3600*24).to_s[0..9].split('-').join
8
+ param[:startDate] =( Time.now-7*3600*24).to_s[0..9].split('-').join
9
+
10
+
11
+ test_report_id = []
12
+ it "can get report id" do
13
+ response = ::PPC::API::Sogou::Report.get_id( auth, param )
14
+ is_success( response )
15
+ test_report_id << response[:result]
16
+ end
17
+
18
+ it "can get report state" do
19
+ response = ::PPC::API::Sogou::Report.get_state( auth, test_report_id[0] )
20
+ is_success( response )
21
+ end
22
+
23
+ it "can get report url" do
24
+ response = ::PPC::API::Sogou::Report.get_url( auth, test_report_id[0] )
25
+ is_success( response )
26
+ end
27
+
28
+ it "can download one report" do
29
+ report = ::PPC::API::Sogou::Report.download_report( auth, param )
30
+ end
31
+
32
+ end
33
+
34
+ describe "::PPC::API::Sogou::Report Operation interface " do
35
+ auth = $sogou_auth
36
+
37
+ subject{
38
+ ::PPC::API::Sogou::Report
39
+ }
40
+ # opetation report test
41
+ it 'can get report' do
42
+ endDate = ( Time.now-2*3600*24).to_s[0..9].split('-').join
43
+ startDate =( Time.now-27*3600*24).to_s[0..9].split('-').join
44
+
45
+ param = {startDate:startDate, endDate:endDate}
46
+ subject.query_report( auth, param )
47
+ subject.keyword_report( auth, param )
48
+ subject.creative_report( auth,param )
49
+ end
50
+
51
+ end
data/spec/spec_helper.rb CHANGED
@@ -81,17 +81,56 @@ end
81
81
 
82
82
  require 'ppc'
83
83
 
84
- $baidu_domain = ''
85
- $baidu_username = ''
86
- $baidu_password = ''
87
- $baidu_token = ''
88
- $qihu_username = ''
89
- $qihu_password = ''
90
- $qihu_token = ''
91
- $sogou_username = ''
92
- $sogou_password = ''
93
- $sogou_token = ''
84
+ baidu_username = ''
85
+ baidu_password = ''
86
+ baidu_token = ''
94
87
 
88
+ qihu_username = ''
89
+ qihu_password = ''
90
+ qihu_token = ''
91
+ qihu_api_key = ''
92
+ qihu_api_secret = ''
93
+
94
+ sogou_username = ''
95
+ sogou_password = ''
96
+ sogou_token = ''
97
+
98
+ sm_username = ''
99
+ sm_password = ''
100
+ sm_token = ''
101
+ sm_target = ''
102
+
103
+ $domain = ''
104
+ $baidu_auth = {
105
+ username: baidu_username,
106
+ password: baidu_password,
107
+ token: baidu_token,
108
+ se: 'baidu'
109
+ }
110
+
111
+ $qihu_auth = {
112
+ username: qihu_username,
113
+ password: qihu_password,
114
+ token: qihu_token,
115
+ api_key: qihu_api_key,
116
+ api_secret: qihu_api_secret,
117
+ se: 'qihu'
118
+ }
119
+
120
+ $sogou_auth = {
121
+ username: sogou_username,
122
+ password: sogou_password,
123
+ token: sogou_token,
124
+ se: 'sogou'
125
+ }
126
+
127
+ $sm_auth = {
128
+ username: sm_username,
129
+ password: sm_password,
130
+ token: sm_token,
131
+ target: sm_target,
132
+ se: 'sm'
133
+ }
95
134
  def is_success( result )
96
135
  expect( result[:succ] ).to eq true
97
136
  end
metadata CHANGED
@@ -1,37 +1,63 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ppc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chienli Ma, 刘梦晨, 刘明
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-05 00:00:00.000000000 Z
11
+ date: 2015-10-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: httparty
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
20
- type: :development
19
+ version: '0.13'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.13.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.13'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.13.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: savon
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '3.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.0.0
43
+ type: :runtime
21
44
  prerelease: false
22
45
  version_requirements: !ruby/object:Gem::Requirement
23
46
  requirements:
24
47
  - - "~>"
25
48
  - !ruby/object:Gem::Version
26
- version: '1.6'
49
+ version: '3.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.0.0
27
53
  - !ruby/object:Gem::Dependency
28
- name: rake
54
+ name: awesome_print
29
55
  requirement: !ruby/object:Gem::Requirement
30
56
  requirements:
31
57
  - - ">="
32
58
  - !ruby/object:Gem::Version
33
59
  version: '0'
34
- type: :development
60
+ type: :runtime
35
61
  prerelease: false
36
62
  version_requirements: !ruby/object:Gem::Requirement
37
63
  requirements:
@@ -57,40 +83,87 @@ files:
57
83
  - lib/ppc/api/baidu/creative.rb
58
84
  - lib/ppc/api/baidu/group.rb
59
85
  - lib/ppc/api/baidu/keyword.rb
86
+ - lib/ppc/api/baidu/phone_new_creative.rb
60
87
  - lib/ppc/api/baidu/plan.rb
88
+ - lib/ppc/api/baidu/rank.rb
61
89
  - lib/ppc/api/baidu/report.rb
62
- - lib/ppc/baidu.rb
63
- - lib/ppc/baidu/account.rb
64
- - lib/ppc/baidu/bulk.rb
65
- - lib/ppc/baidu/group.rb
66
- - lib/ppc/baidu/key.rb
67
- - lib/ppc/baidu/plan.rb
68
- - lib/ppc/baidu/report.rb
90
+ - lib/ppc/api/qihu.rb
91
+ - lib/ppc/api/qihu/account.rb
92
+ - lib/ppc/api/qihu/bulk.rb
93
+ - lib/ppc/api/qihu/creative.rb
94
+ - lib/ppc/api/qihu/group.rb
95
+ - lib/ppc/api/qihu/keyword.rb
96
+ - lib/ppc/api/qihu/plan.rb
97
+ - lib/ppc/api/qihu/rank.rb
98
+ - lib/ppc/api/qihu/report.rb
99
+ - lib/ppc/api/qihu/sublink.rb
100
+ - lib/ppc/api/shenma.rb
101
+ - lib/ppc/api/shenma/report.rb
102
+ - lib/ppc/api/sm.rb
103
+ - lib/ppc/api/sm/account.rb
104
+ - lib/ppc/api/sm/bulk.rb
105
+ - lib/ppc/api/sm/creative.rb
106
+ - lib/ppc/api/sm/group.rb
107
+ - lib/ppc/api/sm/keyword.rb
108
+ - lib/ppc/api/sm/phone_new_creative.rb
109
+ - lib/ppc/api/sm/plan.rb
110
+ - lib/ppc/api/sm/report.rb
111
+ - lib/ppc/api/sogou.rb
112
+ - lib/ppc/api/sogou/account.rb
113
+ - lib/ppc/api/sogou/bulk.rb
114
+ - lib/ppc/api/sogou/creative.rb
115
+ - lib/ppc/api/sogou/group.rb
116
+ - lib/ppc/api/sogou/keyword.rb
117
+ - lib/ppc/api/sogou/plan.rb
118
+ - lib/ppc/api/sogou/report.rb
119
+ - lib/ppc/ext.rb
69
120
  - lib/ppc/operation.rb
70
121
  - lib/ppc/operation/account.rb
71
122
  - lib/ppc/operation/creative.rb
72
123
  - lib/ppc/operation/group.rb
73
124
  - lib/ppc/operation/keyword.rb
74
125
  - lib/ppc/operation/plan.rb
126
+ - lib/ppc/operation/report.rb
75
127
  - ppc.gemspec
76
- - spec/api_baidu_account_spec.rb
77
- - spec/api_baidu_creative_spec.rb
78
- - spec/api_baidu_group_spec.rb
79
- - spec/api_baidu_keyword_spec.rb
80
- - spec/api_baidu_plan_spec.rb
81
- - spec/api_baidu_report_spec.rb
82
- - spec/api_baidu_spec.rb
83
- - spec/baidu_account_spec.rb
84
- - spec/baidu_bulk_spec.rb
85
- - spec/baidu_group_spec.rb
86
- - spec/baidu_plan_spec.rb
87
- - spec/baidu_report_spec.rb
88
- - spec/operation_spec.rb
89
- - spec/operation_spec_helper.rb
128
+ - spec/baidu/api_baidu_account_spec.rb
129
+ - spec/baidu/api_baidu_creative_spec.rb
130
+ - spec/baidu/api_baidu_group_spec.rb
131
+ - spec/baidu/api_baidu_keyword_spec.rb
132
+ - spec/baidu/api_baidu_phone_spec.rb
133
+ - spec/baidu/api_baidu_plan_spec.rb
134
+ - spec/baidu/api_baidu_report_spec.rb
135
+ - spec/baidu/api_baidu_spec.rb
136
+ - spec/operation/operation_baidu_report_spec.rb
137
+ - spec/operation/operation_baidu_spec.rb
138
+ - spec/operation/operation_qihu_report_spec.rb
139
+ - spec/operation/operation_qihu_spec.rb
140
+ - spec/operation/operation_sm_report_spec.rb
141
+ - spec/operation/operation_sogou_report_spec.rb
142
+ - spec/operation/operation_sogou_spec.rb
143
+ - spec/operation/operation_spec_helper.rb
144
+ - spec/qihu/api_qihu_account_spec.rb
145
+ - spec/qihu/api_qihu_creative_spec.rb
146
+ - spec/qihu/api_qihu_group_spec.rb
147
+ - spec/qihu/api_qihu_keyword_spec.rb
148
+ - spec/qihu/api_qihu_plan_spec.rb
149
+ - spec/qihu/api_qihu_report_spec.rb
150
+ - spec/qihu/api_qihu_sublink_spec.rb
151
+ - spec/sm/api_sm_account_spec.rb
152
+ - spec/sm/api_sm_creative_spec.rb
153
+ - spec/sm/api_sm_group_spec.rb
154
+ - spec/sm/api_sm_keyword_spec.rb
155
+ - spec/sm/api_sm_plan_spec.rb
156
+ - spec/sm/api_sm_report_spec.rb
157
+ - spec/sogou/api_sogou_account_spec.rb
158
+ - spec/sogou/api_sogou_creative_spec.rb
159
+ - spec/sogou/api_sogou_group_spec.rb
160
+ - spec/sogou/api_sogou_keyword_spec.rb
161
+ - spec/sogou/api_sogou_plan_spec.rb
162
+ - spec/sogou/api_sogou_report_spec.rb
90
163
  - spec/spec_helper.rb
91
- homepage: http://github.com/seoaqua/ppc
164
+ homepage: https://github.com/warriors-of-the-night/ppc
92
165
  licenses:
93
- - MIT
166
+ - GNU
94
167
  metadata: {}
95
168
  post_install_message:
96
169
  rdoc_options: []
@@ -108,23 +181,44 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
181
  version: '0'
109
182
  requirements: []
110
183
  rubyforge_project:
111
- rubygems_version: 2.4.4
184
+ rubygems_version: 2.4.8
112
185
  signing_key:
113
186
  specification_version: 4
114
187
  summary: ppc api for baidu qihu sogou
115
188
  test_files:
116
- - spec/api_baidu_account_spec.rb
117
- - spec/api_baidu_creative_spec.rb
118
- - spec/api_baidu_group_spec.rb
119
- - spec/api_baidu_keyword_spec.rb
120
- - spec/api_baidu_plan_spec.rb
121
- - spec/api_baidu_report_spec.rb
122
- - spec/api_baidu_spec.rb
123
- - spec/baidu_account_spec.rb
124
- - spec/baidu_bulk_spec.rb
125
- - spec/baidu_group_spec.rb
126
- - spec/baidu_plan_spec.rb
127
- - spec/baidu_report_spec.rb
128
- - spec/operation_spec.rb
129
- - spec/operation_spec_helper.rb
189
+ - spec/baidu/api_baidu_account_spec.rb
190
+ - spec/baidu/api_baidu_creative_spec.rb
191
+ - spec/baidu/api_baidu_group_spec.rb
192
+ - spec/baidu/api_baidu_keyword_spec.rb
193
+ - spec/baidu/api_baidu_phone_spec.rb
194
+ - spec/baidu/api_baidu_plan_spec.rb
195
+ - spec/baidu/api_baidu_report_spec.rb
196
+ - spec/baidu/api_baidu_spec.rb
197
+ - spec/operation/operation_baidu_report_spec.rb
198
+ - spec/operation/operation_baidu_spec.rb
199
+ - spec/operation/operation_qihu_report_spec.rb
200
+ - spec/operation/operation_qihu_spec.rb
201
+ - spec/operation/operation_sm_report_spec.rb
202
+ - spec/operation/operation_sogou_report_spec.rb
203
+ - spec/operation/operation_sogou_spec.rb
204
+ - spec/operation/operation_spec_helper.rb
205
+ - spec/qihu/api_qihu_account_spec.rb
206
+ - spec/qihu/api_qihu_creative_spec.rb
207
+ - spec/qihu/api_qihu_group_spec.rb
208
+ - spec/qihu/api_qihu_keyword_spec.rb
209
+ - spec/qihu/api_qihu_plan_spec.rb
210
+ - spec/qihu/api_qihu_report_spec.rb
211
+ - spec/qihu/api_qihu_sublink_spec.rb
212
+ - spec/sm/api_sm_account_spec.rb
213
+ - spec/sm/api_sm_creative_spec.rb
214
+ - spec/sm/api_sm_group_spec.rb
215
+ - spec/sm/api_sm_keyword_spec.rb
216
+ - spec/sm/api_sm_plan_spec.rb
217
+ - spec/sm/api_sm_report_spec.rb
218
+ - spec/sogou/api_sogou_account_spec.rb
219
+ - spec/sogou/api_sogou_creative_spec.rb
220
+ - spec/sogou/api_sogou_group_spec.rb
221
+ - spec/sogou/api_sogou_keyword_spec.rb
222
+ - spec/sogou/api_sogou_plan_spec.rb
223
+ - spec/sogou/api_sogou_report_spec.rb
130
224
  - spec/spec_helper.rb