vivid_seat_api 0.0.3 → 0.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: fd9abd1bca8d2487dac2ec0b955438adbbe88429
4
- data.tar.gz: e0ccff3199a01ae9627b21acb980528761c90d80
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: a6f1ea4f20b8a5ea7530319538ccf9387c13eac8
4
+ data.tar.gz: b4c84cc207ca8e8781fda59fb5366ef501ca34fe
5
5
  SHA512:
6
- metadata.gz: ffece3849249adc22ced856ccd11fd3f597d4d3c2cb647766d7f5711cd584d44262a452c7fb35a198e9ef51314b8cc9f54994efda85aa76f75476d7509509243
7
- data.tar.gz: 9d556d2c3730d8a601290a54a492352f655201cac45b62ea8888a9a581ca5ef6777b4d22fcdaa4c32b0b33365fc70c49407872ba02b36df87465159fb8d8d919
6
+ metadata.gz: b6396c3f19a28d3aab33b06a6e9f41cc7cbbf581b108edafd8d263652126a239f4677e65be76387d42219e844d6e48fea7164675872140c56d7d54a3ac694caf
7
+ data.tar.gz: 7515d29f1852ccf1ac6e14c4caa7a4795ebd02a404ed76843273f1e73d603d7bbb3fa94c8484f18815f271ef02f5bcd146b9486bca271f6c559ca33d4257f599
data/README.md CHANGED
@@ -20,9 +20,9 @@ Or install it yourself as:
20
20
 
21
21
  client = VividSeatApi::Client.new("your-api-key")
22
22
 
23
- client.list(options)
23
+ client.get_listings(options)
24
24
 
25
- client.create(options)
25
+ client.insert_listing(options)
26
26
 
27
27
  client.update(options)
28
28
 
data/Rakefile CHANGED
@@ -1,2 +1,63 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ require 'faker'
4
+ require_relative "lib/vivid_seat_api"
5
+
6
+ task default: 'test'
7
+
8
+ Rake::TestTask.new do |t|
9
+ t.pattern = "test/*_spec.rb"
10
+ t.verbose = true
11
+ end
12
+
13
+ desc "Launch a console with the gem binding"
14
+ task :console do
15
+ exec 'irb -r vivid_seat_api -I ./lib'
16
+ end
17
+
18
+ namespace :seed do
19
+ SANDBOX_TOKEN = 'e4845f92-2610-4ca7-ae13-66015e27ec53'
20
+ DISCLAIMER_FOR_TEST = "Hashdog listing for test porpouses"
21
+
22
+ desc "Push an Inventory on sanbox"
23
+ task :new do
24
+ puts "Seeding for a new listing ..."
25
+ options = {
26
+ ticketId: rand(800000000..1100000000), # [String](Required) Your unique id associated with the listing.
27
+ eventName: "Hashdog - #{Faker::Name.name}", # [String](Required) The event Name.
28
+ venueName: Faker::Name.name, # [String](Required) The venue the event is taking place.
29
+ eventDateTime: Faker::Time.forward(30).strftime("%Y-%m-%d %T"), # [String](Required) The event date and time in yyyy-MM-dd HH:mm:ss format.
30
+ quantity: Faker::Number.digit, # [Integer](Required) The quantity of tickets available.
31
+ section: Faker::Commerce.department(1), # [String] (Required) The section of the listing.
32
+ row: Faker::Number.digit, # [String] (Required) The row of the listing.
33
+ price: Faker::Commerce.price.round(2), # [Double] (Required) The unit price of the listing.
34
+ seatFrom: nil, # [String] (Optional) The starting seat of the listing.
35
+ seatThru: nil, # [String] (Optional) The ending seat of the listing.
36
+ notes: DISCLAIMER_FOR_TEST, # [String] (Optional) Notes associated with the listing, displayed to buyres.
37
+ electronic: nil, # [Boolean] (Optional) Boolean indicating whether the tickets can be delivered electronically.
38
+ inHandDate: nil, # [String] (Optional) Date the listing can ship in yyyy-MM-dd format.
39
+ splitType: nil, # [TicketSplitType] (Optional) One of DEFAULT, ANY, or CUSTOM. Indicates how the listing can be split.
40
+ splitValue: nil # Comma-delimted split values if CUSTOM splitType is selected.
41
+ }
42
+
43
+ puts "Create a new listing for #{options[:eventName]} (#{options[:ticketId]} )"
44
+ client = VividSeatApi::Listing.new(SANDBOX_TOKEN, sandboxed: true)
45
+ doc = client.create(options.delete_if {|_,v|v.nil?})
46
+ puts doc.at_xpath("/response/message").content
47
+ end
48
+
49
+ desc "List sandbox listing"
50
+ task :list do
51
+ client = VividSeatApi::Listing.new(SANDBOX_TOKEN, sandboxed: true)
52
+ puts client.list
53
+ end
54
+
55
+ desc "Show a sandbox listing"
56
+ task :show do
57
+ fail("You must provide LISTING_ID env variable") unless ENV["LISTING_ID"]
58
+ client = VividSeatApi::Listing.new(SANDBOX_TOKEN, sandboxed: true)
59
+ puts client.list(ticketId: ENV["LISTING_ID"])
60
+ end
61
+
62
+ end
2
63
 
