Chrononaut-hostconnect 0.1.1 → 0.1.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.
data/CHANGELOG CHANGED
@@ -1,2 +1,3 @@
1
+ v0.1.2 Minor revision
1
2
  v0.1.1 Minor revision
2
3
  v0.1.0 Test release
data/hostconnect.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hostconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Bj\xC3\xB8rn Arild M\xC3\xA6land"
8
8
  autorequire:
9
9
  bindir: bin
10
10
 
11
- date: 2008-08-18 00:00:00 +02:00
11
+ date: 2008-08-28 00:00:00 +02:00
12
12
  default_executable:
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
@@ -88,6 +88,7 @@ extra_rdoc_files:
88
88
  - lib/hostconnect/coercion.rb
89
89
  - lib/hostconnect/core_extensions/string.rb
90
90
  - lib/hostconnect/core_extensions/symbol.rb
91
+ - lib/hostconnect/translation.rb
91
92
  - lib/hostconnect/responses/agent_info.rb
92
93
  - lib/hostconnect/responses/get_services.rb
93
94
  - lib/hostconnect/responses/list_bookings.rb
@@ -106,6 +107,7 @@ files:
106
107
  - Rakefile
107
108
  - README.markdown
108
109
  - CHANGELOG
110
+ - hostconnect.gemspec
109
111
  - lib/hostconnect.rb
110
112
  - lib/hostconnect/builders/agent_info_builder.rb
111
113
  - lib/hostconnect/builders/pax_details_builder.rb
@@ -124,6 +126,7 @@ files:
124
126
  - lib/hostconnect/coercion.rb
125
127
  - lib/hostconnect/core_extensions/string.rb
126
128
  - lib/hostconnect/core_extensions/symbol.rb
129
+ - lib/hostconnect/translation.rb
127
130
  - lib/hostconnect/responses/agent_info.rb
128
131
  - lib/hostconnect/responses/get_services.rb
129
132
  - lib/hostconnect/responses/list_bookings.rb
@@ -176,9 +179,9 @@ files:
176
179
  - spec/responses/add_service_spec.rb
177
180
  - spec/responses/ping_spec.rb
178
181
  - spec/responses/get_locations_spec.rb
182
+ - spec/translation_spec.rb
179
183
  - spec/coercion_spec.rb
180
184
  - Manifest
181
- - hostconnect.gemspec
182
185
  has_rdoc: true
183
186
  homepage: http://www.github.com/Chrononaut/hostconnect/
184
187
  post_install_message:
@@ -10,7 +10,7 @@ module HostConnect
10
10
  x = Builder::XmlMarkup.new(:indent => 2, :margin => 3)
11
11
  x.RoomConfig {
12
12
  x.Adults @adults if @adults
13
- x.RoomType Coercion.to_hc(@room_type) if @room_type
13
+ x.RoomType @room_type if @room_type
14
14
 
15
15
  if @pax_list
16
16
  # Stack the PaxDetails builder objects onto the request
@@ -1,19 +1,18 @@
1
1
  module HostConnect
2
+ # Coercion
3
+ #
4
+ # Possible Types:
5
+ # * String
6
+ # * Strings with multiple lines (don't know yet if these must be handled specifically)
7
+ # * Boolean (Y/N)
8
+ # * Date (yyyy-mm-dd)
9
+ # * Time (hhmm)
10
+ # * Integer
11
+ # * Integer list (In an integer list, a single space is used to separate integer values.)
12
+ # * Price (Prices returned are Tourplan prices multiplied by 100, + currency stuff..)
13
+ #
14
+ # It must be possible to convert this data from/to native Ruby objects
2
15
  class Coercion
3
- # Coercion
4
- #
5
- # Possible Types:
6
- # * String
7
- # * Strings with multiple lines (don't know yet if these must be handled specifically)
8
- # * Boolean (Y/N)
9
- # * Date (yyyy-mm-dd)
10
- # * Time (hhmm)
11
- # * Integer
12
- # * Integer list (In an integer list, a single space is used to separate integer values.)
13
- # * Price (Prices returned are Tourplan prices multiplied by 100, + currency stuff..)
14
- #
15
- # It must be possible to convert this data from/to native Ruby objects
16
-
17
16
  # Convert HostConnect formatted data to Ruby objects
18
17
  def self.from_hc(data)
19
18
  case data
@@ -35,11 +34,6 @@ module HostConnect
35
34
  when nil then ""
36
35
  when true then "Y"
37
36
  when false then "N"
38
- when "Single" then "SG"
39
- when "Twin" then "TW"
40
- when "Double" then "DB"
41
- when "Triple" then "TR"
42
- when "Quad" then "QD"
43
37
  else data.strip
44
38
  end
45
39
  end
@@ -6,10 +6,12 @@ module HostConnect
6
6
 
7
7
  @services = []
8
8
  @data.search("/Reply/GetBookingReply/Services/Service").each do |service|
9
- s = Struct.new(:service_line_id, :service_line_update_count, :opt).new
9
+ s = Struct.new(:service_line_id, :service_line_update_count, :opt,
10
+ :status).new
10
11
  s.service_line_id = (service/"ServiceLineId").innerHTML.to_i
11
12
  s.service_line_update_count = (service/"ServiceLineUpdateCount").innerHTML.to_i
12
13
  s.opt = (service/"Opt").innerHTML
14
+ s.status = (service/"Status").innerHTML
13
15
 
14
16
  @services << s
15
17
  end
@@ -0,0 +1,21 @@
1
+ module HostConnect
2
+ # Translate to/from HostConnect codes
3
+ class Translation
4
+ GRAMMAR = {
5
+ "SG" => "Single",
6
+ "TW" => "Twin",
7
+ "DB" => "Double",
8
+ "TR" => "Triple",
9
+ "QD" => "Quad",
10
+ "CF" => "Confirmed",
11
+ "CX" => "Cancelled",
12
+ "FQ" => "FIT Quote",
13
+ "IN" => "Internet Booking",
14
+ "RQ" => "Request"
15
+ }
16
+
17
+ def self.translate(string)
18
+ (string =~ /^[A-Z]{2}$/) ? GRAMMAR[string] : GRAMMAR.invert[string]
19
+ end
20
+ end
21
+ end
data/lib/hostconnect.rb CHANGED
@@ -10,7 +10,7 @@ $LOAD_PATH.unshift(pwd)
10
10
  active_support yaml logger].each { |lib| require lib }
11
11
 
12
12
  # Require HostConnect files
13
- %w[client response builder rtf_document
13
+ %w[client response builder rtf_document translation
14
14
  coercion].each { |lib| require "#{pwd}/hostconnect/#{lib}" }
15
15
 
16
16
  Dir.glob("#{pwd}/hostconnect/builders/*.rb").each { |file| require file }
@@ -23,7 +23,7 @@ module HostConnect
23
23
  module Version
24
24
  MAJOR = '0'
25
25
  MINOR = '1'
26
- REVISION = '1'
26
+ REVISION = '2'
27
27
  def self.combined
28
28
  [MAJOR, MINOR, REVISION].join('.')
29
29
  end
@@ -46,10 +46,10 @@ END
46
46
  pax2 = PaxDetailsBuilder.new(:title => "Mrs", :forename => "Sally", :surname => "Jardim",
47
47
  :pax_type => "A", :date_of_birth => "1980-12-24")
48
48
 
49
- room = RoomConfigBuilder.new(:adults => 1, :room_type => "Twin", :pax_list => [ pax1 ])
49
+ room = RoomConfigBuilder.new(:adults => 1, :room_type => "TW", :pax_list => [ pax1 ])
50
50
  room.to_s.should == @room_xml_1
51
51
 
52
- room = RoomConfigBuilder.new(:adults => 2, :room_type => "Twin", :pax_list => [ pax1, pax2 ])
52
+ room = RoomConfigBuilder.new(:adults => 2, :room_type => "TW", :pax_list => [ pax1, pax2 ])
53
53
  room.to_s.should == @room_xml_2
54
54
  end
55
55
 
@@ -81,14 +81,5 @@ describe HostConnect::Coercion do
81
81
  Coercion.to_hc(nil).should == ""
82
82
  Coercion.to_hc(" ").should == ""
83
83
  end
84
-
85
- it "should know about room types" do
86
- Coercion.to_hc("Single").should == "SG"
87
- Coercion.to_hc("Twin").should == "TW"
88
- Coercion.to_hc("Double").should == "DB"
89
- Coercion.to_hc("Triple").should == "TR"
90
- Coercion.to_hc("Quad").should == "QD"
91
- Coercion.to_hc("Twinn").should == "Twinn"
92
- end
93
84
  end
94
85
  end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + "/spec_helper"
2
+
3
+ describe HostConnect::Translation do
4
+ it "should know about room types" do
5
+ Translation.translate("Single").should == "SG"
6
+ Translation.translate("Twin").should == "TW"
7
+ Translation.translate("Double").should == "DB"
8
+ Translation.translate("Triple").should == "TR"
9
+ Translation.translate("Quad").should == "QD"
10
+ Translation.translate("Twinn").should == nil
11
+
12
+ Translation.translate("SG").should == "Single"
13
+ Translation.translate("TW").should == "Twin"
14
+ Translation.translate("DB").should == "Double"
15
+ Translation.translate("TR").should == "Triple"
16
+ Translation.translate("QD").should == "Quad"
17
+ end
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Chrononaut-hostconnect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Bj\xC3\xB8rn Arild M\xC3\xA6land"
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
- date: 2008-08-17 15:00:00 -07:00
11
+ date: 2008-08-27 15:00:00 -07:00
12
12
  default_executable:
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
@@ -88,6 +88,7 @@ extra_rdoc_files:
88
88
  - lib/hostconnect/coercion.rb
89
89
  - lib/hostconnect/core_extensions/string.rb
90
90
  - lib/hostconnect/core_extensions/symbol.rb
91
+ - lib/hostconnect/translation.rb
91
92
  - lib/hostconnect/responses/agent_info.rb
92
93
  - lib/hostconnect/responses/get_services.rb
93
94
  - lib/hostconnect/responses/list_bookings.rb
@@ -106,6 +107,7 @@ files:
106
107
  - Rakefile
107
108
  - README.markdown
108
109
  - CHANGELOG
110
+ - hostconnect.gemspec
109
111
  - lib/hostconnect.rb
110
112
  - lib/hostconnect/builders/agent_info_builder.rb
111
113
  - lib/hostconnect/builders/pax_details_builder.rb
@@ -124,6 +126,7 @@ files:
124
126
  - lib/hostconnect/coercion.rb
125
127
  - lib/hostconnect/core_extensions/string.rb
126
128
  - lib/hostconnect/core_extensions/symbol.rb
129
+ - lib/hostconnect/translation.rb
127
130
  - lib/hostconnect/responses/agent_info.rb
128
131
  - lib/hostconnect/responses/get_services.rb
129
132
  - lib/hostconnect/responses/list_bookings.rb
@@ -176,9 +179,9 @@ files:
176
179
  - spec/responses/add_service_spec.rb
177
180
  - spec/responses/ping_spec.rb
178
181
  - spec/responses/get_locations_spec.rb
182
+ - spec/translation_spec.rb
179
183
  - spec/coercion_spec.rb
180
184
  - Manifest
181
- - hostconnect.gemspec
182
185
  has_rdoc: true
183
186
  homepage: http://www.github.com/Chrononaut/hostconnect/
184
187
  post_install_message: