ticketevolution-ruby 0.7.1 → 0.7.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/README.markdown CHANGED
@@ -260,7 +260,7 @@ Click on the links next to each endpoint for more detail.
260
260
  @venue = @connection.venues.show(id)
261
261
 
262
262
 
263
- ######ticketevolution-ruby v0.7.1
263
+ ######ticketevolution-ruby v0.7.2
264
264
 
265
265
  License
266
266
  -------
@@ -0,0 +1,15 @@
1
+ module Faraday
2
+ module Utils
3
+ # Override Faraday's version so it sorts the params
4
+ alias :faradays_build_nested_query :build_nested_query
5
+ def build_nested_query(value, prefix = nil)
6
+ if value.is_a? Hash
7
+ value.to_ordered_hash.map { |k, v|
8
+ build_nested_query(v, prefix ? "#{prefix}%5B#{escape(k)}%5D" : escape(k))
9
+ }.join("&")
10
+ else
11
+ faradays_build_nested_query(value, prefix)
12
+ end
13
+ end
14
+ end
15
+ end
data/lib/ext/hash.rb ADDED
@@ -0,0 +1,9 @@
1
+ class Hash
2
+ def to_ordered_hash
3
+ ActiveSupport::OrderedHash.new.tap do |hash|
4
+ self.sort_by{|k,v| k.to_s}.each do |k, v|
5
+ hash[k] = v
6
+ end
7
+ end
8
+ end
9
+ end
@@ -17,20 +17,12 @@ require 'active_support/core_ext/hash'
17
17
  require 'active_support/core_ext/module'
18
18
  require 'active_support/core_ext/object'
19
19
  require 'active_support/inflector'
20
+ require 'active_support/ordered_hash'
20
21
 
21
- require 'faraday/response/verbose_logger'
22
-
23
- if ActiveSupport::VERSION::STRING < "3.1.0"
24
- class Hash
25
- def to_param(namespace = nil)
26
- collect do |key, value|
27
- value.to_query(namespace ? "#{namespace}[#{key}]" : key)
28
- end.sort * '&'
29
- end
22
+ require 'ext/hash'
23
+ require 'ext/faraday/utils'
30
24
 
31
- alias :to_query :to_param
32
- end
33
- end
25
+ require 'faraday/response/verbose_logger'
34
26
 
35
27
  module TicketEvolution
36
28
  mattr_reader :root
@@ -1,6 +1,6 @@
1
1
  module TicketEvolution
2
2
  class Collection
3
- attr_accessor :total_entries, :per_page, :current_page, :entries
3
+ attr_accessor :total_entries, :per_page, :current_page, :entries, :code
4
4
 
5
5
  include Enumerable
6
6
 
@@ -15,6 +15,7 @@ module TicketEvolution
15
15
  def self.build_from_response(response, entries_key, singular_class)
16
16
  entries = response.body[entries_key] || []
17
17
  new(
18
+ :code => response.response_code,
18
19
  :total_entries => response.body['total_entries'],
19
20
  :per_page => response.body['per_page'],
20
21
  :current_page => response.body['current_page'],
@@ -101,7 +101,7 @@ module TicketEvolution
101
101
  "#{uri}?#{if params.present?
102
102
  case method
103
103
  when :GET
104
- params.to_query
104
+ Faraday::Utils.build_nested_query(params)
105
105
  else
106
106
  post_body(params)
107
107
  end
@@ -19,6 +19,7 @@ module TicketEvolution
19
19
  }
20
20
 
21
21
  def request(method, path, params = nil, &response_handler)
22
+ params = params.to_ordered_hash if params.is_a?(Hash)
22
23
  redirecting = caller.first =~ /request_handler/ ? false : true
23
24
  request = self.build_request(method, path, params, redirecting)
24
25
 
@@ -1,3 +1,3 @@
1
1
  module TicketEvolution
2
- VERSION = '0.7.1'
2
+ VERSION = '0.7.2'
3
3
  end
@@ -956,3 +956,47 @@
956
956
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
957
957
  body: ! '{"updated_at":"2012-02-22T17:07:30Z","addresses":[],"email_addresses":[],"phone_numbers":[],"name":"foo","url":"/clients/2405","id":"2405"}'
