ticketevolution-ruby 0.7.1 → 0.7.2

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