ticketevolution-ruby 0.6.2 → 0.6.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -47,6 +47,14 @@ module TicketEvolution
47
47
  end.join
48
48
  end
49
49
 
50
+ def uri(path)
51
+ parts = [].tap do |parts|
52
+ parts << self.url
53
+ parts << "/V#{@config[:version]}" if @config[:version] > 8
54
+ parts << path
55
+ end.join
56
+ end
57
+
50
58
  def sign(method, path, content = nil)
51
59
  Base64.encode64(
52
60
  OpenSSL::HMAC.digest(
@@ -57,8 +65,7 @@ module TicketEvolution
57
65
  end
58
66
 
59
67
  def build_request(method, path, params = nil)
60
- uri = URI.join(self.url, path).to_s
61
- Curl::Easy.new(generate_url(method, uri, params)) do |request|
68
+ Curl::Easy.new(generate_url(method, self.uri(path), params)) do |request|
62
69
  if @config.has_key?(:ssl_verify)
63
70
  request.ssl_verify_host = @config[:ssl_verify]
64
71
  request.ssl_verify_peer = @config[:ssl_verify]
@@ -67,8 +74,8 @@ module TicketEvolution
67
74
  request.on_debug { |type, data| self.logger << data }
68
75
  end
69
76
  request.post_body = post_body(params) unless method == :GET
70
- request.headers["Accept"] = "application/vnd.ticketevolution.api+json; version=#{@config[:version]}"
71
- request.headers["X-Signature"] = sign(method, uri, params)
77
+ request.headers["Accept"] = "application/vnd.ticketevolution.api+json; version=#{@config[:version]}" unless @config[:version] > 8
78
+ request.headers["X-Signature"] = sign(method, self.uri(path), params)
72
79
  request.headers["X-Token"] = @config[:token]
73
80
  end
74
81
  end
@@ -92,17 +99,15 @@ module TicketEvolution
92
99
  end
93
100
  end
94
101
 
95
- def process_params(method, path, params)
96
- suffix = if params.present?
102
+ def process_params(method, uri, params)
103
+ "#{uri}?#{if params.present?
97
104
  case method
98
105
  when :GET
99
106
  params.to_query
100
107
  else
101
108
  post_body(params)
102
109
  end
103
- end
104
-
105
- "#{URI.join(url, path).to_s}?" + suffix.to_s
110
+ end}"
106
111
  end
107
112
  end
108
113
  end
@@ -13,6 +13,7 @@ module TicketEvolution
13
13
  401 => ["Unauthorized","Returned when the authentication credentials are invalid."],
14
14
  404 => ["Not Found","The requested resource could not be located."],
15
15
  406 => ["Not Acceptable","The requested content type or version is invalid."],
16
+ 422 => ["Unprocessable Entity","Returned when the application can't processes the data."],
16
17
  500 => ["Internal Server Error","Used a general error response for processing errors or other issues with the web service. "],
17
18
  503 => ["Service Unavailable","Returned when the API service is temporarily unavailable. This could also indicate that the rate limit for the given token has been reached. If this status is received, the request should be retried."]
18
19
  }
@@ -38,7 +39,7 @@ module TicketEvolution
38
39
  resp.header = response.header_str
39
40
  resp.response_code = response.response_code
40
41
  resp.body = MultiJson.decode(response.body_str).merge({:connection => self.connection})
41
- resp.server_message = CODES[response.response_code].last
42
+ resp.server_message = (CODES[response.response_code] || ['Unknown Error']).last
42
43
  end
43
44
  end
44
45
  end
@@ -43,16 +43,15 @@ module TicketEvolution
43
43
 
44
44
  def new_ostruct_member(name)
45
45
  begin
46
- endpoint_class = "#{plural_class_name}::#{name.camelize}".constantize
47
- name = super(name)
46
+ name = super
48
47
  class << self; self; end.class_eval do
49
48
  define_method(name) do
50
49
  begin
51
50
  obj = @table[name]
52
- obj.instance_eval "@endpoint = #{self.plural_class_name}::#{name.to_s.camelize}.new(:parent => #{self.plural_class_name}.new(:id => #{self.id}, :parent => TicketEvolution::Connection.new(#{@connection.instance_eval("@config").inspect})))"
53
- def obj.method_missing(method, *args)
54
- @endpoint.send(method, *args)
55
- end
51
+ def obj.endpoint=(e); @endpoint = e; end
52
+ def obj.method_missing(method, *args); @endpoint.send(method, *args); end
53
+ named_endpoint = "#{self.plural_class_name}::#{name.to_s.camelize}".constantize
54
+ obj.endpoint = named_endpoint.new(:parent => self.plural_class.new(:id => self.id, :parent => @connection))
56
55
  obj