958
958
  http_version: '1.1'
959
+ - !ruby/struct:VCR::HTTPInteraction
960
+ request: !ruby/struct:VCR::Request
961
+ method: :put
962
+ uri: https://api.sandbox.ticketevolution.com:443/clients/2405
963
+ body: ! '{"addresses":[],"email_addresses":[],"name":"","phone_numbers":[],"server_message":"Generally
964
+ returned by successful POST requests. ","status_code":201,"updated_at":"2012-02-22T17:07:30Z","url":"/clients/2405"}'
965
+ headers:
966
+ x-signature:
967
+ - Xf/nsdiHiYbpLeGbgDDsOBfXJpGtlinClG/MoyzgkdI=
968
+ x-token:
969
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
970
+ accept:
971
+ - application/vnd.ticketevolution.api+json; version=8
972
+ response: !ruby/struct:VCR::Response
973
+ status: !ruby/struct:VCR::ResponseStatus
974
+ code: 422
975
+ message: Unprocessable Entity
976
+ headers:
977
+ content-type:
978
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
979
+ transfer-encoding:
980
+ - chunked
981
+ connection:
982
+ - keep-alive
983
+ status:
984
+ - '422'
985
+ x-powered-by:
986
+ - Phusion Passenger (mod_rails/mod_rack) 2.2.10
987
+ x-runtime:
988
+ - '0.028101'
989
+ x-ua-compatible:
990
+ - IE=Edge,chrome=1
991
+ strict-transport-security:
992
+ - max-age=31536000
993
+ cache-control:
994
+ - no-cache
995
+ server:
996
+ - nginx/0.7.65 + Phusion Passenger 2.2.10 (mod_rails/mod_rack)
997
+ body: ! '{"updated_at":"2012-02-22T17:07:30Z","phone_numbers":[],"url":"/clients/2405","errors":{"name":["can''t
998
+ be blank"]},"addresses":[{"postal_code":"77338","street_address":"21338 maple
999
+ harvest lane","extended_address":null,"locality":"Humble","latitude":null,"country_code":null,"region":"Tx","name":"Martil
1000
+ martinez","longitude":null},{"postal_code":"77338","street_address":"21338 maple
1001
+ harvest lane","extended_address":null,"locality":"Humble","latitude":null,"country_code":null,"region":"Tx","name":null,"longitude":null}],"name":null,"id":"2405","email_addresses":[]}'
1002
+ http_version: '1.1'
@@ -818,3 +818,53 @@
818
818
  - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
819
819
  body: ! '{"updated_at":"2012-02-22T17:07:29Z","addresses":[],"email_addresses":[],"phone_numbers":[],"name":"bar","url":"/clients/2404","id":"2404"}'
820
820
  http_version: '1.1'