@@ -6,13 +6,7 @@ require 'nokogiri'
6
6
  require_relative "vivid_seat_api/version"
7
7
  require_relative "vivid_seat_api/response"
8
8
  require_relative "vivid_seat_api/base"
9
- require_relative "vivid_seat_api/resource"
10
- require_relative "vivid_seat_api/client"
9
+ require_relative "vivid_seat_api/listing"
10
+ require_relative "vivid_seat_api/fulfillment"
11
11
 
12
12
  module VividSeatApi;end
13
-
14
- client = VividSeatApi::Client.new("b6a56d39-abc2-4d9c-aa22-06e5632c2ef8")
15
-
16
-
17
- puts client.create()
18
-
@@ -1,7 +1,39 @@
1
+ require 'ostruct'
2
+
1
3
  module VividSeatApi
4
+
5
+ CSV_FILENAME = "inventories.csv"
6
+
7
+ class BaseUrlMissing < NotImplementedError; end
8
+
9
+ class << self
10
+ attr_accessor :configuration
11
+ end
12
+
13
+ def self.configure
14
+ self.configuration ||= Configuration.new
15
+ yield(configuration)
16
+ end
17
+
18
+ def self.configure_required!
19
+ raise ArgumentError, "You must configure VividSeatApi" if VividSeatApi.configuration.instance_variables.size < 4
20
+ end
21
+
22
+ class Configuration
23
+ attr_accessor :ftp_host
24
+ attr_accessor :ftp_user
25
+ attr_accessor :ftp_pass
26
+ attr_accessor :api_token
27
+ end
28
+
2
29
  class Base
30
+
31
+ def initialize(options={})
32
+ @sandboxed = options.fetch(:sandboxed, false)
33
+ end
34
+
3
35
  def base_url
4
- "https://brokers.vividseats.com/webservices/listings/v1/"
36
+ raise BaseUrlMissing, "#{self}.fetch not implemented" #"https://brokers.vividseats.com/webservices/listings/v1/"
5
37
  end
6
38
 
7
39
  def make_request_url url, options
@@ -9,12 +41,11 @@ module VividSeatApi
9
41
  end
10
42
 
11
43
  def builder_options options
12
- options.merge!(apiToken: @token)
44
+ options.merge!(apiToken: VividSeatApi.configuration.api_token)
13
45
  to_query(options)
14
46
  end
15
47
 
16
48
  def get_query_api url, options
17
- puts make_request_url(url, options)
18
49
  session.get(make_request_url(url, options)).body
19
50
  end
20
51
 
@@ -34,5 +65,16 @@ module VividSeatApi
34
65
  end
