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,126 @@
1
+ require 'time'
2
+ require_relative 'operation_spec_helper'
3
+
4
+ auth = $baidu_auth.merge( se:'baidu' )
5
+ preparation = ::PPC::API::Baidu::Group::ids( auth )
6
+ test_plan_id = preparation[:result][0][:plan_id]
7
+ test_group_id = preparation[:result][0][:group_ids][0]
8
+ test_keyword_id = 16261990918
9
+ test_creative_id = 5043421168
10
+
11
+ ::PPC::API::Baidu::debug_on
12
+
13
+ describe ::PPC::Operation::Account do
14
+ subject{
15
+ ::PPC::Operation::Account.new( auth )
16
+ }
17
+
18
+ it_should_behave_like( "object", {budget:2990})
19
+ it_should_behave_like( "object parent", 'plan')
20
+
21
+ it_should_behave_like( "object operator", 'plan',
22
+ {name:'operation_test_plan'},
23
+ {name:'updated_operation_test_plan'})
24
+
25
+ it_should_behave_like( "object operator", 'group',
26
+ { name:'test_operation_group',
27
+ plan_id:test_plan_id,
28
+ price:500 },
29
+ {name:'updated_operation_test_group'} )
30
+
31
+ it_should_behave_like( "object operator", 'keyword',
32
+ { keyword:'testKeyword', group_id:test_group_id,
33
+ match_type:'exact'},
34
+ { match_type:'wide'})
35
+
36
+ it_should_behave_like( "object operator", 'creative',
37
+ {
38
+ group_id: test_group_id,
39
+ title: 'OperationTestCreative', preference:1,
40
+ description1:'this is rest',
41
+ description2:'also is a test',
42
+ pc_destination:$baidu_domain,
43
+ pc_display:$baidu_domain
44
+ },
45
+ {
46
+ title:'OperationTestCreative',
47
+ description1:'this is a updated test',
48
+ pc_destination:$baidu_domain,
49
+ mobil_destination:$baidu_domain
50
+ } )
51
+
52
+ # opetation report test
53
+ it 'can get report' do
54
+ endDate = ( Time.now-100*3600*24).utc.iso8601
55
+ startDate =( Time.now-20*3600*24).utc.iso8601
56
+ pa = { startDate:startDate, endDate:endDate }
57
+ subject.query_report( pa )
58
+ subject.keyword_report( pa )
59
+ subject.creative_report( pa )
60
+ end
61
+
62
+ # bulk job test
63
+ it "acn download all objs" do
64
+ subject.download
65
+ end
66
+ end
67
+
68
+ describe ::PPC::Operation::Plan do
69
+ # get test subject
70
+ subject{
71
+ ::PPC::Operation::Plan.new( auth.merge({id:test_plan_id}) )
72
+ }
73
+ it_should_behave_like( "object", {budget:2000})
74
+ it_should_behave_like( "object operator", 'group',
75
+ {name:'test_operation_group', price:500},
76
+ {name:'updated_operation_test_group'} )
77
+ it_should_behave_like( "object parent", 'group')
78
+ end
79
+
80
+ describe ::PPC::Operation::Group do
81
+ # get test subject
82
+ subject{
83
+ ::PPC::Operation::Group.new( auth.merge({id:test_group_id}) )
84
+ }
85
+
86
+ it_should_behave_like( "object", {price:200})
87
+ it_should_behave_like( "object operator", 'keyword',
88
+ {
89
+ keyword:'testKeyword', group_id:test_group_id,
90
+ match_type:'exact'
91
+ },
92
+ { match_type:'wide'})
93
+ it_should_behave_like( "object parent", 'keyword')
94
+ end
95
+
96
+ describe ::PPC::Operation::Keyword do
97
+ # keyword subject
98
+ subject{
99
+ ::PPC::Operation::Keyword.new( auth.merge({id:test_keyword_id}) )
100
+ }
101
+
102
+ it 'can get info' do
103
+ is_success( subject.info )
104
+ end
105
+
106
+ it 'can update info' do
107
+ # not implemented
108
+ end
109
+
110
+ end
111
+
112
+ describe ::PPC::Operation::Creative do
113
+ # keyword subject
114
+ subject{
115
+ ::PPC::Operation::Creative.new( auth.merge({id:test_creative_id}) )
116
+ }
117
+
118
+ it 'can get info' do
119
+ is_success( subject.info )
120
+ end
121
+
122
+ it 'can update info' do
123
+ #not implemented
124
+ end
125
+
126
+ end
@@ -0,0 +1,18 @@
1
+ auth = $qihu_auth
2
+
3
+ describe ::PPC::Operation::Account do
4
+ subject{
5
+ ::PPC::Operation::Account.new( auth )
6
+ }
7
+ # opetation report test
8
+ it 'can get report' do
9
+ endDate = ( Time.now-2*3600*24).to_s[0..9].split('-').join
10
+ startDate =( Time.now-27*3600*24).to_s[0..9].split('-').join
11
+
12
+ p "startDate:#{startDate},endDate:#{endDate}"
13
+ param = {startDate:startDate, endDate:endDate}
14
+
15
+ subject.keyword_report( param, true )
16
+ subject.creative_report( param, true )
17
+ end
18
+ end
@@ -0,0 +1,94 @@
1
+ require './operation_spec_helper'
2
+
3
+ auth = $qihu_auth
4
+
5
+ test_plan_id = 717479502
6
+ test_group_id = 1203987666
7
+ test_keyword_id
8
+
9
+ describe ::PPC::Operation::Account do
10
+ subject{
11
+ ::PPC::Operation::Account.new( auth )
12
+ }
13
+
14
+ it_should_behave_like( "object", {budget:2990})
15
+
16
+ it_should_behave_like( "object operator", 'plan',
17
+ {name:'operation_test_plan'},
18
+ {name:'updated_operation_test_plan'})
19
+
20
+ it_should_behave_like( "object operator", 'group',
21
+ {
22
+ name:'test_operation_group',
23
+ plan_id:test_plan_id, price:500
24
+ },
25
+ {name:'updated_operation_test_group'} )
26
+
27
+ # report test
28
+ it 'can get report' do
29
+ endDate = ( Time.now-2*3600*24).to_s[0..9].split('-').join
30
+ startDate =( Time.now-27*3600*24).to_s[0..9].split('-').join
31
+
32
+ param = {startDate:startDate, endDate:endDate}
33
+
34
+ subject.keyword_report( param, true )
35
+ subject.creative_report( param, true )
36
+ end
37
+ end
38
+
39
+ describe ::PPC::Operation::Plan do
40
+ # get test subject
41
+ subject{
42
+ ::PPC::Operation::Plan.new( auth.merge({id:test_plan_id}) )
43
+ }
44
+
45
+ it_should_behave_like( "object", {budget:2000})
46
+
47
+ it_should_behave_like( "object operator", 'group',
48
+ {name:'test_operation_group', price:500},
49
+ {name:'updated_operation_test_group'} )
50
+
51
+ it_should_behave_like( "object parent", 'group')
52
+ end
53
+
54
+ describe ::PPC::Operation::Group do
55
+ # get test subject
56
+ subject{
57
+ ::PPC::Operation::Group.new( auth.merge({id:test_group_id}) )
58
+ }
59
+
60
+ it_should_behave_like( "object", {price:200})
61
+
62
+ it_should_behave_like( "object operator", 'keyword',
63
+ {
64
+ keyword:'testKeyword',
65
+ group_id:test_group_id, match_type:'exact'
66
+ },
67
+ { match_type:'wide'}
68
+ )
69
+
70
+ it_should_behave_like( "object parent", 'keyword')
71
+
72
+ end
73
+
74
+ describe ::PPC::Operation::Keyword do
75
+ # keyword subject
76
+ subject{
77
+ ::PPC::Operation::Keyword.new( auth.merge({id:test_keyword_id}) )
78
+ }
79
+
80
+ it 'can get info' do
81
+ is_success( subject.info )
82
+ end
83
+
84
+ it 'can update info' do
85
+ end
86
+ end
87
+
88
+ describe ::PPC::Operation::Creative do
89
+ #
90
+ end
91
+
92
+
93
+
94
+
@@ -0,0 +1,21 @@
1
+ describe "::PPC::API::Sm::Report Operation interface" do
2
+ auth = $sm_auth
3
+
4
+ subject{
5
+ ::PPC::API::Sm::Report
6
+ }
7
+ # opetation report test
8
+ it 'can get report' do
9
+ endDate = "20150407"
10
+ startDate = "20150407"
11
+
12
+ p "startDate:#{startDate}"
13
+ p "endDate:#{endDate}"
14
+
15
+ param = {startDate:startDate, endDate:endDate}
16
+ p subject.query_report( auth, param, true )
17
+ p subject.keyword_report( auth, param, true )
18
+ p subject.creative_report( auth,param, true )
19
+ end
20
+
21
+ end
@@ -0,0 +1,17 @@
1
+ describe ::PPC::Operation::Account do
2
+ subject{
3
+ ::PPC::Operation::Account.new( $sogou_auth )
4
+ }
5
+ # opetation report test
6
+ it 'can get report' do
7
+ endDate = ( Time.now-2*3600*24).to_s[0..9].split('-').join
8
+ startDate =( Time.now-27*3600*24).to_s[0..9].split('-').join
9
+
10
+ p "startDate:#{startDate},endDate:#{endDate}"
11
+ param = {startDate:startDate, endDate:endDate}
12
+
13
+ subject.query_report( param )
14
+ subject.keyword_report( param )
15
+ subject.creative_report( param )
16
+ end
17
+ end
@@ -0,0 +1,88 @@
1
+ require_relative 'operation_spec_helper'
2
+
3
+ auth = $sogou_auth
4
+ preparation = ::PPC::API::Sogou::Group::ids( auth )
5
+ test_plan_id = preparation[:result][0][:plan_id]
6
+ test_group_id = preparation[:result][0][:group_ids][0]
7
+ test_keyword_id = 2517133587
8
+ test_creative_id = 1519567392
9
+
10
+ ::PPC::API::Sogou.debug_on
11
+
12
+ describe ::PPC::Operation::Account do
13
+ subject{
14
+ ::PPC::Operation::Account.new( auth )
15
+ }
16
+
17
+ it_should_behave_like( "object", {budget:2990})
18
+ it_should_behave_like( "object parent", 'plan')
19
+
20
+ it_should_behave_like( "object operator", 'plan', {name:'operation_test_plan'},
21
+ {name:'updated_operation_test_plan'})
22
+
23
+ it_should_behave_like( "object operator", 'group',
24
+ {name:'test_operation_group',plan_id:test_plan_id, price:500},
25
+ {name:'updated_operation_test_group'} )
26
+
27
+ # report test
28
+ it 'can get report' do
29
+ endDate = ( Time.now-2*3600*24).to_s[0..9].split('-').join
30
+ startDate =( Time.now-27*3600*24).to_s[0..9].split('-').join
31
+
32
+ param = {startDate:startDate, endDate:endDate}
33
+
34
+ subject.query_report( param )
35
+ subject.keyword_report( param )
36
+ subject.creative_report( param )
37
+ end
38
+
39
+ end
40
+
41
+ describe ::PPC::Operation::Plan do
42
+ # get test subject
43
+ subject{
44
+ ::PPC::Operation::Plan.new( auth.merge({id:test_plan_id}) )
45
+ }
46
+
47
+ it_should_behave_like( "object", {budget:2000})
48
+ it_should_behave_like( "object operator", 'group',
49
+ {name:'test_operation_group', price:500},
50
+ {name:'updated_operation_test_group'} )
51
+ it_should_behave_like( "object parent", 'group')
52
+ end
53
+
54
+ describe ::PPC::Operation::Group do
55
+ # get test subject
56
+ subject{
57
+ ::PPC::Operation::Group.new( auth.merge({id:test_group_id}) )
58
+ }
59
+
60
+ it_should_behave_like( "object", {price:200})
61
+ it_should_behave_like( "object parent", 'keyword')
62
+ end
63
+
64
+ describe ::PPC::Operation::Keyword do
65
+ # keyword subject
66
+ subject{
67
+ ::PPC::Operation::Keyword.new( auth.merge({id:test_keyword_id}) )
68
+ }
69
+
70
+ it 'can get info' do
71
+ is_success( subject.info )
72
+ end
73
+ end
74
+
75
+ describe ::PPC::Operation::Creative do
76
+ # creative subject
77
+ subject{
78
+ ::PPC::Operation::Creative.new( auth.merge({id:test_keyword_id}) )
79
+ }
80
+
81
+ it 'can get info' do
82
+ is_success( subject.info )
83
+ end
84
+ end
85
+
86
+
87
+
88
+
@@ -1,4 +1,4 @@
1
- shared_examples "it can operate itself" do
1
+ shared_examples "object" do
2
2
  | update |