57
56
  rescue
58
57
  @table[name]
@@ -1,3 +1,3 @@
1
1
  module TicketEvolution
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.4'
3
3
  end
@@ -9,7 +9,6 @@ require 'digest/md5'
9
9
  require 'openssl'
10
10
  require 'pathname'
11
11
  require 'cgi'
12
- require 'uri'
13
12
 
14
13
  require 'active_support/hash_with_indifferent_access'
15
14
  require 'active_support/version'
@@ -86,7 +86,7 @@
86
86
  accept:
87
87
  - application/vnd.ticketevolution.api+json; version=8
88
88
  x-signature:
89
- - H+dCKKCdYSyl1Qo71s7ZyFaTMQEzl4seWj2YyzXxCho=
89
+ - F/qzyf3TZi71VSZ7GtP9yfgdfB/LFGKIqup6s5GoQ8E=
90
90
  x-token:
91
91
  - 621e8a816a4e31a4dcf9f450e6de150f
92
92
  response: !ruby/struct:VCR::Response
@@ -107,7 +107,7 @@
107
107
  location:
108
108
  - http://developer.ticketevolution.com
109
109
  x-runtime:
110
- - '0.002166'
110
+ - '0.001958'
111
111
  content-length:
112
112
  - '102'
113
113
  server:
@@ -123,7 +123,7 @@
123
123
  accept:
124
124
  - application/vnd.ticketevolution.api+json; version=8
125
125
  x-signature:
126
- - H+dCKKCdYSyl1Qo71s7ZyFaTMQEzl4seWj2YyzXxCho=
126
+ - F/qzyf3TZi71VSZ7GtP9yfgdfB/LFGKIqup6s5GoQ8E=
127
127
  x-token:
128
128
  - 621e8a816a4e31a4dcf9f450e6de150f
129
129
  response: !ruby/struct:VCR::Response
@@ -144,7 +144,7 @@
144
144
  location:
145
145
  - http://developer.ticketevolution.com
146
146
  x-runtime:
147
- - '0.002166'
147
+ - '0.001958'
148
148
  content-length:
149
149
  - '102'
150
150
  server:
@@ -241,3 +241,249 @@
241
241
  body: ! '{"addresses":[],"phone_numbers":[],"email_addresses":[],"name":"Comish
242
242
  Gordon","url":"/clients/2275","id":"2275","updated_at":"2012-01-24T22:49:11Z"}'
243
243
  http_version: '1.1'