35
66
  end
36
67
 
68
+ protected
69
+
70
+ def sandboxed?
71
+ !!@sandboxed
72
+ end
73
+
74
+ def transform!(doc, &block)
75
+ result = ::OpenStruct.new
76
+ result.instance_exec doc, &block
77
+ result
78
+ end
37
79
  end
38
80
  end
@@ -0,0 +1,102 @@
1
+ module VividSeatApi
2
+ class Fulfillment < Base
3
+ def base_url
4
+ if sandboxed?
5
+ "http://brokers-test.vividseats.com/webservices/v1/"
6
+ else
7
+ "https://brokers.vividseats.com/webservices/v1/"
8
+ end
9
+ end
10
+
11
+ def get_orders(options = {})
12
+ transform!(get_query_api("getOrders", options)) do |doc|
13
+ fields = %w(orderId orderToken brokerTicketId section row notes quantity cost event venue eventDate electronicDelivery mercuryOrderId purchaseOrderId)
14
+ self.orders = []
15
+ xml.xpath("//orders").each do |xml|
16
+ order = OpenStruct.new
17
+ fields.each do |attr|
18
+ order.send("#{attr}=", xml.at_xpath(attr).content)
19
+ end
20
+ self.orders.push(listing)
21
+ end
22
+ end
23
+ end
24
+
25
+ def get_completed_orders(options = {})
26
+ transform!(get_query_api("getCompletedOrders", options)) do |doc|
27
+ fields = %w(orderId orderToken brokerTicketId section row notes quantity cost event venue eventDate electronicDelivery mercuryOrderId purchaseOrderId)
28
+ self.orders = []
29
+ xml.xpath("//orders").each do |xml|
30
+ order = OpenStruct.new
31
+ fields.each do |attr|
32
+ order.send("#{attr}=", xml.at_xpath(attr).content)
33
+ end
34
+ self.orders.push(listing)
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ def get_order(options = {})
41
+ transform!(get_query_api("getOrder", options)) do |xml|
42
+ fields = %w(orderId orderToken brokerTicketId section row notes quantity cost event venue eventDate electronicDelivery purchaseOrderId)
43
+ fields.each do |attr|
44
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
45
+ end
46
+ end
47
+ end
48
+
49
+ def confirm_order(options = {})
50
+ transform!(post_query_api("confirmOrder", options)) do |xml|
51
+ fields = %w(success message trackingNumber purchaseOrderId)
52
+ fields.each do |attr|
53
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
54
+ end
55
+ end
56
+ end
57
+
58
+ def ship_order(options = {})
59
+ transform!(post_query_api("shipOrder", options)) do |xml|
60
+ fields = %w(success message trackingNumber airbillBase64String)
61
+ fields.each do |attr|
62
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
63
+ end
64
+ end
65
+ end
66
+
67
+ def reject_order(options = {})
68
+ transform!(post_query_api("rejectOrder", options)) do |xml|
69
+ fields = %w(success message)
70
+ fields.each do |attr|
71
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
72
+ end
73
+ end
74
+ end
75
+
76
+ def get_airbill(options = {})
77
+ transform!(get_query_api("getAirbill", options)) do |xml|
78
+ fields = %w(success message trackingNumber airbillBase64String)
79
+ fields.each do |attr|
80
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
81
+ end
82
+ end
83
+ end
84
+
85
+ def download_airbill(options = {})
86
+ get_query_api("downloadAirbill", options)
87
+ end
88
+
89
+ def get_purchase_order(options = {})
90
+ transform!(get_query_api("getPurchaseOrder", options)) do |xml|
91
+ fields = %w(success message purchaseOrderId poBase64String)
92
+ fields.each do |attr|
93
+ self.send("#{attr}=", xml.at_xpath("//#{attr}").content)
94
+ end
95
+ end
96
+ end
97
+
98
+ def download_purchase_order(options = {})
99
+ get_query_api("downloadPurchaseOrder", options)
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,45 @@
1
+ require_relative "upload_filter"
2
+ require "net/ftp"
3
+ require "tempfile"
4
+
5
+ module VividSeatApi
6
+ class PublishError < ArgumentError
7
+ attr_reader :errors
8
+
9
+ def initialize(erros)
10
+ @errors = errors
11
+ end
12
+ end
13
+
14
+ module Listing
15
+ extend self
16
+
17
+ def publish(records)
18
+ VividSeatApi.configure_required!
19
+ record_with_errors = records.detect{|record| !UploadFilter.new(attrs).valid?}
20
+ if record_with_errors
21
+ uploader = UploadFilter.new(record_with_errors)
22
+ raise PublishError.new(uploader.errors), "Invalid params" unless uploader.valid?
23
+ end
24
+
25
+ begin
26
+ file = Tempfile.new("TicketMonsterApi")
27
+ file.write("#{UploadFilter::FIELDS.join(",")}\n")
28
+ records.each do |record|
29
+ ordered_values = UploadFilter::FIELDS.map do |field|
30
+ record[field]
31
+ end
32
+ file.write("#{ordered_values.join(",")}\n")
33
+ end
34
+ file.flush
35
+ Net::FTP.open(VividSeatApi.configuration.ftp_host) do |ftp|
36
+ ftp.passive = true
37
+ ftp.login(VividSeatApi.configuration.ftp_user, VividSeatApi.configuration.ftp_pass)
38
+ ftp.putbinaryfile(file.path, "#{VividSeatApi::CSV_FILENAME}")
39
+ end
40
+ ensure
41
+ file.close!
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,26 @@
1
+ require 'scrivener'
2
+
3
+ module VividSeatApi
4
+ class UploadFilter < Scrivener
5
+ FIELDS = [
6
+ :Event,
7
+ :Venue,
8
+ :EventDate,
9
+ :EventTime,
10
+ :Quantity,
11
+ :Section,
12
+ :Row,
13
+ :SeatFrom,
14
+ :SeatThru,
15
+ :Notes,
16
+ :Cost,
17
+ :TicketID,
18
+ :Edelivery_ind,
19
+ :InHandDate
20
+ ].freeze
21
+
22
+ FIELDS.each do |attribute|
23
+ attr_accessor attribute
24
+ end
25
+ end
26
+ end
@@ -1,3 +1,3 @@
1
1
  module VividSeatApi
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -0,0 +1,80 @@
1
+ require_relative 'helper'
2
+ require 'time'
3
+
4
+ describe "Fulfillment" do
5
+ let(:fake_token){"31f502d-801c-4bd6-ac53-a8e0f68bdede"}
6
+
7
+ let(:default_headers) do
8
+ {"Content-Type" => "application/xml; charset=UTF-8"}
9
+ end
10
+
11
+ let(:http_success_code){200}
12
+
13
+ let(:get_orders_response) do
14
+ <<-EOF
15
+ <orders>
16
+ <order>
17
+ <brokerTicketId>4762069</brokerTicketId>
18
+ <cost>127.85</cost>
19
+ <event>Chicago Blackhawks vs. Anaheim Ducks</event>
20
+ <orderId>296275</orderId>
21
+ <orderToken>aecc0c52-f5a1-4684-ade2-063b6c9e91f5</orderToken>
22
+ <quantity>2</quantity>
23
+ <row>5</row>
24
+ <section>301</section>
25
+ <status>UNCONFIRMED</status>
26
+ <venue>United Center - Chicago, IL</venue>
27
+ </order>
28
+ <order>
29
+ <brokerTicketId>4359430</brokerTicketId>
30
+ <cost>231.95</cost>
31
+ <event>Philadelphia 76ers at Miami Heat</event>
32
+ <orderId>296304</orderId>
33
+ <orderToken>73439cd8-73ea-48f4-aae4-030d209b85d2</orderToken>
34
+ <quantity>1</quantity>
35
+ <row>5</row>
36
+ <section>121</section>
37
+ <status>UNCONFIRMED</status>
38
+ <venue>American Airlines Arena - FL - Miami, FL</venue>
39
+ </order>
40
+ </orders>
41
+ EOF
42
+ end
43
+
44
+ let(:success_response) do
45
+ <<-EOF
46
+ <response>
47
+ <success>true</success>
48
+ <message>Success.</message>
49
+ </response>
50
+ EOF
51
+ end
52
+
53
+ let(:http_connection) {
54
+ Faraday.new do |builder|
55
+ builder.use Faraday::Response::VividSeat
56
+ builder.adapter :test, http_stubs
57
+ end
58
+ }
59
+
60
+ let(:http_stubs) { Faraday::Adapter::Test::Stubs.new }
61
+
62
+ let(:client) do
63
+ fetcher = VividSeatApi::Fulfillment.new(fake_token, sandboxed: true)
64
+ fetcher.instance_variable_set(:@connection, http_connection)
65
+ fetcher
66
+ end
67
+
68
+ let(:verify_stubbings){true}
69
+
70
+ it "Get orders" do
71
+ http_stubs.get("/getOrders?apiToken=#{fake_token}") {[http_success_code, default_headers, get_orders_response]}
72
+
73
+ doc = client.get_orders
74
+
75
+ http_stubs.verify_stubbed_calls if verify_stubbings
76
+ assert_equal 2, doc.xpath("//order").size
77
+ assert_equal "127.85", doc.at_xpath("/orders/order/cost").content
78
+ end
79
+
80
+ end
@@ -0,0 +1,3 @@
1
+ require 'vivid_seat_api'
2
+ require 'minitest/autorun'
3
+ require 'minitest/pride'
@@ -0,0 +1,127 @@
1
+ require_relative 'helper'
2
+ require 'time'
3
+
4
+ describe "Listing" do
5
+ let(:fake_token){"31f502d-801c-4bd6-ac53-a8e0f68bdede"}
6
+
7
+ let(:default_headers) do
8
+ {"Content-Type" => "application/xml; charset=UTF-8"}
9
+ end
10
+
11
+ let(:http_success_code){200}
12
+
13
+ let(:listing_response) do
14
+ <<-EOF
15
+ <brokerListings>
16
+ <brokerListing>
17
+ <electronic>false</electronic>
18
+ <id>201572363</id>
19
+ <inHandDate>2012-04-25T00:00:00-05:00</inHandDate>
20
+ <notes/>
21
+ <price>2.00</price>
22
+ <quantity>4</quantity>
23
+ <row>P</row>
24
+ <seatFrom/>
25
+ <seatThru/>
26
+ <section>503</section>
27
+ <splitType>DEFAULT</splitType>
28
+ <splitValue/>
29
+ <ticketId>492632</ticketId>
30
+ </brokerListing>
31
+ </brokerListings>
32
+ EOF
33
+ end
34
+
35
+ let(:success_response) do
36
+ <<-EOF
37
+ <response>
38
+ <success>true</success>
39
+ <message>Success.</message>
40
+ </response>
41
+ EOF
42
+ end
43
+
44
+ let(:http_connection) {
45
+ Faraday.new do |builder|
46
+ builder.use Faraday::Response::VividSeat
47
+ builder.adapter :test, http_stubs
48
+ end
49
+ }
50
+
51
+ let(:http_stubs) { Faraday::Adapter::Test::Stubs.new }
52
+
53
+ let(:client) do
54
+ fetcher = VividSeatApi::Listing.new(fake_token, sandboxed: true)
55
+ fetcher.instance_variable_set(:@connection, http_connection)
56
+ fetcher
57
+ end
58
+
59
+ let(:verify_stubbings){true}
60
+
61
+ it "listing" do
62
+ http_stubs.get("/getListings?apiToken=#{fake_token}") {[http_success_code, default_headers, listing_response]}
63
+
64
+ doc = client.get_listings
65
+
66
+ http_stubs.verify_stubbed_calls if verify_stubbings
67
+ assert_equal 1, doc.xpath("//brokerListing").size
68
+ assert_equal "492632", doc.at_xpath("/brokerListings/brokerListing/ticketId").content
69
+ end
70
+
71
+ it "update" do
72
+ http_stubs.post("/updateListing?apiToken=#{fake_token}&section=504") {[http_success_code, default_headers, success_response]}
73
+
74
+ doc = client.update_listing(section: 504)
75
+
76
+ http_stubs.verify_stubbed_calls if verify_stubbings
77
+ assert_equal "true", doc.at_xpath("/response/success").content
78
+ end
79
+
80
+ it "delete" do
81
+ http_stubs.post("/deleteListing?apiToken=#{fake_token}&ticketId=201572363") {[http_success_code, default_headers, success_response]}
82
+
83
+ doc = client.delete_listing(ticketId: 201572363)
84
+
85
+ http_stubs.verify_stubbed_calls if verify_stubbings
86
+ assert_equal "true", doc.at_xpath("/response/success").content
87
+ end
88
+
89
+ it "insert_listing" do
90
+ http_stubs.post("/insertListing?apiToken=#{fake_token}&section=504") {[http_success_code, default_headers, success_response]}
91
+
92
+ attrs = {
93
+ ticketId: 201572363,
94
+ eventName: "Sample event",
95
+ venueName: "Sample venue",
96
+ eventDateTime: Time.now.iso8601,
97
+ quantity: 4,
98
+ section: 504,
99
+ row: 4,
100
+ price: 80.49
101
+ }
102
+ doc = client.insert_listing(attrs)
103
+
104
+ http_stubs.verify_stubbed_calls if verify_stubbings
105
+ assert_equal "true", doc.at_xpath("/response/success").content
106
+ end
107
+
108
+ it "insert or update" do
109
+ http_stubs.post("/insertOrUpdateListing?apiToken=#{fake_token}&section=504") {[http_success_code, default_headers, success_response]}
110
+
111
+ attrs = {
112
+ ticketId: 201572363,
113
+ eventName: "Sample event",
114
+ venueName: "Sample venue",
115
+ eventDateTime: Time.now.iso8601,
116
+ quantity: 4,
117
+ section: 504,
118
+ row: 4,
119
+ price: 80.49
120
+ }
121
+ doc = client.insert_or_update_listing(attrs)
122
+
123
+ http_stubs.verify_stubbed_calls if verify_stubbings
124
+ assert_equal "true", doc.at_xpath("/response/success").content
125
+ end
126
+
127
+ end
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency 'faraday', '~> 0.9', '>= 0.9.0'
24
24
  spec.add_runtime_dependency 'json', '~> 1.8.1', '>= 1.8.1'
25
25
  spec.add_runtime_dependency 'nokogiri', '~> 1.6.1', '>= 1.6.1'
26
+ spec.add_dependency 'scrivener', '0.3.0'
26
27
  end
metadata CHANGED
@@ -1,103 +1,117 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vivid_seat_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - chebyte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-23 00:00:00.000000000 Z
11
+ date: 2014-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.6'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: faraday
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0.9'
48
- - - ">="
48
+ - - ! '>='
49
49
  - !ruby/object:Gem::Version
50
50
  version: 0.9.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - "~>"
55
+ - - ~>
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0.9'
58
- - - ">="
58
+ - - ! '>='
59
59
  - !ruby/object:Gem::Version
60
60
  version: 0.9.0
61
61
  - !ruby/object:Gem::Dependency
62
62
  name: json
63
63
  requirement: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - "~>"
65
+ - - ~>
66
66
  - !ruby/object:Gem::Version
67
67
  version: 1.8.1
68
- - - ">="
68
+ - - ! '>='
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.8.1
71
71
  type: :runtime
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - "~>"
75
+ - - ~>
76
76
  - !ruby/object:Gem::Version
77
77
  version: 1.8.1
78
- - - ">="
78
+ - - ! '>='
79
79
  - !ruby/object:Gem::Version
80
80
  version: 1.8.1
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: nokogiri
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - "~>"
85
+ - - ~>
86
86
  - !ruby/object:Gem::Version
87
87
  version: 1.6.1
88
- - - ">="
88
+ - - ! '>='
89
89
  - !ruby/object:Gem::Version
90
90
  version: 1.6.1
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - "~>"
95
+ - - ~>
96
96
  - !ruby/object:Gem::Version
97
97
  version: 1.6.1
98
- - - ">="
98
+ - - ! '>='
99
99
  - !ruby/object:Gem::Version
100
100
  version: 1.6.1
101
+ - !ruby/object:Gem::Dependency
102
+ name: scrivener
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - '='
106
+ - !ruby/object:Gem::Version
107
+ version: 0.3.0
108
+ type: :runtime
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - '='
113
+ - !ruby/object:Gem::Version
114
+ version: 0.3.0
101
115
  description: This gem provides access to add, edit and delete listings appearing on
102
116
  Vivid Seats and it’s affiliates.
103
117
  email:
@@ -106,17 +120,21 @@ executables: []
106
120
  extensions: []
107
121
  extra_rdoc_files: []
108
122
  files:
109
- - ".gitignore"
123
+ - .gitignore
110
124
  - Gemfile
111
125
  - LICENSE.txt
112
126
  - README.md
113
127
  - Rakefile
114
128
  - lib/vivid_seat_api.rb
115
129
  - lib/vivid_seat_api/base.rb
116
- - lib/vivid_seat_api/client.rb
117
- - lib/vivid_seat_api/resource.rb
130
+ - lib/vivid_seat_api/fulfillment.rb
131
+ - lib/vivid_seat_api/listing.rb
118
132
  - lib/vivid_seat_api/response.rb
133
+ - lib/vivid_seat_api/upload_filter.rb
119
134
  - lib/vivid_seat_api/version.rb
135
+ - test/fulfillment_spec.rb
136
+ - test/helper.rb
137
+ - test/listing_spec.rb
120
138
  - vivid_seat_api.gemspec
121
139
  homepage: http://hashdog.com
122
140
  licenses:
@@ -128,12 +146,12 @@ require_paths:
128
146
  - lib
129
147
  required_ruby_version: !ruby/object:Gem::Requirement
130
148
  requirements:
131
- - - ">="
149
+ - - ! '>='
132
150
  - !ruby/object:Gem::Version
133
151
  version: '0'
134
152
  required_rubygems_version: !ruby/object:Gem::Requirement
135
153
  requirements:
136
- - - ">="
154
+ - - ! '>='
137
155
  - !ruby/object:Gem::Version
138
156
  version: '0'
139
157
  requirements: []
@@ -142,4 +160,7 @@ rubygems_version: 2.2.2
142
160
  signing_key:
143
161
  specification_version: 4
144
162
  summary: Ruby Gem API for vividseats.com.
145
- test_files: []
163
+ test_files:
164
+ - test/fulfillment_spec.rb
165
+ - test/helper.rb
166
+ - test/listing_spec.rb
@@ -1,7 +0,0 @@
1
- module VividSeatApi
2
- class Client < Resource
3
- def initialize(token)
4
- @token = token
5
- end
6
- end
7
- end
@@ -1,23 +0,0 @@
1
- module VividSeatApi
2
- class Resource < Base
3
- def list(options = {})
4
- get_query_api("getListings", options)
5
- end
6
-
7
- def update(options = {})
8
- post_query_api("updateListing", options)
9
- end
10
-
11
- def delete(options = {})
12
- get_query_api("deleteListing", options)
13
- end
14
-
15
- def create(options = {})
16
- post_query_api("insertListing", options)
17
- end
18
-
19
- def insert_or_update(options = {})
20
- post_query_api("insertOrUpdateListing", options)
21
- end
22
- end
23
- end