yieldmanager 0.9.0 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
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