oass 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/Gemfile +10 -0
- data/README.md +33 -0
- data/Rakefile +2 -0
- data/lib/oass.rb +24 -0
- data/lib/oass/campaign.rb +35 -0
- data/lib/oass/client.rb +59 -0
- data/lib/oass/creative.rb +50 -0
- data/lib/oass/errors.rb +4 -0
- data/lib/oass/version.rb +3 -0
- data/oass.gemspec +25 -0
- data/spec/fixtures/vcr_cassettes/Oass_Client/_read_campaign.yml +240 -0
- data/spec/fixtures/vcr_cassettes/Oass_Client/_read_creative.yml +160 -0
- data/spec/fixtures/vcr_cassettes/Oass_Client/_request.yml +291 -0
- data/spec/oass/client_spec.rb +161 -0
- data/spec/oass/configuration_spec.rb +11 -0
- data/spec/spec_helper.rb +11 -0
- metadata +136 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# O_ass_
|
2
|
+
Oass is a library to help you to interact with OAS and its bizarre soap API.
|
3
|
+
|
4
|
+
## Installation
|
5
|
+
gem install oass
|
6
|
+
|
7
|
+
## Configuration
|
8
|
+
Add global configurations directly to the Oass module:
|
9
|
+
|
10
|
+
Oass.configure do |config|
|
11
|
+
config.endpoint = "The wsdl endpoint"
|
12
|
+
config.account = "Your OAS account"
|
13
|
+
config.username = "LOL"
|
14
|
+
config.password = "WUT"
|
15
|
+
end
|
16
|
+
|
17
|
+
You can override any settings when you instantiate a new client
|
18
|
+
|
19
|
+
client = Oass::Client.new :username => "Other", :password => "Secret"
|
20
|
+
|
21
|
+
## Usage
|
22
|
+
client = Oass::Client.new
|
23
|
+
campaign = client.read_campaign("campaign_id")
|
24
|
+
|
25
|
+
You can also make requests that are not yet natively implemented
|
26
|
+
|
27
|
+
client.request "Campaign" do |xml|
|
28
|
+
xml.Campaign(:action => "list") do
|
29
|
+
xml.SearchCriteria do
|
30
|
+
xml.Status "L"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/Rakefile
ADDED
data/lib/oass.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'active_support/core_ext/module/attribute_accessors'
|
2
|
+
require 'active_support/core_ext/hash/reverse_merge'
|
3
|
+
require 'savon'
|
4
|
+
require 'oass/errors'
|
5
|
+
|
6
|
+
module Oass
|
7
|
+
autoload :Client, "oass/client"
|
8
|
+
autoload :Campaign, "oass/campaign"
|
9
|
+
autoload :Creative, "oass/creative"
|
10
|
+
|
11
|
+
mattr_accessor :endpoint
|
12
|
+
@@endpoint = "https://training7.247realmedia.com//oasapi/OaxApi?wsdl"
|
13
|
+
|
14
|
+
mattr_accessor :account
|
15
|
+
@@account = "OasDefault"
|
16
|
+
|
17
|
+
mattr_accessor :username
|
18
|
+
|
19
|
+
mattr_accessor :password
|
20
|
+
|
21
|
+
def configure
|
22
|
+
yield self
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module Oass
|
2
|
+
module Campaign
|
3
|
+
def read_campaign(id)
|
4
|
+
request "Campaign" do |xml|
|
5
|
+
xml.Campaign(:action => "read") do
|
6
|
+
xml.Overview { xml.Id id }
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def create_campaign(attributes)
|
12
|
+
request "Campaign" do |xml|
|
13
|
+
xml.Campaign(:action => "add") do
|
14
|
+
xml.Overview do
|
15
|
+
# Yeah... the attributes must be in the right order =/
|
16
|
+
xml.Id attributes[:id]
|
17
|
+
xml.AdvertiserId attributes[:advertiser_id]
|
18
|
+
xml.Name attributes[:name]
|
19
|
+
xml.AgencyId attributes[:agency_id]
|
20
|
+
xml.Description attributes[:description]
|
21
|
+
xml.CampaignManager attributes[:campaign_manager]
|
22
|
+
xml.ProductId attributes[:product_id]
|
23
|
+
xml.ExternalUsers do
|
24
|
+
attributes[:external_users].each do |user_id|
|
25
|
+
xml.UserId user_id
|
26
|
+
end
|
27
|
+
end if attributes[:external_users]
|
28
|
+
xml.InternalQuickReport attributes[:internal_quick_report]
|
29
|
+
xml.ExternalQuickReport attributes[:external_quick_report]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/oass/client.rb
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
module Oass
|
2
|
+
class Client
|
3
|
+
attr_accessor :endpoint, :account, :username, :password
|
4
|
+
|
5
|
+
include Campaign
|
6
|
+
include Creative
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
options.reverse_merge! :endpoint => Oass.endpoint,
|
10
|
+
:account => Oass.account,
|
11
|
+
:username => Oass.username,
|
12
|
+
:password => Oass.password
|
13
|
+
|
14
|
+
options.each_pair do |key, value|
|
15
|
+
send "#{key}=", value
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def request(method)
|
20
|
+
body = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
|
21
|
+
xml.AdXML do
|
22
|
+
xml.Request(:type => method) do
|
23
|
+
yield xml
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
response = Savon::Client.new(endpoint).request :n1, :oas_xml_request, :"xmlns:n1" => "http://api.oas.tfsm.com/" do
|
29
|
+
soap.body = {
|
30
|
+
"String_1" => account,
|
31
|
+
"String_2" => username,
|
32
|
+
"String_3" => password,
|
33
|
+
"String_4" => body.to_xml
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
parse(response)
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
|
42
|
+
def parse(response)
|
43
|
+
response = Nokogiri::XML.parse(response.to_hash[:oas_xml_request_response][:result])
|
44
|
+
raise_errors(response)
|
45
|
+
response.css("AdXML > Response > *").first
|
46
|
+
end
|
47
|
+
|
48
|
+
def raise_errors(response)
|
49
|
+
return if (error = response.css("Exception")).empty?
|
50
|
+
|
51
|
+
case error.attribute("errorCode").value.to_i
|
52
|
+
when 545
|
53
|
+
raise Oass::NotFoundError.new error.first.content
|
54
|
+
else
|
55
|
+
raise Oass::OASError.new error.first.content
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Oass
|
2
|
+
module Creative
|
3
|
+
def read_creative(campaign_id, id)
|
4
|
+
request "Creative" do |xml|
|
5
|
+
xml.Creative(:action => "read") do
|
6
|
+
xml.CampaignId campaign_id
|
7
|
+
xml.Id id
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def create_creative(attributes)
|
13
|
+
request "Creative" do |xml|
|
14
|
+
xml.Creative(:action => "add") do
|
15
|
+
xml.CampaignId attributes[:campaign_id]
|
16
|
+
xml.Id attributes[:id]
|
17
|
+
xml.Name attributes[:name]
|
18
|
+
xml.Description attributes[:description]
|
19
|
+
xml.ClickUrl attributes[:click_url]
|
20
|
+
xml.Positions do
|
21
|
+
attributes[:positions].each do |position|
|
22
|
+
xml.Position position
|
23
|
+
end
|
24
|
+
end
|
25
|
+
xml.CreativeTypesId attributes[:creative_types_id]
|
26
|
+
xml.RedirectUrl attributes[:redirect_url]
|
27
|
+
xml.Display attributes[:display]
|
28
|
+
xml.Height attributes[:height]
|
29
|
+
xml.Width attributes[:width]
|
30
|
+
xml.TargetWindow attributes[:target_window]
|
31
|
+
xml.AltText attributes[:alt_text]
|
32
|
+
xml.DiscountImpressions attributes[:discount_impressions]
|
33
|
+
xml.StartDate attributes[:start_date]
|
34
|
+
xml.EndDate attributes[:end_date]
|
35
|
+
xml.Weight attributes[:weight]
|
36
|
+
xml.ExpireImmediately attributes[:expire_immediately]
|
37
|
+
xml.NoCache attributes[:no_cache]
|
38
|
+
xml.ExtraHTML attributes[:extra_html]
|
39
|
+
xml.ExtraText attributes[:extra_text]
|
40
|
+
xml.BrowserV do
|
41
|
+
attributes[:browser_versions].each do |version|
|
42
|
+
xml.Code version
|
43
|
+
end
|
44
|
+
end
|
45
|
+
xml.SequenceNo attributes[:sequence_number]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
data/lib/oass/errors.rb
ADDED
data/lib/oass/version.rb
ADDED
data/oass.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "oass/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "oass"
|
7
|
+
s.version = Oass::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Rodrigo Navarro"]
|
10
|
+
s.email = ["navarro@manapot.com.br"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = %q{Funny API to access OAS hellish soap interface}
|
13
|
+
s.description = %q{Help you to communicate with the corporate advertisers world!}
|
14
|
+
|
15
|
+
s.rubyforge_project = "oass"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.add_dependency "savon", "~> 0.9.2"
|
23
|
+
s.add_dependency "nokogiri", "~> 1.4.4"
|
24
|
+
s.add_dependency "activesupport", "~> 3.0.0"
|
25
|
+
end
|
@@ -0,0 +1,240 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: https://training7.247realmedia.com:443//oasapi/OaxApi?wsdl
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
etag:
|
14
|
+
- "\"44e617-674-48c8d0448cd40\""
|
15
|
+
p3p:
|
16
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
17
|
+
last-modified:
|
18
|
+
- Thu, 29 Jul 2010 20:59:57 GMT
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
server:
|
22
|
+
- Apache/2.2.3 (Red Hat)
|
23
|
+
date:
|
24
|
+
- Wed, 25 May 2011 22:50:14 GMT
|
25
|
+
content-length:
|
26
|
+
- "1652"
|
27
|
+
accept-ranges:
|
28
|
+
- bytes
|
29
|
+
body: |
|
30
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
31
|
+
<definitions name="OaxApiService" targetNamespace="http://api.oas.tfsm.com/" xmlns:tns="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
32
|
+
<types>
|
33
|
+
</types>
|
34
|
+
<message name="OaxApi_OasXmlRequestResponse">
|
35
|
+
<part name="result" type="xsd:string">
|
36
|
+
</part>
|
37
|
+
</message>
|
38
|
+
<message name="OaxApi_OasXmlRequest">
|
39
|
+
<part name="String_1" type="xsd:string">
|
40
|
+
|
41
|
+
</part>
|
42
|
+
<part name="String_2" type="xsd:string">
|
43
|
+
</part>
|
44
|
+
<part name="String_3" type="xsd:string">
|
45
|
+
</part>
|
46
|
+
<part name="String_4" type="xsd:string">
|
47
|
+
</part>
|
48
|
+
</message>
|
49
|
+
<portType name="OaxApi">
|
50
|
+
|
51
|
+
<operation name="OasXmlRequest" parameterOrder="String_1 String_2 String_3 String_4">
|
52
|
+
<input message="tns:OaxApi_OasXmlRequest">
|
53
|
+
</input>
|
54
|
+
<output message="tns:OaxApi_OasXmlRequestResponse">
|
55
|
+
</output>
|
56
|
+
</operation>
|
57
|
+
</portType>
|
58
|
+
<binding name="OaxApiBinding" type="tns:OaxApi">
|
59
|
+
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
|
60
|
+
|
61
|
+
<operation name="OasXmlRequest">
|
62
|
+
<soap:operation soapAction=""/>
|
63
|
+
<input>
|
64
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
65
|
+
</input>
|
66
|
+
<output>
|
67
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
68
|
+
</output>
|
69
|
+
</operation>
|
70
|
+
|
71
|
+
</binding>
|
72
|
+
<service name="OaxApiService">
|
73
|
+
<port name="OaxApiPort" binding="tns:OaxApiBinding">
|
74
|
+
<soap:address location="https://training7.247realmedia.com:443/oasapi/OaxApi"/>
|
75
|
+
</port>
|
76
|
+
</service>
|
77
|
+
</definitions>
|
78
|
+
|
79
|
+
http_version: "1.1"
|
80
|
+
- !ruby/struct:VCR::HTTPInteraction
|
81
|
+
request: !ruby/struct:VCR::Request
|
82
|
+
method: :post
|
83
|
+
uri: https://training7.247realmedia.com:443/oasapi/OaxApi
|
84
|
+
body: |-
|
85
|
+
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:n1="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><n1:OasXmlRequest xmlns:n1="http://api.oas.tfsm.com/"><String_1>Abril</String_1><String_2>dev_abril</String_2><String_3>d3v@p1SgpD</String_3><String_4><?xml version="1.0" encoding="UTF-8"?>
|
86
|
+
<AdXML>
|
87
|
+
<Request type="Campaign">
|
88
|
+
<Campaign action="read">
|
89
|
+
<Overview>
|
90
|
+
<Id>abx_oferta3</Id>
|
91
|
+
</Overview>
|
92
|
+
</Campaign>
|
93
|
+
</Request>
|
94
|
+
</AdXML>
|
95
|
+
</String_4></n1:OasXmlRequest></env:Body></env:Envelope>
|
96
|
+
headers:
|
97
|
+
content-type:
|
98
|
+
- text/xml;charset=UTF-8
|
99
|
+
soapaction:
|
100
|
+
- "\"OasXmlRequest\""
|
101
|
+
response: !ruby/struct:VCR::Response
|
102
|
+
status: !ruby/struct:VCR::ResponseStatus
|
103
|
+
code: 200
|
104
|
+
message: OK
|
105
|
+
headers:
|
106
|
+
x-powered-by:
|
107
|
+
- Servlet 2.5; JBoss-5.0/JBossWeb-2.1
|
108
|
+
p3p:
|
109
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
110
|
+
content-type:
|
111
|
+
- text/xml;charset=UTF-8
|
112
|
+
via:
|
113
|
+
- 1.1 training7.247realmedia.com
|
114
|
+
server:
|
115
|
+
- Apache-Coyote/1.1
|
116
|
+
date:
|
117
|
+
- Wed, 25 May 2011 22:50:15 GMT
|
118
|
+
transfer-encoding:
|
119
|
+
- chunked
|
120
|
+
body: |-
|
121
|
+
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:OasXmlRequestResponse xmlns:ns1="http://api.oas.tfsm.com/"><result><?xml version='1.0'?>
|
122
|
+
<AdXML>
|
123
|
+
|
124
|
+
<Response>
|
125
|
+
<Campaign>
|
126
|
+
<Overview>
|
127
|
+
<Id>abx_oferta3</Id>
|
128
|
+
<AdvertiserId>abx_anunciante</AdvertiserId>
|
129
|
+
<Name>abx_oferta2</Name>
|
130
|
+
<AgencyId>vitrine</AgencyId>
|
131
|
+
<Description/>
|
132
|
+
<ProductId>vitrine</ProductId>
|
133
|
+
<Status>L</Status>
|
134
|
+
<CampaignGroups>
|
135
|
+
<CampaignGroupId>abx_anunciante</CampaignGroupId>
|
136
|
+
</CampaignGroups>
|
137
|
+
<CompetitiveCategories/>
|
138
|
+
<ExternalUsers/>
|
139
|
+
<InternalQuickReport>to-date</InternalQuickReport>
|
140
|
+
<ExternalQuickReport>short</ExternalQuickReport>
|
141
|
+
<WhoCreated>vitrine_api</WhoCreated>
|
142
|
+
<WhenCreated>2011-04-11 16:15:32</WhenCreated>
|
143
|
+
<WhoModified>interface_abril</WhoModified>
|
144
|
+
<WhenModified>2011-05-25 11:54:39</WhenModified>
|
145
|
+
</Overview>
|
146
|
+
<Schedule>
|
147
|
+
<Impressions>0</Impressions>
|
148
|
+
<Clicks>0</Clicks>
|
149
|
+
<Uniques>0</Uniques>
|
150
|
+
<Weight>0</Weight>
|
151
|
+
<PriorityLevel>5</PriorityLevel>
|
152
|
+
<Completion>S</Completion>
|
153
|
+
<StartDate>2011-04-11</StartDate>
|
154
|
+
<StartTime>00:00</StartTime>
|
155
|
+
<EndDate></EndDate>
|
156
|
+
<EndTime></EndTime>
|
157
|
+
<Reach>O</Reach>
|
158
|
+
<DailyImp>0</DailyImp>
|
159
|
+
<DailyGoals/>
|
160
|
+
<DailyClicks>0</DailyClicks>
|
161
|
+
<DailyUniq>0</DailyUniq>
|
162
|
+
<SmoothOrAsap>S</SmoothOrAsap>
|
163
|
+
<ImpOverrun>0</ImpOverrun>
|
164
|
+
<CompanionPositions/>
|
165
|
+
<StrictCompanions>N</StrictCompanions>
|
166
|
+
<PrimaryFrequency>
|
167
|
+
<ImpPerVisitor>0</ImpPerVisitor>
|
168
|
+
<ClickPerVisitor>0</ClickPerVisitor>
|
169
|
+
<FreqScope>0</FreqScope>
|
170
|
+
</PrimaryFrequency>
|
171
|
+
<SecondaryFrequency>
|
172
|
+
<ImpPerVisitor>0</ImpPerVisitor>
|
173
|
+
<FreqScope>0</FreqScope>
|
174
|
+
</SecondaryFrequency>
|
175
|
+
<HourOfDay/>
|
176
|
+
<DayOfWeek/>
|
177
|
+
<UserTimeZone>N</UserTimeZone>
|
178
|
+
<Sections/>
|
179
|
+
<CampaignPauses/>
|
180
|
+
</Schedule>
|
181
|
+
<Pages/>
|
182
|
+
<Target>
|
183
|
+
<ExcludeTargets>N</ExcludeTargets>
|
184
|
+
<TopLevelDomain/>
|
185
|
+
<Domain></Domain>
|
186
|
+
<Bandwidth/>
|
187
|
+
<Continent/>
|
188
|
+
<Country/>
|
189
|
+
<State/>
|
190
|
+
<AreaCode/>
|
191
|
+
<Msa/>
|
192
|
+
<Dma/>
|
193
|
+
<City/>
|
194
|
+
<Zones/>
|
195
|
+
<Zip/>
|
196
|
+
<ClaritasSegments/>
|
197
|
+
<Omniture/>
|
198
|
+
<Os/>
|
199
|
+
<Browser/>
|
200
|
+
<BrowserV/>
|
201
|
+
<SearchType>A</SearchType>
|
202
|
+
<SearchTerm></SearchTerm>
|
203
|
+
<Cookie/>
|
204
|
+
<AgeFrom></AgeFrom>
|
205
|
+
<AgeTo></AgeTo>
|
206
|
+
<Gender>
|
207
|
+
<Code>E</Code>
|
208
|
+
</Gender>
|
209
|
+
<IncomeFrom></IncomeFrom>
|
210
|
+
<IncomeTo></IncomeTo>
|
211
|
+
<SubscriberCode></SubscriberCode>
|
212
|
+
<PreferenceFlags></PreferenceFlags>
|
213
|
+
<Cluster/>
|
214
|
+
</Target>
|
215
|
+
<Exclude>
|
216
|
+
<Sites/>
|
217
|
+
<Pages/>
|
218
|
+
</Exclude>
|
219
|
+
<Billing>
|
220
|
+
<ContractedRevenue></ContractedRevenue>
|
221
|
+
<BillOffContracted>N</BillOffContracted>
|
222
|
+
<Cpm>0.0000</Cpm>
|
223
|
+
<Cpc>0.0000</Cpc>
|
224
|
+
<Cpa></Cpa>
|
225
|
+
<FlatRate></FlatRate>
|
226
|
+
<Tax></Tax>
|
227
|
+
<AgencyCommission>0.00</AgencyCommission>
|
228
|
+
<PaymentMethod>C</PaymentMethod>
|
229
|
+
<PurchaseOrder/>
|
230
|
+
<SalesRepresentative/>
|
231
|
+
<CommissionPercent>0.0000</CommissionPercent>
|
232
|
+
<Notes/>
|
233
|
+
<IsYieldManaged>N</IsYieldManaged>
|
234
|
+
<BillTo>G</BillTo>
|
235
|
+
<Currency/>
|
236
|
+
</Billing>
|
237
|
+
</Campaign>
|
238
|
+
</Response>
|
239
|
+
</AdXML></result></ns1:OasXmlRequestResponse></soapenv:Body></soapenv:Envelope>
|
240
|
+
http_version: "1.1"
|
@@ -0,0 +1,160 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: https://training7.247realmedia.com:443//oasapi/OaxApi?wsdl
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
etag:
|
14
|
+
- "\"44e617-674-48c8d0448cd40\""
|
15
|
+
p3p:
|
16
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
17
|
+
last-modified:
|
18
|
+
- Thu, 29 Jul 2010 20:59:57 GMT
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
server:
|
22
|
+
- Apache/2.2.3 (Red Hat)
|
23
|
+
date:
|
24
|
+
- Wed, 25 May 2011 22:50:16 GMT
|
25
|
+
content-length:
|
26
|
+
- "1652"
|
27
|
+
accept-ranges:
|
28
|
+
- bytes
|
29
|
+
body: |
|
30
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
31
|
+
<definitions name="OaxApiService" targetNamespace="http://api.oas.tfsm.com/" xmlns:tns="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
32
|
+
<types>
|
33
|
+
</types>
|
34
|
+
<message name="OaxApi_OasXmlRequestResponse">
|
35
|
+
<part name="result" type="xsd:string">
|
36
|
+
</part>
|
37
|
+
</message>
|
38
|
+
<message name="OaxApi_OasXmlRequest">
|
39
|
+
<part name="String_1" type="xsd:string">
|
40
|
+
|
41
|
+
</part>
|
42
|
+
<part name="String_2" type="xsd:string">
|
43
|
+
</part>
|
44
|
+
<part name="String_3" type="xsd:string">
|
45
|
+
</part>
|
46
|
+
<part name="String_4" type="xsd:string">
|
47
|
+
</part>
|
48
|
+
</message>
|
49
|
+
<portType name="OaxApi">
|
50
|
+
|
51
|
+
<operation name="OasXmlRequest" parameterOrder="String_1 String_2 String_3 String_4">
|
52
|
+
<input message="tns:OaxApi_OasXmlRequest">
|
53
|
+
</input>
|
54
|
+
<output message="tns:OaxApi_OasXmlRequestResponse">
|
55
|
+
</output>
|
56
|
+
</operation>
|
57
|
+
</portType>
|
58
|
+
<binding name="OaxApiBinding" type="tns:OaxApi">
|
59
|
+
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
|
60
|
+
|
61
|
+
<operation name="OasXmlRequest">
|
62
|
+
<soap:operation soapAction=""/>
|
63
|
+
<input>
|
64
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
65
|
+
</input>
|
66
|
+
<output>
|
67
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
68
|
+
</output>
|
69
|
+
</operation>
|
70
|
+
|
71
|
+
</binding>
|
72
|
+
<service name="OaxApiService">
|
73
|
+
<port name="OaxApiPort" binding="tns:OaxApiBinding">
|
74
|
+
<soap:address location="https://training7.247realmedia.com:443/oasapi/OaxApi"/>
|
75
|
+
</port>
|
76
|
+
</service>
|
77
|
+
</definitions>
|
78
|
+
|
79
|
+
http_version: "1.1"
|
80
|
+
- !ruby/struct:VCR::HTTPInteraction
|
81
|
+
request: !ruby/struct:VCR::Request
|
82
|
+
method: :post
|
83
|
+
uri: https://training7.247realmedia.com:443/oasapi/OaxApi
|
84
|
+
body: |-
|
85
|
+
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:n1="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><n1:OasXmlRequest xmlns:n1="http://api.oas.tfsm.com/"><String_1>Abril</String_1><String_2>dev_abril</String_2><String_3>d3v@p1SgpD</String_3><String_4><?xml version="1.0" encoding="UTF-8"?>
|
86
|
+
<AdXML>
|
87
|
+
<Request type="Creative">
|
88
|
+
<Creative action="read">
|
89
|
+
<CampaignId>abx_oferta3</CampaignId>
|
90
|
+
<Id>creatiewut</Id>
|
91
|
+
</Creative>
|
92
|
+
</Request>
|
93
|
+
</AdXML>
|
94
|
+
</String_4></n1:OasXmlRequest></env:Body></env:Envelope>
|
95
|
+
headers:
|
96
|
+
content-type:
|
97
|
+
- text/xml;charset=UTF-8
|
98
|
+
soapaction:
|
99
|
+
- "\"OasXmlRequest\""
|
100
|
+
response: !ruby/struct:VCR::Response
|
101
|
+
status: !ruby/struct:VCR::ResponseStatus
|
102
|
+
code: 200
|
103
|
+
message: OK
|
104
|
+
headers:
|
105
|
+
x-powered-by:
|
106
|
+
- Servlet 2.5; JBoss-5.0/JBossWeb-2.1
|
107
|
+
p3p:
|
108
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
109
|
+
content-type:
|
110
|
+
- text/xml;charset=UTF-8
|
111
|
+
via:
|
112
|
+
- 1.1 training7.247realmedia.com
|
113
|
+
server:
|
114
|
+
- Apache-Coyote/1.1
|
115
|
+
date:
|
116
|
+
- Wed, 25 May 2011 22:50:17 GMT
|
117
|
+
transfer-encoding:
|
118
|
+
- chunked
|
119
|
+
body: |-
|
120
|
+
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:OasXmlRequestResponse xmlns:ns1="http://api.oas.tfsm.com/"><result><?xml version='1.0'?>
|
121
|
+
<AdXML>
|
122
|
+
|
123
|
+
<Response>
|
124
|
+
<Creative>
|
125
|
+
<CampaignId>abx_oferta3</CampaignId>
|
126
|
+
<Id>creatiewut</Id>
|
127
|
+
<Name>creatiewut</Name>
|
128
|
+
<Description/>
|
129
|
+
<ClickUrl>test</ClickUrl>
|
130
|
+
<Positions>
|
131
|
+
<Position>x05</Position>
|
132
|
+
</Positions>
|
133
|
+
<CreativeTypesId>unknown_type</CreativeTypesId>
|
134
|
+
<Display>Y</Display>
|
135
|
+
<Height/>
|
136
|
+
<Width/>
|
137
|
+
<TargetWindow/>
|
138
|
+
<AltText/>
|
139
|
+
<DiscountImpressions>N</DiscountImpressions>
|
140
|
+
<StartDate/>
|
141
|
+
<StartTime></StartTime>
|
142
|
+
<EndDate/>
|
143
|
+
<EndTime></EndTime>
|
144
|
+
<Weight>10</Weight>
|
145
|
+
<ExpireImmediately>N</ExpireImmediately>
|
146
|
+
<NoCache>N</NoCache>
|
147
|
+
<ExtraHTML/>
|
148
|
+
<ExtraText/>
|
149
|
+
<RichMediaCpm>0.0</RichMediaCpm>
|
150
|
+
<BrowserV/>
|
151
|
+
<SequenceNo/>
|
152
|
+
<CountOnDownload>N</CountOnDownload>
|
153
|
+
<WhoCreated>interface_abril</WhoCreated>
|
154
|
+
<WhenCreated>2011-05-25 11:54:39</WhenCreated>
|
155
|
+
<WhoModified></WhoModified>
|
156
|
+
<WhenModified></WhenModified>
|
157
|
+
</Creative>
|
158
|
+
</Response>
|
159
|
+
</AdXML></result></ns1:OasXmlRequestResponse></soapenv:Body></soapenv:Envelope>
|
160
|
+
http_version: "1.1"
|
@@ -0,0 +1,291 @@
|
|
1
|
+
---
|
2
|
+
- !ruby/struct:VCR::HTTPInteraction
|
3
|
+
request: !ruby/struct:VCR::Request
|
4
|
+
method: :get
|
5
|
+
uri: https://training7.247realmedia.com:443//oasapi/OaxApi?wsdl
|
6
|
+
body:
|
7
|
+
headers:
|
8
|
+
response: !ruby/struct:VCR::Response
|
9
|
+
status: !ruby/struct:VCR::ResponseStatus
|
10
|
+
code: 200
|
11
|
+
message: OK
|
12
|
+
headers:
|
13
|
+
etag:
|
14
|
+
- "\"44e617-674-48c8d0448cd40\""
|
15
|
+
last-modified:
|
16
|
+
- Thu, 29 Jul 2010 20:59:57 GMT
|
17
|
+
p3p:
|
18
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
19
|
+
content-type:
|
20
|
+
- text/xml
|
21
|
+
date:
|
22
|
+
- Wed, 25 May 2011 22:50:11 GMT
|
23
|
+
server:
|
24
|
+
- Apache/2.2.3 (Red Hat)
|
25
|
+
content-length:
|
26
|
+
- "1652"
|
27
|
+
accept-ranges:
|
28
|
+
- bytes
|
29
|
+
body: |
|
30
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
31
|
+
<definitions name="OaxApiService" targetNamespace="http://api.oas.tfsm.com/" xmlns:tns="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/">
|
32
|
+
<types>
|
33
|
+
</types>
|
34
|
+
<message name="OaxApi_OasXmlRequestResponse">
|
35
|
+
<part name="result" type="xsd:string">
|
36
|
+
</part>
|
37
|
+
</message>
|
38
|
+
<message name="OaxApi_OasXmlRequest">
|
39
|
+
<part name="String_1" type="xsd:string">
|
40
|
+
|
41
|
+
</part>
|
42
|
+
<part name="String_2" type="xsd:string">
|
43
|
+
</part>
|
44
|
+
<part name="String_3" type="xsd:string">
|
45
|
+
</part>
|
46
|
+
<part name="String_4" type="xsd:string">
|
47
|
+
</part>
|
48
|
+
</message>
|
49
|
+
<portType name="OaxApi">
|
50
|
+
|
51
|
+
<operation name="OasXmlRequest" parameterOrder="String_1 String_2 String_3 String_4">
|
52
|
+
<input message="tns:OaxApi_OasXmlRequest">
|
53
|
+
</input>
|
54
|
+
<output message="tns:OaxApi_OasXmlRequestResponse">
|
55
|
+
</output>
|
56
|
+
</operation>
|
57
|
+
</portType>
|
58
|
+
<binding name="OaxApiBinding" type="tns:OaxApi">
|
59
|
+
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
|
60
|
+
|
61
|
+
<operation name="OasXmlRequest">
|
62
|
+
<soap:operation soapAction=""/>
|
63
|
+
<input>
|
64
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
65
|
+
</input>
|
66
|
+
<output>
|
67
|
+
<soap:body use="literal" namespace="http://api.oas.tfsm.com/"/>
|
68
|
+
</output>
|
69
|
+
</operation>
|
70
|
+
|
71
|
+
</binding>
|
72
|
+
<service name="OaxApiService">
|
73
|
+
<port name="OaxApiPort" binding="tns:OaxApiBinding">
|
74
|
+
<soap:address location="https://training7.247realmedia.com:443/oasapi/OaxApi"/>
|
75
|
+
</port>
|
76
|
+
</service>
|
77
|
+
</definitions>
|
78
|
+
|
79
|
+
http_version: "1.1"
|
80
|
+
- !ruby/struct:VCR::HTTPInteraction
|
81
|
+
request: !ruby/struct:VCR::Request
|
82
|
+
method: :post
|
83
|
+
uri: https://training7.247realmedia.com:443/oasapi/OaxApi
|
84
|
+
body: |-
|
85
|
+
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:n1="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><n1:OasXmlRequest xmlns:n1="http://api.oas.tfsm.com/"><String_1>Abril</String_1><String_2>dev_abril</String_2><String_3>d3v@p1SgpD</String_3><String_4><?xml version="1.0" encoding="UTF-8"?>
|
86
|
+
<AdXML>
|
87
|
+
<Request type="Campaign">
|
88
|
+
<Campaign action="read">
|
89
|
+
<Overview>
|
90
|
+
<Id>abx_oferta3</Id>
|
91
|
+
</Overview>
|
92
|
+
</Campaign>
|
93
|
+
</Request>
|
94
|
+
</AdXML>
|
95
|
+
</String_4></n1:OasXmlRequest></env:Body></env:Envelope>
|
96
|
+
headers:
|
97
|
+
soapaction:
|
98
|
+
- "\"OasXmlRequest\""
|
99
|
+
content-type:
|
100
|
+
- text/xml;charset=UTF-8
|
101
|
+
response: !ruby/struct:VCR::Response
|
102
|
+
status: !ruby/struct:VCR::ResponseStatus
|
103
|
+
code: 200
|
104
|
+
message: OK
|
105
|
+
headers:
|
106
|
+
x-powered-by:
|
107
|
+
- Servlet 2.5; JBoss-5.0/JBossWeb-2.1
|
108
|
+
p3p:
|
109
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
110
|
+
via:
|
111
|
+
- 1.1 training7.247realmedia.com
|
112
|
+
content-type:
|
113
|
+
- text/xml;charset=UTF-8
|
114
|
+
date:
|
115
|
+
- Wed, 25 May 2011 22:50:12 GMT
|
116
|
+
server:
|
117
|
+
- Apache-Coyote/1.1
|
118
|
+
transfer-encoding:
|
119
|
+
- chunked
|
120
|
+
body: |-
|
121
|
+
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:OasXmlRequestResponse xmlns:ns1="http://api.oas.tfsm.com/"><result><?xml version='1.0'?>
|
122
|
+
<AdXML>
|
123
|
+
|
124
|
+
<Response>
|
125
|
+
<Campaign>
|
126
|
+
<Overview>
|
127
|
+
<Id>abx_oferta3</Id>
|
128
|
+
<AdvertiserId>abx_anunciante</AdvertiserId>
|
129
|
+
<Name>abx_oferta2</Name>
|
130
|
+
<AgencyId>vitrine</AgencyId>
|
131
|
+
<Description/>
|
132
|
+
<ProductId>vitrine</ProductId>
|
133
|
+
<Status>L</Status>
|
134
|
+
<CampaignGroups>
|
135
|
+
<CampaignGroupId>abx_anunciante</CampaignGroupId>
|
136
|
+
</CampaignGroups>
|
137
|
+
<CompetitiveCategories/>
|
138
|
+
<ExternalUsers/>
|
139
|
+
<InternalQuickReport>to-date</InternalQuickReport>
|
140
|
+
<ExternalQuickReport>short</ExternalQuickReport>
|
141
|
+
<WhoCreated>vitrine_api</WhoCreated>
|
142
|
+
<WhenCreated>2011-04-11 16:15:32</WhenCreated>
|
143
|
+
<WhoModified>interface_abril</WhoModified>
|
144
|
+
<WhenModified>2011-05-25 11:54:39</WhenModified>
|
145
|
+
</Overview>
|
146
|
+
<Schedule>
|
147
|
+
<Impressions>0</Impressions>
|
148
|
+
<Clicks>0</Clicks>
|
149
|
+
<Uniques>0</Uniques>
|
150
|
+
<Weight>0</Weight>
|
151
|
+
<PriorityLevel>5</PriorityLevel>
|
152
|
+
<Completion>S</Completion>
|
153
|
+
<StartDate>2011-04-11</StartDate>
|
154
|
+
<StartTime>00:00</StartTime>
|
155
|
+
<EndDate></EndDate>
|
156
|
+
<EndTime></EndTime>
|
157
|
+
<Reach>O</Reach>
|
158
|
+
<DailyImp>0</DailyImp>
|
159
|
+
<DailyGoals/>
|
160
|
+
<DailyClicks>0</DailyClicks>
|
161
|
+
<DailyUniq>0</DailyUniq>
|
162
|
+
<SmoothOrAsap>S</SmoothOrAsap>
|
163
|
+
<ImpOverrun>0</ImpOverrun>
|
164
|
+
<CompanionPositions/>
|
165
|
+
<StrictCompanions>N</StrictCompanions>
|
166
|
+
<PrimaryFrequency>
|
167
|
+
<ImpPerVisitor>0</ImpPerVisitor>
|
168
|
+
<ClickPerVisitor>0</ClickPerVisitor>
|
169
|
+
<FreqScope>0</FreqScope>
|
170
|
+
</PrimaryFrequency>
|
171
|
+
<SecondaryFrequency>
|
172
|
+
<ImpPerVisitor>0</ImpPerVisitor>
|
173
|
+
<FreqScope>0</FreqScope>
|
174
|
+
</SecondaryFrequency>
|
175
|
+
<HourOfDay/>
|
176
|
+
<DayOfWeek/>
|
177
|
+
<UserTimeZone>N</UserTimeZone>
|
178
|
+
<Sections/>
|
179
|
+
<CampaignPauses/>
|
180
|
+
</Schedule>
|
181
|
+
<Pages/>
|
182
|
+
<Target>
|
183
|
+
<ExcludeTargets>N</ExcludeTargets>
|
184
|
+
<TopLevelDomain/>
|
185
|
+
<Domain></Domain>
|
186
|
+
<Bandwidth/>
|
187
|
+
<Continent/>
|
188
|
+
<Country/>
|
189
|
+
<State/>
|
190
|
+
<AreaCode/>
|
191
|
+
<Msa/>
|
192
|
+
<Dma/>
|
193
|
+
<City/>
|
194
|
+
<Zones/>
|
195
|
+
<Zip/>
|
196
|
+
<ClaritasSegments/>
|
197
|
+
<Omniture/>
|
198
|
+
<Os/>
|
199
|
+
<Browser/>
|
200
|
+
<BrowserV/>
|
201
|
+
<SearchType>A</SearchType>
|
202
|
+
<SearchTerm></SearchTerm>
|
203
|
+
<Cookie/>
|
204
|
+
<AgeFrom></AgeFrom>
|
205
|
+
<AgeTo></AgeTo>
|
206
|
+
<Gender>
|
207
|
+
<Code>E</Code>
|
208
|
+
</Gender>
|
209
|
+
<IncomeFrom></IncomeFrom>
|
210
|
+
<IncomeTo></IncomeTo>
|
211
|
+
<SubscriberCode></SubscriberCode>
|
212
|
+
<PreferenceFlags></PreferenceFlags>
|
213
|
+
<Cluster/>
|
214
|
+
</Target>
|
215
|
+
<Exclude>
|
216
|
+
<Sites/>
|
217
|
+
<Pages/>
|
218
|
+
</Exclude>
|
219
|
+
<Billing>
|
220
|
+
<ContractedRevenue></ContractedRevenue>
|
221
|
+
<BillOffContracted>N</BillOffContracted>
|
222
|
+
<Cpm>0.0000</Cpm>
|
223
|
+
<Cpc>0.0000</Cpc>
|
224
|
+
<Cpa></Cpa>
|
225
|
+
<FlatRate></FlatRate>
|
226
|
+
<Tax></Tax>
|
227
|
+
<AgencyCommission>0.00</AgencyCommission>
|
228
|
+
<PaymentMethod>C</PaymentMethod>
|
229
|
+
<PurchaseOrder/>
|
230
|
+
<SalesRepresentative/>
|
231
|
+
<CommissionPercent>0.0000</CommissionPercent>
|
232
|
+
<Notes/>
|
233
|
+
<IsYieldManaged>N</IsYieldManaged>
|
234
|
+
<BillTo>G</BillTo>
|
235
|
+
<Currency/>
|
236
|
+
</Billing>
|
237
|
+
</Campaign>
|
238
|
+
</Response>
|
239
|
+
</AdXML></result></ns1:OasXmlRequestResponse></soapenv:Body></soapenv:Envelope>
|
240
|
+
http_version: "1.1"
|
241
|
+
- !ruby/struct:VCR::HTTPInteraction
|
242
|
+
request: !ruby/struct:VCR::Request
|
243
|
+
method: :post
|
244
|
+
uri: https://training7.247realmedia.com:443/oasapi/OaxApi
|
245
|
+
body: |-
|
246
|
+
<?xml version="1.0" encoding="UTF-8"?><env:Envelope xmlns:n1="http://api.oas.tfsm.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"><env:Body><n1:OasXmlRequest xmlns:n1="http://api.oas.tfsm.com/"><String_1>Abril</String_1><String_2>dev_abril</String_2><String_3>d3v@p1SgpD</String_3><String_4><?xml version="1.0" encoding="UTF-8"?>
|
247
|
+
<AdXML>
|
248
|
+
<Request type="Campaign">
|
249
|
+
<Campaign action="read">
|
250
|
+
<Overview>
|
251
|
+
<Id>invalid_id_lol</Id>
|
252
|
+
</Overview>
|
253
|
+
</Campaign>
|
254
|
+
</Request>
|
255
|
+
</AdXML>
|
256
|
+
</String_4></n1:OasXmlRequest></env:Body></env:Envelope>
|
257
|
+
headers:
|
258
|
+
content-type:
|
259
|
+
- text/xml;charset=UTF-8
|
260
|
+
soapaction:
|
261
|
+
- "\"OasXmlRequest\""
|
262
|
+
response: !ruby/struct:VCR::Response
|
263
|
+
status: !ruby/struct:VCR::ResponseStatus
|
264
|
+
code: 200
|
265
|
+
message: OK
|
266
|
+
headers:
|
267
|
+
x-powered-by:
|
268
|
+
- Servlet 2.5; JBoss-5.0/JBossWeb-2.1
|
269
|
+
p3p:
|
270
|
+
- CP="NON NID PSAa PSDa OUR IND UNI COM NAV STA",policyref="/w3c/p3p.xml"
|
271
|
+
content-type:
|
272
|
+
- text/xml;charset=UTF-8
|
273
|
+
via:
|
274
|
+
- 1.1 training7.247realmedia.com
|
275
|
+
server:
|
276
|
+
- Apache-Coyote/1.1
|
277
|
+
date:
|
278
|
+
- Wed, 25 May 2011 22:50:13 GMT
|
279
|
+
transfer-encoding:
|
280
|
+
- chunked
|
281
|
+
body: |-
|
282
|
+
<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"><soapenv:Body><ns1:OasXmlRequestResponse xmlns:ns1="http://api.oas.tfsm.com/"><result><?xml version='1.0'?>
|
283
|
+
<AdXML>
|
284
|
+
|
285
|
+
<Response>
|
286
|
+
<Campaign>
|
287
|
+
<Exception errorCode='545'>Invalid CampaignId.</Exception>
|
288
|
+
</Campaign>
|
289
|
+
</Response>
|
290
|
+
</AdXML></result></ns1:OasXmlRequestResponse></soapenv:Body></soapenv:Envelope>
|
291
|
+
http_version: "1.1"
|
@@ -0,0 +1,161 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Oass::Client do
|
4
|
+
context "configuration" do
|
5
|
+
[:endpoint, :account, :username, :password].each do |setting|
|
6
|
+
context "on initialization" do
|
7
|
+
subject { Oass::Client.new setting => "WUT" }
|
8
|
+
its(setting) { should == "WUT" }
|
9
|
+
end
|
10
|
+
|
11
|
+
context "after initialization" do
|
12
|
+
subject { Oass::Client.new }
|
13
|
+
before { subject.send("#{setting}=", "WUT") }
|
14
|
+
its(setting) { should == "WUT" }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
describe "#request" do
|
20
|
+
use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method, :body]
|
21
|
+
|
22
|
+
let(:client) { Oass::Client.new }
|
23
|
+
|
24
|
+
context "successfully" do
|
25
|
+
subject do
|
26
|
+
client.request "Campaign" do |xml|
|
27
|
+
xml.Campaign(:action => "read") do
|
28
|
+
xml.Overview { xml.Id "abx_oferta3" }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "finds the right campaign" do
|
34
|
+
subject.css("Id").first.content.should == "abx_oferta3"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "unsuccessfully" do
|
39
|
+
it "raises a OASError" do
|
40
|
+
expect {
|
41
|
+
client.request "Campaign" do |xml|
|
42
|
+
xml.Campaign(:action => "read") do
|
43
|
+
xml.Overview { xml.Id "invalid_id_lol" }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
}.to raise_error(Oass::OASError)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
describe "#read_campaign" do
|
52
|
+
use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method, :body]
|
53
|
+
|
54
|
+
let(:client) { Oass::Client.new }
|
55
|
+
|
56
|
+
context "with a valid id" do
|
57
|
+
subject { client.read_campaign("abx_oferta3") }
|
58
|
+
|
59
|
+
it "finds the right campaign" do
|
60
|
+
subject.css("Id").first.content.should == "abx_oferta3"
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "with an invalid id" do
|
65
|
+
it "raises a NotFoundError" do
|
66
|
+
expect { client.read_campaign("LOLWUT").to raise_error(Oass::NotFoundError) }
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
describe "#read_creative" do
|
72
|
+
use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method, :body]
|
73
|
+
|
74
|
+
let(:client) { Oass::Client.new }
|
75
|
+
|
76
|
+
context "with a valid id" do
|
77
|
+
subject { client.read_creative("abx_oferta3", "creatiewut") }
|
78
|
+
|
79
|
+
it "finds the right creative" do
|
80
|
+
subject.css("Id").first.content.should == "creatiewut"
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "with an invalid id" do
|
85
|
+
it "raises a NotFoundError" do
|
86
|
+
expect { client.read_creative("abx_oferta3", "LOLWUT").to raise_error(Oass::NotFoundError) }
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
context "with an invalid campaign id" do
|
91
|
+
it "raises a NotFoundError" do
|
92
|
+
expect { client.read_creative("LOLWUT", "creatiewut").to raise_error(Oass::NotFoundError) }
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe "#create_campaign" do
|
98
|
+
use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method, :body]
|
99
|
+
|
100
|
+
let(:client) { Oass::Client.new }
|
101
|
+
|
102
|
+
context "with the required attributes" do
|
103
|
+
let(:attributes) do
|
104
|
+
{
|
105
|
+
:id => "random_id_lolwut_wtf",
|
106
|
+
:name => "LOLWUT",
|
107
|
+
:advertiser_id => "bobo",
|
108
|
+
:agency_id => "unknown_agency",
|
109
|
+
:name => "LOLWUT",
|
110
|
+
:campaign_manager => "lol",
|
111
|
+
:product_id => "default-product",
|
112
|
+
}
|
113
|
+
end
|
114
|
+
|
115
|
+
subject { client.create_campaign attributes }
|
116
|
+
|
117
|
+
its(:content) { "Successfully added." }
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
describe "#create_criative" do
|
122
|
+
use_vcr_cassette :record => :new_episodes, :match_requests_on => [:uri, :method, :body]
|
123
|
+
|
124
|
+
let(:client) { Oass::Client.new }
|
125
|
+
|
126
|
+
context "with valid attributes" do
|
127
|
+
let(:attributes) do
|
128
|
+
{
|
129
|
+
:campaign_id => "random_id_lolwut",
|
130
|
+
:id => "I_am_so_creative_lol",
|
131
|
+
:name => "A nice name indeed",
|
132
|
+
:description => "Blabla",
|
133
|
+
:click_url => "http://lolwut.com",
|
134
|
+
:positions => %w(TopLeft BottomLeft),
|
135
|
+
:creative_types_id => "unknow_type",
|
136
|
+
:redirect_url => "http://lolwut.com",
|
137
|
+
:display => "Y",
|
138
|
+
:height => "30",
|
139
|
+
:width => "30",
|
140
|
+
:target_window => "targetwindow",
|
141
|
+
:alt_text => "Oh hai!",
|
142
|
+
:discount_impressions => "N",
|
143
|
+
:start_date => "1986-03-31",
|
144
|
+
:end_date => "2040-03-31",
|
145
|
+
:weight => "79",
|
146
|
+
:expire_immediately => "N",
|
147
|
+
:no_cache => "N",
|
148
|
+
:extra_html => "<b></b>",
|
149
|
+
:extra_text => "kthxbai",
|
150
|
+
:browser_versions => %w(explorer6 netscape7),
|
151
|
+
:sequence_number => "4"
|
152
|
+
}
|
153
|
+
|
154
|
+
end
|
155
|
+
|
156
|
+
subject { client.create_creative attributes }
|
157
|
+
|
158
|
+
its(:content) { "Successfully added." }
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Oass do
|
4
|
+
describe ".configure" do
|
5
|
+
[:endpoint, :account, :username, :password].each do |setting|
|
6
|
+
it "allows configuration for #{setting}" do
|
7
|
+
expect { Oass.send("#{setting}=", "LOL") }.to change { Oass.send(setting) }.to("LOL")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: oass
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Rodrigo Navarro
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-05-25 00:00:00 -03:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: savon
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 63
|
30
|
+
segments:
|
31
|
+
- 0
|
32
|
+
- 9
|
33
|
+
- 2
|
34
|
+
version: 0.9.2
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: nokogiri
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 15
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 4
|
49
|
+
- 4
|
50
|
+
version: 1.4.4
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: activesupport
|
55
|
+
prerelease: false
|
56
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ~>
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
hash: 7
|
62
|
+
segments:
|
63
|
+
- 3
|
64
|
+
- 0
|
65
|
+
- 0
|
66
|
+
version: 3.0.0
|
67
|
+
type: :runtime
|
68
|
+
version_requirements: *id003
|
69
|
+
description: Help you to communicate with the corporate advertisers world!
|
70
|
+
email:
|
71
|
+
- navarro@manapot.com.br
|
72
|
+
executables: []
|
73
|
+
|
74
|
+
extensions: []
|
75
|
+
|
76
|
+
extra_rdoc_files: []
|
77
|
+
|
78
|
+
files:
|
79
|
+
- .gitignore
|
80
|
+
- Gemfile
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- lib/oass.rb
|
84
|
+
- lib/oass/campaign.rb
|
85
|
+
- lib/oass/client.rb
|
86
|
+
- lib/oass/creative.rb
|
87
|
+
- lib/oass/errors.rb
|
88
|
+
- lib/oass/version.rb
|
89
|
+
- oass.gemspec
|
90
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_read_campaign.yml
|
91
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_read_creative.yml
|
92
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_request.yml
|
93
|
+
- spec/oass/client_spec.rb
|
94
|
+
- spec/oass/configuration_spec.rb
|
95
|
+
- spec/spec_helper.rb
|
96
|
+
has_rdoc: true
|
97
|
+
homepage: ""
|
98
|
+
licenses: []
|
99
|
+
|
100
|
+
post_install_message:
|
101
|
+
rdoc_options: []
|
102
|
+
|
103
|
+
require_paths:
|
104
|
+
- lib
|
105
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
106
|
+
none: false
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
hash: 3
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ">="
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
hash: 3
|
120
|
+
segments:
|
121
|
+
- 0
|
122
|
+
version: "0"
|
123
|
+
requirements: []
|
124
|
+
|
125
|
+
rubyforge_project: oass
|
126
|
+
rubygems_version: 1.5.0
|
127
|
+
signing_key:
|
128
|
+
specification_version: 3
|
129
|
+
summary: Funny API to access OAS hellish soap interface
|
130
|
+
test_files:
|
131
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_read_campaign.yml
|
132
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_read_creative.yml
|
133
|
+
- spec/fixtures/vcr_cassettes/Oass_Client/_request.yml
|
134
|
+
- spec/oass/client_spec.rb
|
135
|
+
- spec/oass/configuration_spec.rb
|
136
|
+
- spec/spec_helper.rb
|