sklik-api 0.0.2 → 0.0.3

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.0.3
@@ -64,6 +64,7 @@ Example of input hash
64
64
  if args[:campaign_id].nil? || (args[:campaign_id] && args[:campaign_id].to_i == campaign[:id].to_i)
65
65
  out << Campaign.new(
66
66
  :campaign_id => campaign[:id],
67
+ :customer_id => args[:customer_id],
67
68
  :budget => campaign[:dayBudget].to_f/100.0,
68
69
  :name => campaign[:name],
69
70
  :status => fix_status(campaign)
@@ -84,6 +85,16 @@ Example of input hash
84
85
  return :unknown
85
86
  end
86
87
  end
88
+
89
+ def status_for_update
90
+ if @args[:status] == :running
91
+ return "active"
92
+ elsif @args[:status] == :paused
93
+ return "suspend"
94
+ else
95
+ return nil
96
+ end
97
+ end
87
98
 
88
99
  def to_hash
89
100
  if @campaign_data
@@ -95,6 +106,23 @@ Example of input hash
95
106
  end
96
107
  end
97
108
 
109
+ def update_args
110
+ out = []
111
+
112
+ #add campaign id on which will be performed update
113
+ out << @args[:campaign_id]
114
+
115
+ #prepare campaign struct
116
+ args = {}
117
+ args[:name] = @args[:name] if @args[:name]
118
+ args[:status] = status_for_update if status_for_update
119
+ args[:dayBudget] = (@args[:budget] * 100).to_i if @args[:budget]
120
+ args[:context] = @args[:network_setting][:context] ||= true if @args[:network_setting]
121
+ out << args
122
+
123
+ out
124
+ end
125
+
98
126
  def create_args
99
127
  out = []
100
128
 
@@ -107,14 +135,37 @@ Example of input hash
107
135
 
108
136
  #add customer id on which account campaign should be created
109
137
  out << @customer_id if @customer_id
110
- pp @customer_id
111
- pp out
112
138
  out
113
139
  end
140
+
141
+ def self.get_current_status args = {}
142
+ raise ArgumentError, "Campaign_id is required" unless args[:campaign_id]
143
+ campaigns = self.find(args)
144
+ pp campaigns
145
+ if campaigns.size == 1
146
+ campaigns.first.args[:status]
147
+ else
148
+ raise ArgumentError, "Campaign by #{args.inspect} couldn't be found!"
149
+ end
150
+ end
151
+
152
+ def get_current_status
153
+ self.class.get_current_status :campaign_id => @args[:campaign_id], :customer_id => @customer_id
154
+ end
114
155
 
115
156
  def save
116
157
  if @args[:campaign_id] #do update
158
+ #get current status of campaign
159
+ before_status = get_current_status
160
+
161
+ #restore campaign before update
162
+ restore if before_status == :stopped
163
+
164
+ #update campaign
165
+ update
117
166
 
167
+ #remove it if new status is stopped or status doesn't changed and before it was stopped
168
+ remove if (@args[:status] == :stopped) || (@args[:status].nil? && before_status == :stopped)
118
169
  else #do save
119
170
  #create campaign
120
171
  create
@@ -39,7 +39,16 @@ class SklikApi
39
39
  def args
40
40
  @args
41
41
  end
42
-
42
+
43
+ def restore
44
+ connection.call("#{self.class::NAME}.restore", @args[:campaign_id] ) { |param| true }
45
+ end
46
+
47
+ def remove
48
+ pp "REMOVING!: #{@args[:campaign_id]}"
49
+ connection.call("#{self.class::NAME}.remove", @args[:campaign_id] ) { |param| true }
50
+ end
51
+
43
52
  def create
44
53
  out = connection.call("#{self.class::NAME}.create", *create_args ) { |param|
45
54
  param["#{self.class::NAME}Id".to_sym]
@@ -48,10 +57,20 @@ class SklikApi
48
57
  @args
49
58
  end
50
59
 
60
+ def update
61
+ pp "updating!!!"
62
+ pp update_args
63
+ out = connection.call("#{self.class::NAME}.setAttributes", *update_args ) { |param| true }
64
+ end
65
+
51
66
  def create_args
52
67
  raise(NoMethodError, "Please implement 'create_args' method in class: #{self.class} - should return array which will be placed into create method")
53
68
  end
54
69
 
70
+ def update_args
71
+ raise(NoMethodError, "Please implement 'update_args' method in class: #{self.class} - should return array which will be placed into update method")
72
+ end
73
+
55
74
  def to_hash
56
75
  raise(NoMethodError, "Please implement 'to_hash' method in class: #{self.class} - should return hash which contains all data")
57
76
  end
data/sklik-api.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "sklik-api"
8
- s.version = "0.0.2"
8
+ s.version = "0.0.3"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Ondrej Bartas"]
12
- s.date = "2012-03-25"
12
+ s.date = "2012-03-26"
13
13
  s.description = "Sklik advertising PPC api for creating campaigns and updating them when they runs"
14
14
  s.email = "ondrej@bartas.cz"
15
15
  s.extra_rdoc_files = [
@@ -84,11 +84,10 @@ class CampaignTest < Test::Unit::TestCase
84
84
  @campaign.save
85
85
  end
86
86
 
87
- should "get current status" do
88
- assert_equal @campaign.args[:status], :running
89
- end
90
-
91
- should "be created with right parameters" do
87
+ should "be created with right parameters and updated" do
88
+
89
+ assert_equal @campaign.args[:status], :running, "Must be running"
90
+
92
91
  campaigns = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id])
93
92
  campaign_hash = campaigns.first.to_hash
94
93
  assert_equal campaign_hash[:campaign_id], @campaign.args[:campaign_id], "campaign id should be same"
@@ -96,8 +95,35 @@ class CampaignTest < Test::Unit::TestCase
96
95
  assert_equal campaign_hash[:budget].to_f, @test_campaign_hash[:budget].to_f, "budgets should be same"
97
96
  assert_equal campaign_hash[:name], @test_campaign_hash[:name], "campaign name should be same"
98
97
  assert_equal campaign_hash[:ad_groups].size, @test_campaign_hash[:ad_groups].size, "campaign ad_groups should have same count"
98
+
99
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
100
+ new_name = "Test of updated campaign name- #{Time.now.strftime("%Y.%m.%d %H:%M:%S")}"
101
+ campaign.args[:name] = new_name
102
+ campaign.save
103
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
104
+ assert_equal campaign_hash[:name], new_name, "campaign name should be same"
105
+
106
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
107
+ campaign.args[:status] = :paused
108
+ campaign.save
109
+ campaign_hash = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first.to_hash
110
+ assert_equal campaign_hash[:status], :paused, "campaign should be paused"
111
+
112
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
113
+ campaign.args[:status] = :stopped
114
+ puts "STOPPINGGGGGG"
115
+ campaign.save
116
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
117
+ assert_equal campaign.args[:status], :stopped, "campaign should be stopped"
118
+
119
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
120
+ campaign.args[:status] = :paused
121
+ puts "PAUSINGGGGGGG"
122
+ campaign.save
123
+ campaign = SklikApi::Campaign.find(:customer_id => @campaign.args[:customer_id], :campaign_id => @campaign.args[:campaign_id]).first
124
+ assert_equal campaign.args[:status], :paused, "campaign should be paused"
125
+
99
126
  end
100
127
  end
101
-
102
128
  end
103
129
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sklik-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-25 00:00:00.000000000 Z
12
+ date: 2012-03-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: json
16
- requirement: &70147290989060 !ruby/object:Gem::Requirement
16
+ requirement: &70320103849080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70147290989060
24
+ version_requirements: *70320103849080
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: unicode
27
- requirement: &70147290988340 !ruby/object:Gem::Requirement
27
+ requirement: &70320103848400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.4.0
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70147290988340
35
+ version_requirements: *70320103848400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: text
38
- requirement: &70147291022020 !ruby/object:Gem::Requirement
38
+ requirement: &70320103882000 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.2.0
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70147291022020
46
+ version_requirements: *70320103882000
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: i18n
49
- requirement: &70147291021400 !ruby/object:Gem::Requirement
49
+ requirement: &70320103881400 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ~>
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.6.0
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70147291021400
57
+ version_requirements: *70320103881400
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: activesupport
60
- requirement: &70147291020720 !ruby/object:Gem::Requirement
60
+ requirement: &70320103880680 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ~>
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 3.1.0
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70147291020720
68
+ version_requirements: *70320103880680
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rack-test
71
- requirement: &70147291020020 !ruby/object:Gem::Requirement
71
+ requirement: &70320103880000 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70147291020020
79
+ version_requirements: *70320103880000
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: shoulda-context
82
- requirement: &70147291019440 !ruby/object:Gem::Requirement
82
+ requirement: &70320103879440 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70147291019440
90
+ version_requirements: *70320103879440
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: turn
93
- requirement: &70147291018860 !ruby/object:Gem::Requirement
93
+ requirement: &70320103878840 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ~>
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: 0.8.2
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70147291018860
101
+ version_requirements: *70320103878840
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: minitest
104
- requirement: &70147291018320 !ruby/object:Gem::Requirement
104
+ requirement: &70320103878300 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70147291018320
112
+ version_requirements: *70320103878300
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: ansi
115
- requirement: &70147291017640 !ruby/object:Gem::Requirement
115
+ requirement: &70320103877640 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ~>
@@ -120,10 +120,10 @@ dependencies:
120
120
  version: 1.2.5
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70147291017640
123
+ version_requirements: *70320103877640
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: jeweler
126
- requirement: &70147291016940 !ruby/object:Gem::Requirement
126
+ requirement: &70320103876920 !ruby/object:Gem::Requirement
127
127
  none: false
128
128
  requirements:
129
129
  - - ~>
@@ -131,10 +131,10 @@ dependencies:
131
131
  version: 1.8.3
132
132
  type: :development
133
133
  prerelease: false
134
- version_requirements: *70147291016940
134
+ version_requirements: *70320103876920
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: fakeweb
137
- requirement: &70147291016300 !ruby/object:Gem::Requirement
137
+ requirement: &70320103876320 !ruby/object:Gem::Requirement
138
138
  none: false
139
139
  requirements:
140
140
  - - ! '>='
@@ -142,10 +142,10 @@ dependencies:
142
142
  version: '0'
143
143
  type: :development
144
144
  prerelease: false
145
- version_requirements: *70147291016300
145
+ version_requirements: *70320103876320
146
146
  - !ruby/object:Gem::Dependency
147
147
  name: thin
148
- requirement: &70147291015700 !ruby/object:Gem::Requirement
148
+ requirement: &70320103875700 !ruby/object:Gem::Requirement
149
149
  none: false
150
150
  requirements:
151
151
  - - ! '>='
@@ -153,10 +153,10 @@ dependencies:
153
153
  version: '0'
154
154
  type: :development
155
155
  prerelease: false
156
- version_requirements: *70147291015700
156
+ version_requirements: *70320103875700
157
157
  - !ruby/object:Gem::Dependency
158
158
  name: shotgun
159
- requirement: &70147291015120 !ruby/object:Gem::Requirement
159
+ requirement: &70320103875120 !ruby/object:Gem::Requirement
160
160
  none: false
161
161
  requirements:
162
162
  - - ! '>='
@@ -164,10 +164,10 @@ dependencies:
164
164
  version: '0'
165
165
  type: :development
166
166
  prerelease: false
167
- version_requirements: *70147291015120
167
+ version_requirements: *70320103875120
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: rcov
170
- requirement: &70147291034920 !ruby/object:Gem::Requirement
170
+ requirement: &70320103895060 !ruby/object:Gem::Requirement
171
171
  none: false
172
172
  requirements:
173
173
  - - =
@@ -175,7 +175,7 @@ dependencies:
175
175
  version: 0.9.10
176
176
  type: :development
177
177
  prerelease: false
178
- version_requirements: *70147291034920
178
+ version_requirements: *70320103895060
179
179
  description: Sklik advertising PPC api for creating campaigns and updating them when
180
180
  they runs
181
181
  email: ondrej@bartas.cz
@@ -222,7 +222,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
222
222
  version: '0'
223
223
  segments:
224
224
  - 0
225
- hash: -537179996951537212
225
+ hash: 291056950167711620
226
226
  required_rubygems_version: !ruby/object:Gem::Requirement
227
227
  none: false
228
228
  requirements: