tourcms 0.2.1 → 0.3.0

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/Gemfile CHANGED
@@ -2,7 +2,7 @@ source "http://rubygems.org"
2
2
  # Add dependencies required to use your gem here.
3
3
  # Example:
4
4
  # gem "activesupport", ">= 2.3.5"
5
- gem 'nokogiri'
5
+ gem 'activesupport', ">= 3.0.0"
6
6
 
7
7
  # Add dependencies to develop your gem here.
8
8
  # Include everything needed to run rake, tests, features, etc.
@@ -1,12 +1,12 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ activesupport (3.0.7)
4
5
  git (1.2.5)
5
6
  jeweler (1.5.2)
6
7
  bundler (~> 1.0.0)
7
8
  git (>= 1.2.5)
8
9
  rake
9
- nokogiri (1.4.4)
10
10
  rake (0.8.7)
11
11
  rcov (0.9.9)
12
12
  shoulda (2.11.3)
@@ -15,8 +15,8 @@ PLATFORMS
15
15
  ruby
16
16
 
17
17
  DEPENDENCIES
18
+ activesupport (>= 3.0.0)
18
19
  bundler (~> 1.0.0)
19
20
  jeweler (~> 1.5.2)
20
- nokogiri
21
21
  rcov
22
22
  shoulda
data/README.md CHANGED
@@ -77,6 +77,10 @@ Many TourCMS methods accept parameters. Most methods take a hash of parameters l
77
77
  * show\_tour\_departures
78
78
  * show\_tour\_freesale
79
79
 
80
+ ## Dependencies
81
+
82
+ This gem depends on ActiveSupport 3.0.0+
83
+
80
84
  ## Contributing to tourcms
81
85
 
82
86
  * Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.1
1
+ 0.3.0
@@ -73,16 +73,6 @@ module TourCMS
73
73
  end
74
74
 
75
75
  private
76
-
77
- def construct_params(param_hash)
78
- if param_hash.empty?
79
- res = ""
80
- else
81
- qs = param_hash.stringify.reject{|k,v| v.nil? || v.empty?}.collect{|k,v|"#{CGI.escape(k)}=#{CGI.escape(v)}"}.join("&")
82
- qs.empty? ? res = "" : res = "?#{qs}"
83
- end
84
- res
85
- end
86
76
 
87
77
  def generate_signature(path, verb, channel, outbound_time)
88
78
  string_to_sign = "#{channel}/#{@marketp_id}/#{verb}/#{outbound_time}#{path}".strip
@@ -93,14 +83,16 @@ module TourCMS
93
83
  end
94
84
 
95
85
  def request(path, channel = 0, params = {}, verb = "GET")
96
- url = @base_url + path + construct_params(params)
86
+ url = @base_url + path + "?#{params.to_query}"
97
87
  req_time = Time.now.utc
98
- signature = generate_signature(path + construct_params(params), verb, channel, req_time.to_i)
88
+ signature = generate_signature(path + "?#{params.to_query}", verb, channel, req_time.to_i)
99
89
 
100
90
  headers = {"Content-type" => "text/xml", "charset" => "utf-8", "Date" => req_time.strftime("%a, %d %b %Y %H:%M:%S GMT"),
101
91
  "Authorization" => "TourCMS #{channel}:#{@marketp_id}:#{signature}" }
102
92
 
103
- @result_type == "raw" ? open(url, headers) : doc = Hash.from_xml(open(url, headers))[:response]
93
+ response = open(url, headers).read
94
+
95
+ @result_type == "raw" ? response : Hash.from_xml(response)["response"]
104
96
  end
105
97
  end
106
98
  end
@@ -5,8 +5,7 @@ require 'base64'
5
5
  require 'cgi'
6
6
  require 'open-uri'
7
7
  require 'rubygems'
8
- require 'nokogiri'
8
+ require 'active_support/core_ext'
9
9
 
10
- require 'tour_cms/hash'
11
10
  require 'tour_cms/connection'
