yieldmanager 0.9.0 → 0.9.1

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.9.0
1
+ 0.9.1
@@ -0,0 +1,42 @@
1
+ # XSD4R - Charset handling with iconv.
2
+ # # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+ #
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+ #
8
+ # PATCH CLONED FROM THIS GITHUB PULL REQUEST https://github.com/felipec/soap4r/pull/6
9
+ #
10
+
11
+ unless ''.respond_to? :encode
12
+ require 'iconv'
13
+ end
14
+
15
+ module XSD
16
+
17
+
18
+ class IconvCharset
19
+ if ''.respond_to? :encode
20
+ def self.safe_iconv(to, from, str)
21
+ str.encode(to, from, :invalid => :replace, :undef => :replace, :replace => '?')
22
+ end
23
+ else
24
+ def self.safe_iconv(to, from, str)
25
+ iconv = Iconv.new(to, from)
26
+ out = ""
27
+ begin
28
+ out << iconv.iconv(str)
29
+ rescue Iconv::IllegalSequence => e
30
+ out << e.success
31
+ ch, str = e.failed.split(//, 2)
32
+ out << '?'
33
+ warn("Failed to convert #{ch}")
34
+ retry
35
+ end
36
+ return out
37
+ end
38
+ end
39
+ end
40
+
41
+
42
+ end
@@ -57,6 +57,10 @@ module Yieldmanager
57
57
  hashes
58
58
  end
59
59
 
60
+ def pause
61
+ sleep(5)
62
+ end
63
+
60
64
  private
61
65
 
62
66
  def request_report_token token, report, xml
@@ -68,13 +72,24 @@ private
68
72
  60.times do |secs| # Poll until report ready
69
73
  report_url = report.status(token,report_token)
70
74
  break if report_url != nil
71
- sleep(5)
75
+ pause
72
76
  end
73
77
  report_url
74
78
  end
75
79
 
76
80
  def retrieve_data url
77
- doc = open(url) { |f| Hpricot(f) }
81
+ retries = 5
82
+ doc = nil
83
+ while (doc == nil && retries > 0) do
84
+ begin
85
+ doc = parse_data(url)
86
+ rescue Exception => e
87
+ retries = retries - 1
88
+ pause
89
+ end
90
+ end
91
+ raise "Failed pulling report data from #{url}" unless doc
92
+
78
93
  (doc/"header column").each do |col|
79
94
  headers << col.inner_html
80
95
  end
@@ -87,6 +102,10 @@ private
87
102
  data << row
88
103
  end
89
104
  end
105
+
106
+ def parse_data url
107
+ open(url) { |f| Hpricot(f) }
108
+ end
90
109
 
91
110
  class ReportRow < Array
92
111
  def initialize report
@@ -98,11 +98,12 @@ describe "A Yieldmanager report request" do
98
98
  report.headers[0] = 'new_first'
99
99
  report.data.first.by_name('new_first').should == "one"
100
100
  end
101
-
102
- it "complains if report token is nil"
103
-
104
- # need configurable pause and attempts to keep this from running 5 mins!
105
- it "throws ReportTimeoutException if report data never returns"
101
+
102
+ it "complains if report URL doesn't exist, even after retries" do
103
+ report = Yieldmanager::Report.new
104
+ report.stub(:pause) {} # don't make me wait
105
+ expect{ report.send(:retrieve_data,"http://i_dont_exist.com") }.to raise_error
106
+ end
106
107
 
107
108
  def login_args
108
109
  unless ENV["YIELDMANAGER_USER"] &&
data/yieldmanager.gemspec CHANGED
@@ -4,14 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{yieldmanager}
8
- s.version = "0.9.0"
7
+ s.name = "yieldmanager"
8
+ s.version = "0.9.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Bill Gathen}]
12
- s.date = %q{2012-01-24}
13
- s.description = %q{This gem offers full access to YieldManager's API tools (read/write) as well as ad-hoc reporting through the Reportware tool}
14
- s.email = %q{bill@billgathen.com}
11
+ s.authors = ["Bill Gathen"]
12
+ s.date = "2012-08-24"
13
+ s.description = "This gem offers full access to YieldManager's API tools (read/write) as well as ad-hoc reporting through the Reportware tool"
14
+ s.email = "bill@billgathen.com"
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
17
  "README.md",
@@ -32,6 +32,7 @@ Gem::Specification.new do |s|
32
32
  "lib/soap4r_19_patch/soap/generator.rb",
33
33
  "lib/soap4r_19_patch/soap/property.rb",
34
34
  "lib/soap4r_19_patch/xsd/charset.rb",
35
+ "lib/soap4r_19_patch/xsd/iconvcharset.rb",
35
36
  "lib/soap4r_19_patch/xsd/xmlparser.rb",
36
37
  "lib/wsdl/patch.rb",
37
38
  "lib/yieldmanager.rb",
@@ -45,10 +46,10 @@ Gem::Specification.new do |s|
45
46
  "spec/yieldmanager/report_spec.rb",
46
47
  "yieldmanager.gemspec"
47
48
  ]
48
- s.homepage = %q{http://github.com/billgathen/yieldmanager}
49
- s.require_paths = [%q{lib}]
50
- s.rubygems_version = %q{1.8.6}
51
- s.summary = %q{Interact with RightMedia's YieldManager API and Reportware products}
49
+ s.homepage = "http://github.com/billgathen/yieldmanager"
50
+ s.require_paths = ["lib"]
51
+ s.rubygems_version = "1.8.24"
52
+ s.summary = "Interact with RightMedia's YieldManager API and Reportware products"
52
53
 
53
54
  if s.respond_to? :specification_version then
54
55
  s.specification_version = 3
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yieldmanager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.9.1
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-01-24 00:00:00.000000000Z
12
+ date: 2012-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &2153058260 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: 1.2.9
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2153058260
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 1.2.9
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rdoc
27
- requirement: &2153057440 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,29 +37,44 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *2153057440
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: hpricot
38
- requirement: &2153056600 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
- - - =
51
+ - - '='
42
52
  - !ruby/object:Gem::Version
43
53
  version: 0.8.2
44
54
  type: :runtime
45
55
  prerelease: false
46
- version_requirements: *2153056600
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.8.2
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: soap4r
49
- requirement: &2153055860 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
- - - =
67
+ - - '='
53
68
  - !ruby/object:Gem::Version
54
69
  version: 1.5.8
55
70
  type: :runtime
56
71
  prerelease: false
57
- version_requirements: *2153055860
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.5.8
58
78
  description: This gem offers full access to YieldManager's API tools (read/write)
59
79
  as well as ad-hoc reporting through the Reportware tool
60
80
  email: bill@billgathen.com
@@ -79,6 +99,7 @@ files:
79
99
  - lib/soap4r_19_patch/soap/generator.rb
80
100
  - lib/soap4r_19_patch/soap/property.rb
81
101
  - lib/soap4r_19_patch/xsd/charset.rb
102
+ - lib/soap4r_19_patch/xsd/iconvcharset.rb
82
103
  - lib/soap4r_19_patch/xsd/xmlparser.rb
83
104
  - lib/wsdl/patch.rb
84
105
  - lib/yieldmanager.rb
@@ -111,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
132
  version: '0'
112
133
  requirements: []
113
134
  rubyforge_project:
114
- rubygems_version: 1.8.6
135
+ rubygems_version: 1.8.24
115
136
  signing_key:
116
137
  specification_version: 3
117
138
  summary: Interact with RightMedia's YieldManager API and Reportware products