3
3
  it 'can get info' do
4
4
  result = subject.info
@@ -12,7 +12,7 @@ shared_examples "it can operate itself" do
12
12
  end
13
13
 
14
14
  # 在这之前要describ object
15
- shared_examples "it can operate sub_objects" do
15
+ shared_examples "object operator" do
16
16
  |object_name, add_info, update_info |
17
17
  object_id = 0
18
18
 
@@ -20,8 +20,6 @@ shared_examples "it can operate sub_objects" do
20
20
  method_name = "add_"+object_name
21
21
  result = subject.send( method_name.to_sym, add_info )
22
22
  is_success( result )
23
- p "HAHAHAAAHA"*12
24
- p result
25
23
  object_id = result[:result][0][:id]
26
24
  end
27
25
 
@@ -38,7 +36,7 @@ shared_examples "it can operate sub_objects" do
38
36
  end
39
37
  end
40
38
 
41
- shared_examples "it can get all sub_objects" do
39
+ shared_examples "object parent" do
42
40
  | object_name|
43
41
  it 'can get all objects'do
44
42
  result = subject.send( (object_name + 's').to_sym )
@@ -0,0 +1,29 @@
1
+ describe ::PPC::API::Qihu::Account do
2
+ auth = $qihu_auth
3
+ # ::PPC::API::Qihu.debug_on
4
+ it 'can get accnout info' do
5
+ response = ::PPC::API::Qihu::Account::info( auth )
6
+ p response
7
+ is_success( response )
8
+ expect( response[:result].keys ).to eq [:id, :name, :email, :company, :industry1, :industry2, :balance, :budget,:resources, :open_domains]
9
+ end
10
+
11
+ it 'can update exclude iplist' do
12
+ response = ::PPC::API::Qihu::Account::update_exclude_ip( auth, ['127.0.0.1'] )
13
+ p response
14
+ is_success( response )
15
+ end
16
+
17
+ it 'can get exclude ip list' do
18
+ response = ::PPC::API::Qihu::Account::get_exclude_ip( auth )
19
+ p response
20
+ is_success( response )
21
+ end
22
+
23
+ it 'can update budget' do
24
+ response = ::PPC::API::Qihu::Account::update_budget( auth, 0 )
25
+ p response
26
+ is_success( response )
27
+ end
28
+
29
+ end
@@ -0,0 +1,48 @@
1
+ describe ::PPC::API::Qihu::Creative do
2
+ auth = $qihu_auth
3
+
4
+ test_plan_id = ::PPC::API::Qihu::Plan::ids( auth )[:result][0].to_i
5
+ test_group_id = ::PPC::API::Qihu::Group::search_id_by_plan_id( auth, test_plan_id )[:result][0][:group_ids][0].to_i
6
+ test_Creative_id = 0
7
+
8
+ it 'can search creatives by group id' do
9
+ response = ::PPC::API::Qihu::Creative::search_id_by_group_id( auth, test_group_id )
10
+ is_success( response)
11
+ expect( response[:result].class ).to eq Array
12
+ end
13
+
14
+ it 'can add a creative' do
15
+ creative1 = {
16
+ group_id:test_group_id,
17
+ title:"testCreative1",
18
+ description1:'testhahaa',
19
+ pc_destination:'www.elong.com'
20
+ }
21
+ response = ::PPC::API::Qihu::Creative::add( auth, creative1)
22
+ is_success( response )
23
+ test_Creative_id = response[:result][0][:id]
24
+ end
25
+
26
+ it 'can update a creative' do
27
+ creative = { id:test_Creative_id, description2:'testaaaaa' }
28
+ response = ::PPC::API::Qihu::Creative::update( auth, creative )
29
+ is_success( response )
30
+ end
31
+
32
+ it 'can get creatives' do
33
+ response = ::PPC::API::Qihu::Creative::get( auth, [test_Creative_id] )
34
+ is_success( response )
35
+ expect( response[:result][0].keys ).to include( :id, :title )
36
+ end
37
+
38
+ it 'can get status' do
39
+ response = ::PPC::API::Qihu::Creative::status( auth, [test_Creative_id] )
40
+ is_success( response )
41
+ end
42
+
43
+ it 'can delete a creative' do
44
+ response = ::PPC::API::Qihu::Creative::delete( auth, [test_Creative_id] )
45
+ is_success( response )
46
+ end
47
+
48
+ end