244
+ - !ruby/struct:VCR::HTTPInteraction
245
+ request: !ruby/struct:VCR::Request
246
+ method: :get
247
+ uri: https://api.sandbox.ticketevolution.com:443/clients?
248
+ body: !!null
249
+ headers:
250
+ accept:
251
+ - application/vnd.ticketevolution.api+json; version=8
252
+ x-signature:
253
+ - oHMe9KFgCudRW9XqDC2pfrbw4KkBje3M2DftUa8xbGQ=
254
+ x-token:
255
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
256
+ response: !ruby/struct:VCR::Response
257
+ status: !ruby/struct:VCR::ResponseStatus
258
+ code: 200
259
+ message: OK
260
+ headers:
261
+ content-type:
262
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
263
+ transfer-encoding:
264
+ - chunked
265
+ connection:
266
+ - keep-alive
267
+ status:
268
+ - '200'
269
+ x-powered-by:
270
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.11
271
+ etag:
272
+ - ! '"5bb5dd0bc5c9af9a2b7f7a7376a159e8"'
273
+ x-ua-compatible:
274
+ - IE=Edge,chrome=1
275
+ x-runtime:
276
+ - '1.179774'
277
+ cache-control:
278
+ - max-age=0, private, must-revalidate
279
+ strict-transport-security:
280
+ - max-age=31536000
281
+ server:
282
+ - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
283
+ body: ! '{"current_page":1,"per_page":100,"total_entries":27,"clients":[{"email_addresses":[{"label":null,"address":"tyrique@brown.info"}],"phone_numbers":[{"extension":"999","label":null,"country_code":null,"number":"(301)555-1234"}],"url":"/clients/3","updated_at":"2011-08-11T03:12:43Z","name":"Main
284
+ Office","addresses":[{"latitude":null,"postal_code":"68577","longitude":null,"country_code":"AI","name":null,"locality":"West
285
+ Lambertfort","extended_address":null,"region":"MN","street_address":"035 McCullough
286
+ Manor"}],"office":{"url":"/offices/6","brokerage":{"abbreviation":"Ticket Evolution","url":"/brokerages/61","name":"Ticket
287
+ Evolution","id":"61"},"name":"Main Office","id":"6"},"id":"3"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/1535","updated_at":"2011-08-29T17:08:43Z","name":"Main
288
+ Office","addresses":[{"latitude":null,"postal_code":"58008-6072","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"125
289
+ Street"},{"latitude":null,"postal_code":null,"longitude":null,"country_code":null,"name":null,"locality":null,"extended_address":null,"region":null,"street_address":null}],"office":{"url":"/offices/1116","brokerage":{"abbreviation":"Tevo","url":"/brokerages/630","name":"SeatGeek","id":"630"},"name":"Main
290
+ Office","id":"1116"},"id":"1535"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2022","updated_at":"2011-12-21T19:26:18Z","name":"Will
291
+ Smith","addresses":[],"id":"2022"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2094","updated_at":"2011-12-30T21:18:39Z","name":"Ms
292
+ Rogers","addresses":[],"id":"2094"},{"email_addresses":[{"label":"work","address":"moe.szyslak@moestavern.com"},{"label":"home","address":"moeissexxxy69@compuserve.com"}],"phone_numbers":[{"extension":null,"label":"work
293
+ fax","country_code":null,"number":"243-6698"},{"extension":null,"label":"work","country_code":null,"number":"243-6697"}],"url":"/clients/2098","updated_at":"2012-01-06T04:30:46Z","name":"Morris
294
+ “Moe” Szyslak","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
295
+ Evergreen Terrace"}],"id":"2098"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2271","updated_at":"2012-01-24T20:27:04Z","name":"Brad
296
+ Tatum","addresses":[],"id":"2271"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2273","updated_at":"2012-01-24T22:23:43Z","name":"jimmy
297
+ buffet","addresses":[],"id":"2273"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2274","updated_at":"2012-01-24T22:30:24Z","name":"Comish
298
+ Gordon","addresses":[],"id":"2274"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2275","updated_at":"2012-01-24T22:49:11Z","name":"Comish
299
+ Gordon","addresses":[],"id":"2275"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2302","updated_at":"2012-01-27T10:16:50Z","name":"John
300
+ Raj","addresses":[],"id":"2302"},{"email_addresses":[{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"[EMAILLABEL]","address":"[EMAILADDRESS]"}],"phone_numbers":[{"extension":null,"label":"Office","country_code":null,"number":"877-326-7785"},{"extension":null,"label":"Office","country_code":null,"number":"877-326-7785"}],"url":"/clients/2303","updated_at":"2012-01-27T10:45:12Z","name":"John
301
+ Raj","addresses":[],"id":"2303"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2307","updated_at":"2012-01-28T06:32:37Z","name":"john","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
302
+ Evergreen Terrace"}],"id":"2307"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2308","updated_at":"2012-01-28T06:44:34Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
303
+ Evergreen Terrace"}],"office":{"url":"/offices/2","brokerage":{"abbreviation":"Circle
304
+ City","url":"/brokerages/86","name":"Circle City Tickets","id":"86"},"name":"Downtown
305
+ Office","id":"2"},"id":"2308"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"},{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2310","updated_at":"2012-01-28T07:24:57Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
306
+ Evergreen Terrace"}],"office":{"url":"/offices/970","brokerage":{"abbreviation":"Hello","url":"/brokerages/434","name":"Hello
307
+ Tickets","id":"434"},"name":"Main Office","id":"970"},"id":"2310"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2323","updated_at":"2012-01-31T05:11:02Z","name":"JohnRaj","addresses":[],"id":"2323"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2324","updated_at":"2012-01-31T05:38:18Z","name":"JohnRaj","addresses":[],"id":"2324"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2325","updated_at":"2012-01-31T05:42:28Z","name":"David","addresses":[],"id":"2325"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2326","updated_at":"2012-01-31T05:47:02Z","name":"David
308
+ Billy","addresses":[],"id":"2326"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2327","updated_at":"2012-01-31T06:01:19Z","name":"David
309
+ Billy","addresses":[],"id":"2327"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2328","updated_at":"2012-01-31T06:06:34Z","name":"David
310
+ Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
311
+ Evergreen Terrace"}],"id":"2328"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2329","updated_at":"2012-01-31T07:31:32Z","name":"JohnRaj","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
312
+ Evergreen Terrace"}],"id":"2329"},{"email_addresses":[{"label":"Welkins","address":"Welkins@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Welkins","country_code":null,"number":"333-444-4444"}],"url":"/clients/2330","updated_at":"2012-01-31T07:38:31Z","name":"Welkins","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
313
+ Evergreen Terrace"}],"id":"2330"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2332","updated_at":"2012-01-31T08:03:15Z","name":"JohnRaj","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
314
+ Evergreen Terrace"}],"office":{"url":"/offices/1594","brokerage":{"abbreviation":"Ticket
315
+ Logic","url":"/brokerages/1609","name":"Ticket Logic Pty Ltd","id":"1609"},"name":"Ticket
316
+ Logic","id":"1594"},"id":"2332"},{"email_addresses":[{"label":"Welkins","address":"Welkins@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Welkins","country_code":null,"number":"333-444-4444"}],"url":"/clients/2333","updated_at":"2012-01-31T08:08:57Z","name":"Welkins","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
317
+ Evergreen Terrace"}],"office":{"url":"/offices/1593","brokerage":{"abbreviation":"Dare
318
+ Ticket","url":"/brokerages/1608","name":"Dare Ticket","id":"1608"},"name":"Main
319
+ Office","id":"1593"},"id":"2333"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2355","updated_at":"2012-02-08T05:13:58Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
320
+ Evergreen Terrace"}],"id":"2355"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2356","updated_at":"2012-02-08T05:30:28Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
321
+ Evergreen Terrace"}],"id":"2356"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2359","updated_at":"2012-02-10T06:02:34Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
322
+ Evergreen Terrace"}],"office":{"url":"/offices/1583","brokerage":{"abbreviation":"Fanprice","url":"/brokerages/1600","name":"Fanprice,
323
+ Inc.","id":"1600"},"name":"Main Office","id":"1583"},"id":"2359"}]}'
324
+ http_version: '1.1'
325
+ - !ruby/struct:VCR::HTTPInteraction
326
+ request: !ruby/struct:VCR::Request
327
+ method: :get
328
+ uri: https://api.sandbox.ticketevolution.com:443/clients?
329
+ body: !!null
330
+ headers:
331
+ accept:
332
+ - application/vnd.ticketevolution.api+json; version=8
333
+ x-signature:
334
+ - oHMe9KFgCudRW9XqDC2pfrbw4KkBje3M2DftUa8xbGQ=
335
+ x-token:
336
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
337
+ response: !ruby/struct:VCR::Response
338
+ status: !ruby/struct:VCR::ResponseStatus
339
+ code: 200
340
+ message: OK
341
+ headers:
342
+ content-type:
343
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
344
+ transfer-encoding:
345
+ - chunked
346
+ connection:
347
+ - keep-alive
348
+ status:
349
+ - '200'
350
+ x-powered-by:
351
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.11
352
+ etag:
353
+ - ! '"5bb5dd0bc5c9af9a2b7f7a7376a159e8"'
354
+ x-ua-compatible:
355
+ - IE=Edge,chrome=1
356
+ x-runtime:
357
+ - '1.179774'
358
+ cache-control:
359
+ - max-age=0, private, must-revalidate
360
+ strict-transport-security:
361
+ - max-age=31536000
362
+ server:
363
+ - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
364
+ body: ! '{"current_page":1,"per_page":100,"total_entries":27,"clients":[{"email_addresses":[{"label":null,"address":"tyrique@brown.info"}],"phone_numbers":[{"extension":"999","label":null,"country_code":null,"number":"(301)555-1234"}],"url":"/clients/3","updated_at":"2011-08-11T03:12:43Z","name":"Main
365
+ Office","addresses":[{"latitude":null,"postal_code":"68577","longitude":null,"country_code":"AI","name":null,"locality":"West
366
+ Lambertfort","extended_address":null,"region":"MN","street_address":"035 McCullough
367
+ Manor"}],"office":{"url":"/offices/6","brokerage":{"abbreviation":"Ticket Evolution","url":"/brokerages/61","name":"Ticket
368
+ Evolution","id":"61"},"name":"Main Office","id":"6"},"id":"3"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/1535","updated_at":"2011-08-29T17:08:43Z","name":"Main
369
+ Office","addresses":[{"latitude":null,"postal_code":"58008-6072","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"125
370
+ Street"},{"latitude":null,"postal_code":null,"longitude":null,"country_code":null,"name":null,"locality":null,"extended_address":null,"region":null,"street_address":null}],"office":{"url":"/offices/1116","brokerage":{"abbreviation":"Tevo","url":"/brokerages/630","name":"SeatGeek","id":"630"},"name":"Main
371
+ Office","id":"1116"},"id":"1535"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2022","updated_at":"2011-12-21T19:26:18Z","name":"Will
372
+ Smith","addresses":[],"id":"2022"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2094","updated_at":"2011-12-30T21:18:39Z","name":"Ms
373
+ Rogers","addresses":[],"id":"2094"},{"email_addresses":[{"label":"work","address":"moe.szyslak@moestavern.com"},{"label":"home","address":"moeissexxxy69@compuserve.com"}],"phone_numbers":[{"extension":null,"label":"work
374
+ fax","country_code":null,"number":"243-6698"},{"extension":null,"label":"work","country_code":null,"number":"243-6697"}],"url":"/clients/2098","updated_at":"2012-01-06T04:30:46Z","name":"Morris
375
+ “Moe” Szyslak","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
376
+ Evergreen Terrace"}],"id":"2098"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2271","updated_at":"2012-01-24T20:27:04Z","name":"Brad
377
+ Tatum","addresses":[],"id":"2271"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2273","updated_at":"2012-01-24T22:23:43Z","name":"jimmy
378
+ buffet","addresses":[],"id":"2273"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2274","updated_at":"2012-01-24T22:30:24Z","name":"Comish
379
+ Gordon","addresses":[],"id":"2274"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2275","updated_at":"2012-01-24T22:49:11Z","name":"Comish
380
+ Gordon","addresses":[],"id":"2275"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2302","updated_at":"2012-01-27T10:16:50Z","name":"John
381
+ Raj","addresses":[],"id":"2302"},{"email_addresses":[{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"john","address":"john@riverstonetech.com"},{"label":"[EMAILLABEL]","address":"[EMAILADDRESS]"}],"phone_numbers":[{"extension":null,"label":"Office","country_code":null,"number":"877-326-7785"},{"extension":null,"label":"Office","country_code":null,"number":"877-326-7785"}],"url":"/clients/2303","updated_at":"2012-01-27T10:45:12Z","name":"John
382
+ Raj","addresses":[],"id":"2303"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2307","updated_at":"2012-01-28T06:32:37Z","name":"john","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
383
+ Evergreen Terrace"}],"id":"2307"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2308","updated_at":"2012-01-28T06:44:34Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
384
+ Evergreen Terrace"}],"office":{"url":"/offices/2","brokerage":{"abbreviation":"Circle
385
+ City","url":"/brokerages/86","name":"Circle City Tickets","id":"86"},"name":"Downtown
386
+ Office","id":"2"},"id":"2308"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"},{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2310","updated_at":"2012-01-28T07:24:57Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
387
+ Evergreen Terrace"}],"office":{"url":"/offices/970","brokerage":{"abbreviation":"Hello","url":"/brokerages/434","name":"Hello
388
+ Tickets","id":"434"},"name":"Main Office","id":"970"},"id":"2310"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2323","updated_at":"2012-01-31T05:11:02Z","name":"JohnRaj","addresses":[],"id":"2323"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2324","updated_at":"2012-01-31T05:38:18Z","name":"JohnRaj","addresses":[],"id":"2324"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2325","updated_at":"2012-01-31T05:42:28Z","name":"David","addresses":[],"id":"2325"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2326","updated_at":"2012-01-31T05:47:02Z","name":"David
389
+ Billy","addresses":[],"id":"2326"},{"email_addresses":[],"phone_numbers":[],"url":"/clients/2327","updated_at":"2012-01-31T06:01:19Z","name":"David
390
+ Billy","addresses":[],"id":"2327"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2328","updated_at":"2012-01-31T06:06:34Z","name":"David
391
+ Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
392
+ Evergreen Terrace"}],"id":"2328"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2329","updated_at":"2012-01-31T07:31:32Z","name":"JohnRaj","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
393
+ Evergreen Terrace"}],"id":"2329"},{"email_addresses":[{"label":"Welkins","address":"Welkins@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Welkins","country_code":null,"number":"333-444-4444"}],"url":"/clients/2330","updated_at":"2012-01-31T07:38:31Z","name":"Welkins","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
394
+ Evergreen Terrace"}],"id":"2330"},{"email_addresses":[{"label":"John","address":"john@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"John","country_code":null,"number":"333-444-4444"}],"url":"/clients/2332","updated_at":"2012-01-31T08:03:15Z","name":"JohnRaj","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
395
+ Evergreen Terrace"}],"office":{"url":"/offices/1594","brokerage":{"abbreviation":"Ticket
396
+ Logic","url":"/brokerages/1609","name":"Ticket Logic Pty Ltd","id":"1609"},"name":"Ticket
397
+ Logic","id":"1594"},"id":"2332"},{"email_addresses":[{"label":"Welkins","address":"Welkins@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Welkins","country_code":null,"number":"333-444-4444"}],"url":"/clients/2333","updated_at":"2012-01-31T08:08:57Z","name":"Welkins","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":null,"locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
398
+ Evergreen Terrace"}],"office":{"url":"/offices/1593","brokerage":{"abbreviation":"Dare
399
+ Ticket","url":"/brokerages/1608","name":"Dare Ticket","id":"1608"},"name":"Main
400
+ Office","id":"1593"},"id":"2333"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2355","updated_at":"2012-02-08T05:13:58Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
401
+ Evergreen Terrace"}],"id":"2355"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2356","updated_at":"2012-02-08T05:30:28Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
402
+ Evergreen Terrace"}],"id":"2356"},{"email_addresses":[{"label":"Billy","address":"billy@riverstonetech.com"}],"phone_numbers":[{"extension":null,"label":"Billy","country_code":null,"number":"877-326-7785"}],"url":"/clients/2359","updated_at":"2012-02-10T06:02:34Z","name":"Billy","addresses":[{"latitude":null,"postal_code":"58008-0000","longitude":null,"country_code":"US","name":"Billy","locality":"Springfield","extended_address":null,"region":"MG","street_address":"555
403
+ Evergreen Terrace"}],"office":{"url":"/offices/1583","brokerage":{"abbreviation":"Fanprice","url":"/brokerages/1600","name":"Fanprice,
404
+ Inc.","id":"1600"},"name":"Main Office","id":"1583"},"id":"2359"}]}'
405
+ http_version: '1.1'
406
+ - !ruby/struct:VCR::HTTPInteraction
407
+ request: !ruby/struct:VCR::Request
408
+ method: :get
409
+ uri: https://api.sandbox.ticketevolution.com:443/clients/2359/addresses?
410
+ body: !!null
411
+ headers:
412
+ accept:
413
+ - application/vnd.ticketevolution.api+json; version=8
414
+ x-signature:
415
+ - fiDv7wgSxdmv2nG4hjzRD6V8Ti+7J8P8aijHlZk3ldE=
416
+ x-token:
417
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
418
+ response: !ruby/struct:VCR::Response
419
+ status: !ruby/struct:VCR::ResponseStatus
420
+ code: 200
421
+ message: OK
422
+ headers:
423
+ content-type:
424
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
425
+ transfer-encoding:
426
+ - chunked
427
+ connection:
428
+ - keep-alive
429
+ status:
430
+ - '200'
431
+ x-powered-by:
432
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.11
433
+ etag:
434
+ - ! '"d1c91f9e7aca9e307c07699f6beee9d9"'
435
+ x-ua-compatible:
436
+ - IE=Edge,chrome=1
437
+ x-runtime:
438
+ - '0.161420'
439
+ cache-control:
440
+ - max-age=0, private, must-revalidate
441
+ strict-transport-security:
442
+ - max-age=31536000
443
+ server:
444
+ - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
445
+ body: ! '{"addresses":[{"latitude":null,"postal_code":"58008-0000","label":"Billy","longitude":null,"country_code":"US","url":"/clients/2359/addresses/48597","updated_at":"2012-02-10T06:25:53Z","name":"Billy","locality":"Springfield","extended_address":null,"id":"48597","region":"MG","street_address":"555
446
+ Evergreen Terrace"}],"current_page":1,"per_page":100,"total_entries":1}'
447
+ http_version: '1.1'
448
+ - !ruby/struct:VCR::HTTPInteraction
449
+ request: !ruby/struct:VCR::Request
450
+ method: :get
451
+ uri: https://api.sandbox.ticketevolution.com:443/clients/2359/addresses?
452
+ body: !!null
453
+ headers:
454
+ accept:
455
+ - application/vnd.ticketevolution.api+json; version=8
456
+ x-signature:
457
+ - fiDv7wgSxdmv2nG4hjzRD6V8Ti+7J8P8aijHlZk3ldE=
458
+ x-token:
459
+ - b2b5a7a33b1a78896ed1b53d81c5c9cc
460
+ response: !ruby/struct:VCR::Response
461
+ status: !ruby/struct:VCR::ResponseStatus
462
+ code: 200
463
+ message: OK
464
+ headers:
465
+ content-type:
466
+ - application/vnd.ticketevolution.api+json; version=8; charset=utf-8
467
+ transfer-encoding:
468
+ - chunked
469
+ connection:
470
+ - keep-alive
471
+ status:
472
+ - '200'
473
+ x-powered-by:
474
+ - Phusion Passenger (mod_rails/mod_rack) 3.0.11
475
+ etag:
476
+ - ! '"d1c91f9e7aca9e307c07699f6beee9d9"'
477
+ x-ua-compatible:
478
+ - IE=Edge,chrome=1
479
+ x-runtime:
480
+ - '0.161420'
481
+ cache-control:
482
+ - max-age=0, private, must-revalidate
483
+ strict-transport-security:
484
+ - max-age=31536000
485
+ server:
486
+ - nginx/1.0.11 + Phusion Passenger 3.0.11 (mod_rails/mod_rack)
487
+ body: ! '{"addresses":[{"latitude":null,"postal_code":"58008-0000","label":"Billy","longitude":null,"country_code":"US","url":"/clients/2359/addresses/48597","updated_at":"2012-02-10T06:25:53Z","name":"Billy","locality":"Springfield","extended_address":null,"id":"48597","region":"MG","street_address":"555
488
+ Evergreen Terrace"}],"current_page":1,"per_page":100,"total_entries":1}'
489
+ http_version: '1.1'
@@ -1,7 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe TicketEvolution::Client do
4
+ let(:klass) { TicketEvolution::Client }
4
5
  subject { TicketEvolution::Client }