821
+ - !ruby/struct:VCR::HTTPInteraction
822
+ request: !ruby/struct:VCR::Request
823
+ method: :put
824
+ uri: https://api.sandbox.ticketevolution.com:443/clients/2404
825
+ body: ! '{"addresses":[],"email_addresses":[],"name":"bar","phone_numbers":[],"server_message":"Generally
826
+ returned by successful POST requests. ","status_code":201,"updated_at":"2012-02-22T17:07:29Z","url":"/clients/2404"}'
827
+ headers:
828
+ x-signature:
829
+ - 6qfTnv9NQPgeC4ZDAdzfRiTlYz0/VMBTQgX8SNPlYD0=
830
+ x-token:
831
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
832
+ accept:
833
+ - application/vnd.ticketevolution.api+json; version=8
834
+ response: !ruby/struct:VCR::Response
835
+ status: !ruby/struct:VCR::ResponseStatus
836
+ code: 200
837
+ message: OK
838
+ headers:
839
+ content-type:
840
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
841
+ transfer-encoding:
842
+ - chunked
843
+ connection:
844
+ - keep-alive
845
+ status:
846
+ - '200'
847
+ x-powered-by:
848
+ - Phusion Passenger (mod_rails/mod_rack) 2.2.10
849
+ etag:
850
+ - ! '"b58896cd9a50041a033626f2539aec18"'
851
+ x-runtime:
852
+ - '0.070331'
853
+ x-ua-compatible:
854
+ - IE=Edge,chrome=1
855
+ strict-transport-security:
856
+ - max-age=31536000
857
+ cache-control:
858
+ - max-age=0, private, must-revalidate
859
+ server:
860
+ - nginx/0.7.65 + Phusion Passenger 2.2.10 (mod_rails/mod_rack)
861
+ body: ! '{"updated_at":"2012-02-22T17:07:29Z","phone_numbers":[],"url":"/clients/2404","addresses":[{"postal_code":"92154","street_address":"1230
862
+ Ilexey Ave","extended_address":null,"locality":"San Diego","latitude":null,"country_code":null,"region":"CA","name":"Egbert
863
+ Purog","longitude":null},{"postal_code":"92154","street_address":"1230 Ilexey
864
+ Ave","extended_address":null,"locality":"San Diego","latitude":null,"country_code":null,"region":"CA","name":"E
865
+ Patrick Purog","longitude":null},{"postal_code":"92154","street_address":"1230
866
+ Ilexey Ave","extended_address":null,"locality":"San Diego","latitude":null,"country_code":null,"region":"CA","name":"Egbert
867
+ Purog","longitude":null},{"postal_code":"92154","street_address":"1230 Ilexey
868
+ Ave","extended_address":null,"locality":"San Diego","latitude":null,"country_code":null,"region":"CA","name":"E
869
+ Patrick Purog","longitude":null}],"name":"bar","id":"2404","email_addresses":[]}'
870
+ http_version: '1.1'
@@ -0,0 +1,28 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'Hash' do
4
+ let(:hash) { { :one => 1, :two => 2, :three => 3 } }
5
+ let(:ordered_hash) { hash.to_ordered_hash }
6
+
7
+ it "should respond to #to_ordered_hash" do
8
+ hash.should respond_to :to_ordered_hash
9
+ end
10
+
11
+ describe "#to_ordered_hash" do
12
+ it "should return an instance of ActiveSupport::OrderedHash" do
13
+ ordered_hash.should be_an ActiveSupport::OrderedHash
14
+ end
15
+
16
+ it "should contain the same key value pairs as the original" do
17
+ hash.keys.should =~ ordered_hash.keys
18
+ hash.each do |k, v|
19
+ ordered_hash[k].should == v
20
+ end
21
+ end
22
+
23
+ it "should order it's keys alphabetically" do
24
+ keys = ordered_hash.keys.clone
25
+ keys.sort_by{|x|x.to_s}.should == ordered_hash.keys
26
+ end
27
+ end
28
+ end
@@ -10,6 +10,7 @@ describe TicketEvolution::Collection do
10
10
  its(:per_page) { should == 2 }
11
11
  its(:total_entries) { should == 1379 }
12
12
  its(:current_page) { should == 1 }
13
+ its(:code) { should == 200 }
13
14
  end
14
15
 
15
16
  context "#each" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ticketevolution-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.1
4
+ version: 0.7.2
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-02-23 00:00:00.000000000Z
12
+ date: 2012-02-24 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70181057522720 !ruby/object:Gem::Requirement
16
+ requirement: &70213479646800 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 3.0.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70181057522720
24
+ version_requirements: *70213479646800
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &70181057521780 !ruby/object:Gem::Requirement
27
+ requirement: &70213480049520 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.7.3
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70181057521780
35
+ version_requirements: *70213480049520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yajl-ruby
38
- requirement: &70181057540900 !ruby/object:Gem::Requirement
38
+ requirement: &70213480475740 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: 0.7.7
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70181057540900
46
+ version_requirements: *70213480475740
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: multi_json
49
- requirement: &70181057545340 !ruby/object:Gem::Requirement
49
+ requirement: &70213480492200 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: 0.0.4
55
55
  type: :runtime
56
56
  prerelease: false
57
- version_requirements: *70181057545340
57
+ version_requirements: *70213480492200
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &70181057549480 !ruby/object:Gem::Requirement
60
+ requirement: &70213481183520 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,10 +65,10 @@ dependencies:
65
65
  version: 1.4.3
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *70181057549480
68
+ version_requirements: *70213481183520
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70181057553060 !ruby/object:Gem::Requirement
71
+ requirement: &70213481182940 !ruby/object:Gem::Requirement
72
72
  none: false