12
11
 
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{tourcms}
8
- s.version = "0.2.1"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Alex Kremer"]
12
- s.date = %q{2011-04-19}
12
+ s.date = %q{2011-04-20}
13
13
  s.description = %q{A simple Ruby wrapper for interacting with the TourCMS API}
14
14
  s.email = %q{alex@flextrip.com}
15
15
  s.extra_rdoc_files = [
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
24
24
  "Rakefile",
25
25
  "VERSION",
26
26
  "lib/tour_cms/connection.rb",
27
- "lib/tour_cms/hash.rb",
28
27
  "lib/tourcms.rb",
29
28
  "test/helper.rb",
30
29
  "test/test_tourcms.rb",
@@ -33,7 +32,7 @@ Gem::Specification.new do |s|
33
32
  s.homepage = %q{http://github.com/flextrip/tourcms}
34
33
  s.licenses = ["MIT"]
35
34
  s.require_paths = ["lib"]
36
- s.rubygems_version = %q{1.7.2}
35
+ s.rubygems_version = %q{1.6.2}
37
36
  s.summary = %q{A Ruby Library for the TourCMS API}
38
37
  s.test_files = [
39
38
  "test/helper.rb",
@@ -44,20 +43,20 @@ Gem::Specification.new do |s|
44
43
  s.specification_version = 3
45
44
 
46
45
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
47
- s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
46
+ s.add_runtime_dependency(%q<activesupport>, [">= 3.0.0"])
48
47
  s.add_development_dependency(%q<shoulda>, [">= 0"])
49
48
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
50
49
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
51
50
  s.add_development_dependency(%q<rcov>, [">= 0"])
52
51
  else
53
- s.add_dependency(%q<nokogiri>, [">= 0"])
52
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
54
53
  s.add_dependency(%q<shoulda>, [">= 0"])
55
54
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
56
55
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
57
56
  s.add_dependency(%q<rcov>, [">= 0"])
58
57
  end
59
58
  else
60
- s.add_dependency(%q<nokogiri>, [">= 0"])
59
+ s.add_dependency(%q<activesupport>, [">= 3.0.0"])
61
60
  s.add_dependency(%q<shoulda>, [">= 0"])
62
61
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
63
62
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tourcms
3
3
  version: !ruby/object:Gem::Version
4
- hash: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 1
10
- version: 0.2.1
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Alex Kremer
@@ -15,23 +15,27 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-04-19 00:00:00 Z
18
+ date: 2011-04-20 00:00:00 +02:00
19
+ default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
22
+ prerelease: false
21
23
  type: :runtime
22
24
  requirement: &id001 !ruby/object:Gem::Requirement
23
25
  none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
27
- hash: 3
29
+ hash: 7
28
30
  segments:
31
+ - 3
29
32
  - 0
30
- version: "0"
33
+ - 0
34
+ version: 3.0.0
35
+ name: activesupport
31
36
  version_requirements: *id001
32
- name: nokogiri
33
- prerelease: false
34
37
  - !ruby/object:Gem::Dependency
38
+ prerelease: false
35
39
  type: :development
36
40
  requirement: &id002 !ruby/object:Gem::Requirement
37
41
  none: false
@@ -42,10 +46,10 @@ dependencies:
42
46
  segments:
43
47
  - 0
44
48
  version: "0"
45
- version_requirements: *id002
46
49
  name: shoulda
47
- prerelease: false
50
+ version_requirements: *id002
48
51
  - !ruby/object:Gem::Dependency
52
+ prerelease: false
49
53
  type: :development
50
54
  requirement: &id003 !ruby/object:Gem::Requirement
51
55
  none: false
@@ -58,10 +62,10 @@ dependencies:
58
62
  - 0
59
63
  - 0
60
64
  version: 1.0.0
61
- version_requirements: *id003
62
65
  name: bundler
63
- prerelease: false
66
+ version_requirements: *id003
64
67
  - !ruby/object:Gem::Dependency
68
+ prerelease: false
65
69
  type: :development
66
70
  requirement: &id004 !ruby/object:Gem::Requirement
67
71
  none: false
@@ -74,10 +78,10 @@ dependencies:
74
78
  - 5
75
79
  - 2
76
80
  version: 1.5.2
77
- version_requirements: *id004
78
81
  name: jeweler
79
- prerelease: false
82
+ version_requirements: *id004
80
83
  - !ruby/object:Gem::Dependency
84
+ prerelease: false
81
85
  type: :development
82
86
  requirement: &id005 !ruby/object:Gem::Requirement
83
87
  none: false
@@ -88,9 +92,8 @@ dependencies:
88
92
  segments:
89
93
  - 0
90
94
  version: "0"
91
- version_requirements: *id005
92
95
  name: rcov
93
- prerelease: false
96
+ version_requirements: *id005
94
97
  description: A simple Ruby wrapper for interacting with the TourCMS API
95
98
  email: alex@flextrip.com
96
99
  executables: []
@@ -108,11 +111,11 @@ files:
108
111
  - Rakefile
109
112
  - VERSION
110
113
  - lib/tour_cms/connection.rb
111
- - lib/tour_cms/hash.rb
112
114
  - lib/tourcms.rb
113
115
  - test/helper.rb
114
116
  - test/test_tourcms.rb
115
117
  - tourcms.gemspec
118
+ has_rdoc: true
116
119
  homepage: http://github.com/flextrip/tourcms
117
120
  licenses:
118
121
  - MIT
@@ -142,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
145
  requirements: []
143
146
 
144
147
  rubyforge_project:
145
- rubygems_version: 1.7.2
148
+ rubygems_version: 1.6.2
146
149
  signing_key:
147
150
  specification_version: 3
148
151
  summary: A Ruby Library for the TourCMS API
@@ -1,67 +0,0 @@
1
- class Hash
2
- def stringify
3
- inject({}) do |options, (key, value)|
4
- options[key.to_s] = value.to_s
5
- options
6
- end
7
- end
8
-
9
- class << self
10
- def from_xml(xml_io)
11
- begin
12
- result = Nokogiri::XML(xml_io)
13
- return { result.root.name.to_sym => xml_node_to_hash(result.root)}
14
- rescue Exception => e
15
- raise StandardError, "Could not parse TourCMS XML Response. Server error?"
16
- end
17
- end
18
-
19
- def xml_node_to_hash(node)
20
- # If we are at the root of the document, start the hash
21
- if node.element?
22
- result_hash = {}
23
- if node.attributes != {}
24
- result_hash[:attributes] = {}
25
- node.attributes.keys.each do |key|
26
- result_hash[:attributes][node.attributes[key].name.to_sym] = prepare(node.attributes[key].value)
27
- end
28
- end
29
- if node.children.size > 0
30
- node.children.each do |child|
31
- result = xml_node_to_hash(child)
32
-
33
- if child.name == "text" || child.name == "#cdata-section"
34
- unless child.next_sibling || child.previous_sibling
35
- return prepare(result)
36
- end
37
- elsif result_hash[child.name.to_sym]
38
- if result_hash[child.name.to_sym].is_a?(Object::Array)
39
- result_hash[child.name.to_sym] << prepare(result)
40
- else
41
- result_hash[child.name.to_sym] = [result_hash[child.name.to_sym]] << prepare(result)
42
- end
43
- else
44
- result_hash[child.name.to_sym] = prepare(result)
45
- end
46
- end
47
-
48
- return result_hash
49
- else
50
- return result_hash
51
- end
52
- else
53
- return prepare(node.content.to_s)
54
- end
55
- end
56
-
57
- def prepare(data)
58
- data = "" if data == "\n\t"
59
- (data.class == String && data.to_i.to_s == data) ? data.to_i : data
60
- end
61
- end
62
-
63
- def to_struct(struct_name)
64
- Struct.new(struct_name,*keys).new(*values)
65
- end
66
-
67
- end