5
6
 
7
+ describe "when calling a nested endpoint method" do
8
+ use_vcr_cassette "endpoints/clients", :record => :new_episodes
9
+
10
+ let(:client) { TicketEvolution::Clients.new(:parent => connection).list.last }
11
+
12
+ it "should pass the request to the appropriate endpoint and get back an appropriate response" do
13
+ collection = client.addresses.list
14
+ collection.should be_a TicketEvolution::Collection
15
+ collection.total_entries.should == collection.size
16
+ collection.first.should be_a TicketEvolution::Address
17
+ end
18
+ end
19
+
6
20
  it_behaves_like "a ticket_evolution model"
7
21
  end
@@ -156,8 +156,28 @@ describe TicketEvolution::Connection do
156
156
  end
157
157
  end
158
158
 
159
+ describe "#uri" do
160
+ let(:path) { '/test' }
161
+
162
+ context "api version 8" do
163
+ subject { klass.new(valid_options) }
164
+
165
+ it "should not include the version" do
166
+ subject.uri(path).should == "#{subject.url}#{path}"
167
+ end
168
+ end
169
+
170
+ context "api version 9 or above" do
171
+ subject { klass.new(valid_options.merge({:version => 9})) }
172
+
173
+ it "should include the version" do
174
+ subject.uri(path).should == "#{subject.url}/V9#{path}"
175
+ end
176
+ end
177
+ end
178
+
159
179
  describe "#sign" do