73
73
  requirements:
74
74
  - - ! '>='
@@ -76,10 +76,10 @@ dependencies:
76
76
  version: 2.7.1
77
77
  type: :development
78
78
  prerelease: false
79
- version_requirements: *70181057553060
79
+ version_requirements: *70213481182940
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: vcr
82
- requirement: &70181057556000 !ruby/object:Gem::Requirement
82
+ requirement: &70213481182200 !ruby/object:Gem::Requirement
83
83
  none: false
84
84
  requirements:
85
85
  - - ! '>='
@@ -87,10 +87,10 @@ dependencies:
87
87
  version: '0'
88
88
  type: :development
89
89
  prerelease: false
90
- version_requirements: *70181057556000
90
+ version_requirements: *70213481182200
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &70181061812160 !ruby/object:Gem::Requirement
93
+ requirement: &70213481181120 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -101,10 +101,10 @@ dependencies:
101
101
  version: 1.8.0
102
102
  type: :development
103
103
  prerelease: false
104
- version_requirements: *70181061812160
104
+ version_requirements: *70213481181120
105
105
  - !ruby/object:Gem::Dependency
106
106
  name: awesome_print
107
- requirement: &70181062357560 !ruby/object:Gem::Requirement
107
+ requirement: &70213481179880 !ruby/object:Gem::Requirement
108
108
  none: false
109
109
  requirements:
110
110
  - - ! '>='
@@ -112,10 +112,10 @@ dependencies:
112
112
  version: '0'
113
113
  type: :development
114
114
  prerelease: false
115
- version_requirements: *70181062357560
115
+ version_requirements: *70213481179880
116
116
  - !ruby/object:Gem::Dependency
117
117
  name: rake
118
- requirement: &70181062709940 !ruby/object:Gem::Requirement
118
+ requirement: &70213481179020 !ruby/object:Gem::Requirement
119
119
  none: false
120
120
  requirements:
121
121
  - - ! '>='
@@ -123,7 +123,7 @@ dependencies:
123
123
  version: '0'
124
124
  type: :development
125
125
  prerelease: false
126
- version_requirements: *70181062709940
126
+ version_requirements: *70213481179020
127
127
  description: Provides Ruby wrappers for the Ticket Evolution API (http://developer.ticketevolution.com).
128
128
  Ticket Evolution is the industry leader in software for the Ticket Broker industry.
129
129
  email:
@@ -147,6 +147,8 @@ files:
147
147
  - lib/docs/introduction.markdown
148
148
  - lib/docs/license.markdown
149
149
  - lib/docs/objects.markdown
150
+ - lib/ext/faraday/utils.rb
151
+ - lib/ext/hash.rb
150
152
  - lib/faraday/response/verbose_logger.rb
151
153
  - lib/ticket_evolution.rb
152
154
  - lib/ticket_evolution/account.rb
@@ -222,6 +224,7 @@ files:
222
224
  - spec/fixtures/net/endpoints/clients/update_fail.yml
223
225
  - spec/fixtures/net/endpoints/clients/update_success.yml
224
226
  - spec/fixtures/net/endpoints/search.yml
227
+ - spec/lib/ext/hash_spec.rb
225
228
  - spec/lib/ticket_evolution/account_spec.rb
226
229
  - spec/lib/ticket_evolution/accounts_spec.rb
227
230
  - spec/lib/ticket_evolution/address_spec.rb
@@ -302,7 +305,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
302
305
  version: '0'
303
306
  segments:
304
307
  - 0
305
- hash: 3800414316783008053
308
+ hash: -2898500470310488560
306
309
  required_rubygems_version: !ruby/object:Gem::Requirement
307
310
  none: false
308
311
  requirements:
@@ -326,6 +329,7 @@ test_files:
326
329
  - spec/fixtures/net/endpoints/clients/update_fail.yml
327
330
  - spec/fixtures/net/endpoints/clients/update_success.yml
328
331
  - spec/fixtures/net/endpoints/search.yml
332
+ - spec/lib/ext/hash_spec.rb
329
333
  - spec/lib/ticket_evolution/account_spec.rb
330
334
  - spec/lib/ticket_evolution/accounts_spec.rb
331
335
  - spec/lib/ticket_evolution/address_spec.rb