160
- let(:path) { "/test" }
180
+ let(:path) { "#{connection.url}/test" }
161
181
 
162
182
  describe "with a port in the url_base" do
163
183
  let(:connection) { klass.new(valid_options.merge({:secret => "/3uZ9bXNe/6rxEBmlGLvoRXrcSzRDMfyJSewhlrc"})) }
@@ -228,13 +248,7 @@ describe TicketEvolution::Connection do
228
248
  end
229
249
 
230
250
  describe "#build_request" do
231
- let(:headers) do
232
- {
233
- "Accept" => "application/vnd.ticketevolution.api+json; version=#{valid_options[:version]}",
234
- "X-Signature" => "8eaaqg6d4DJ2SEWkCvkdhc05dITmpNbUrcbN75UBGMA=",
235
- "X-Token" => valid_options[:token]
236
- }
237
- end
251
+ let(:req_options) { valid_options.merge(:secret => "/3uZ9bXNe/6rxEBmlGLvoRXrcSzRDMfyJSewhlrc") }
238
252
  let(:params) do
239
253
  {
240
254
  :one => 1,
@@ -244,10 +258,34 @@ describe TicketEvolution::Connection do
244
258
  end
245
259
  let(:url) { "https://api.sandbox.ticketevolution.com/test?one=1&three=three&two=two" }
246
260
 
247
- subject { klass.new(valid_options.merge(:secret => "/3uZ9bXNe/6rxEBmlGLvoRXrcSzRDMfyJSewhlrc")).build_request(:GET, '/test', params) }
261
+ subject { klass.new(valid_options).build_request(:GET, '/test', params) }
248
262
 
249
263
  it { should be_a Curl::Easy }
250
- its(:headers) { should == headers }
251
264
  its(:url) { should == url }
265
+
266
+ context "api version 8" do
267
+ let(:headers) do
268
+ {
269
+ "Accept" => "application/vnd.ticketevolution.api+json; version=#{valid_options[:version]}",
270
+ "X-Signature" => "8eaaqg6d4DJ2SEWkCvkdhc05dITmpNbUrcbN75UBGMA=",
271
+ "X-Token" => valid_options[:token]
272
+ }
273
+ end
274
+ subject { klass.new(req_options).build_request(:GET, '/test', params) }
275
+
276
+ its(:headers) { should == headers }
277
+ end
278
+
279
+ context "api version 9 or above" do
280
+ let(:headers) do
281
+ {
282
+ "X-Signature" => "qBpzNPLG7h3+kj5EA0MDWarNG8ATeLx3OHqlKEf2YF0=",
283
+ "X-Token" => valid_options[:token]
284
+ }
285
+ end
286
+ subject { klass.new(req_options.merge(:version => 9)).build_request(:GET, '/test', params) }
287
+
288
+ its(:headers) { should == headers }
289
+ end
252
290
  end
253
291
  end
@@ -224,6 +224,13 @@ shared_examples_for "a ticket_evolution endpoint class" do
224
224
  its(:server_message) { should == value.last }
225
225
  end
226
226
  end
227
+
228
+ context "with a missing response code" do
229
+ let(:response_code) { 900 }
230
+
231
+ its(:response_code) { should == 900 }
232
+ its(:server_message) { should == "Unknown Error" }
233
+ end
227
234
  end
228
235
  end
229
236
 
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.6.2
4
+ version: 0.6.4
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-15 00:00:00.000000000Z
12
+ date: 2012-02-17 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &70317163216240 !ruby/object:Gem::Requirement
16
+ requirement: &70256748458480 !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: *70317163216240
24
+ version_requirements: *70256748458480
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: curb
27
- requirement: &70317163215300 !ruby/object:Gem::Requirement
27
+ requirement: &70256748457480 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 0.7.8
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70317163215300
35
+ version_requirements: *70256748457480
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: yajl-ruby
38
- requirement: &70317163214100 !ruby/object:Gem::Requirement
38
+ requirement: &70256748456140 !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: *70317163214100
46
+ version_requirements: *70256748456140
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: multi_json
49
- requirement: &70317163212620 !ruby/object:Gem::Requirement
49
+ requirement: &70256748454820 !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: *70317163212620
57
+ version_requirements: *70256748454820
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &70317163211940 !ruby/object:Gem::Requirement
60
+ requirement: &70256748454100 !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: *70317163211940
68
+ version_requirements: *70256748454100
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
- requirement: &70317163211220 !ruby/object:Gem::Requirement
71
+ requirement: &70256748453420 !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: *70317163211220
79
+ version_requirements: *70256748453420
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: vcr
82
- requirement: &70317163210460 !ruby/object:Gem::Requirement
82
+ requirement: &70256748452700 !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: *70317163210460
90
+ version_requirements: *70256748452700
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: webmock
93
- requirement: &70317163209240 !ruby/object:Gem::Requirement
93
+ requirement: &70256748451480 !ruby/object:Gem::Requirement
94
94
  none: false
95
95
  requirements:
96
96
  - - ! '>='
@@ -98,10 +98,10 @@ dependencies:
98
98
  version: '0'
99
99
  type: :development
100
100
  prerelease: false
101
- version_requirements: *70317163209240
101
+ version_requirements: *70256748451480
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: awesome_print
104
- requirement: &70317163208740 !ruby/object:Gem::Requirement
104
+ requirement: &70256748450920 !ruby/object:Gem::Requirement
105
105
  none: false
106
106
  requirements:
107
107
  - - ! '>='
@@ -109,10 +109,10 @@ dependencies:
109
109
  version: '0'
110
110
  type: :development
111
111
  prerelease: false
112
- version_requirements: *70317163208740
112
+ version_requirements: *70256748450920
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: rake
115
- requirement: &70317163208140 !ruby/object:Gem::Requirement
115
+ requirement: &70256748450320 !ruby/object:Gem::Requirement
116
116
  none: false
117
117
  requirements:
118
118
  - - ! '>='
@@ -120,7 +120,7 @@ dependencies:
120
120
  version: '0'
121
121
  type: :development
122
122
  prerelease: false
123
- version_requirements: *70317163208140
123
+ version_requirements: *70256748450320
124
124
  description: Provides Ruby wrappers for the Ticket Evolution API (http://developer.ticketevolution.com).
125
125
  Ticket Evolution is the industry leader in software for the Ticket Broker industry.
126
126
  email:
@@ -295,7 +295,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
295
295
  version: '0'
296
296
  segments:
297
297
  - 0
298
- hash: 4300888350963027535
298
+ hash: -3594449940152660308
299
299
  required_rubygems_version: !ruby/object:Gem::Requirement
300
300
  none: false
301
301
  requirements: