eventbrite_sdk 3.1.1 → 3.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a1bdc8c292e5a97ac5b20031869bdbb311e9e257
4
- data.tar.gz: 536b3b8887f554d78300dfe1b8fd1bc486b478f0
3
+ metadata.gz: a6c4ed26197ecfa0bb499f4c5f35669dcfeb8559
4
+ data.tar.gz: 101b6680b4e1d1d3c4be36cb49117def4e71ac5e
5
5
  SHA512:
6
- metadata.gz: d86841a8009ac234f84f6511ed33e384668b386bb24f22308bb4b7390b8095b0c0ec1b8a35746f6338471e9bedd9787fca43fc607efd93f9d44ba954ee8dba5d
7
- data.tar.gz: 658111dafb417f99bd5212f8efa87e9043ee2e5a674f00199646afc52a1dd3b70defb524bfb8d69c857d7489d5c78fbcdcf3b4a66b63ded2b23dc44e7803b553
6
+ metadata.gz: e2987dfccde3bbb93dcac5d4222eed4c8fb65354b0463a98c5d6d32f3d4652c3c4cffe60ec2b1a216647144545b206c74bb10258ba1f576f32cdbe1dbeedc16d
7
+ data.tar.gz: d1f4cf26821103f143e91fede4e3b3854132c38cac55470d69e0b081937a82bcaac3c03eb357e0da07de3846310f7839b7cf22436c31866f0900aa20bf2e165d
data/.gitignore CHANGED
@@ -1,2 +1,4 @@
1
1
  Gemfile.lock
2
- coverage/
2
+ .byebug_history
3
+ coverage/
4
+ tmp/
@@ -14,6 +14,8 @@ require 'eventbrite_sdk/resource/null_schema_definition'
14
14
  require 'eventbrite_sdk/resource/schema_definition'
15
15
  require 'eventbrite_sdk/blank_resource_list'
16
16
  require 'eventbrite_sdk/resource'
17
+ require 'eventbrite_sdk/resource/field'
18
+ require 'eventbrite_sdk/resource/field_comparable'
17
19
  require 'eventbrite_sdk/resource_list'
18
20
 
19
21
  require 'eventbrite_sdk/lists/owned_event_orders_list'
@@ -36,23 +38,23 @@ module EventbriteSDK
36
38
  EXCEPTION_MAP = {
37
39
  RestClient::ResourceNotFound => {
38
40
  class: ResourceNotFound,
39
- message: 'requested object was not found',
41
+ message: 'requested object was not found'
40
42
  },
41
43
  RestClient::BadRequest => {
42
44
  class: BadRequest,
43
- message: 'invalid request',
45
+ message: 'invalid request'
44
46
  },
45
47
  RestClient::Forbidden => {
46
48
  class: Forbidden,
47
- message: 'not authorized',
49
+ message: 'not authorized'
48
50
  },
49
51
  RestClient::InternalServerError => {
50
52
  class: InternalServerError,
51
- message: 'internal server error',
53
+ message: 'internal server error'
52
54
  },
53
55
  RestClient::Unauthorized => {
54
56
  class: Unauthorized,
55
- message: 'unauthorized request',
57
+ message: 'unauthorized request'
56
58
  }
57
59
  }.freeze
58
60
  THREAD_EB_API_TOKEN_KEY = :eb_api_token
@@ -101,9 +103,7 @@ module EventbriteSDK
101
103
  #
102
104
  # BadRequest is raised when you publish an event because the body sent is
103
105
  # "null" (invalid json) and the API rejects it.
104
- if params[:payload]
105
- params[:payload] = params[:payload].to_json
106
- end
106
+ params[:payload] = params[:payload].to_json if params[:payload]
107
107
 
108
108
  request(params)
109
109
  end
@@ -18,8 +18,8 @@ module EventbriteSDK
18
18
  integer 'quantity'
19
19
  string 'profile'
20
20
  string 'costs'
21
- datetime 'created', read_only: true
22
- datetime 'changed', read_only: true
21
+ utc 'created', read_only: true
22
+ utc 'changed', read_only: true
23
23
  string 'resource_uri', read_only: true
24
24
  end
25
25
  end
@@ -34,5 +34,14 @@ module EventbriteSDK
34
34
  def to_json(opts = {})
35
35
  { @key => [] }.to_json(opts)
36
36
  end
37
+
38
+ # Blank lists need to respond to the pagination helpers.
39
+ def object_count
40
+ 0
41
+ end
42
+
43
+ %i(page_count page_number page_size).each do |name|
44
+ define_method(name) { 1 }
45
+ end
37
46
  end
38
47
  end
@@ -21,13 +21,11 @@ module EventbriteSDK
21
21
  has_many :ticket_classes, object_class: 'TicketClass'
22
22
 
23
23
  schema_definition do
24
- string 'name.html'
25
- string 'description.html'
24
+ multipart 'name'
25
+ multipart 'description'
26
26
  string 'organizer_id'
27
- datetime 'start.utc'
28
- datetime 'start.timezone'
29
- datetime 'end.utc'
30
- datetime 'end.timezone'
27
+ datetime 'start'
28
+ datetime 'end'
31
29
  boolean 'hide_start_date'
32
30
  boolean 'hide_end_date'
33
31
  string 'currency'
@@ -45,8 +43,8 @@ module EventbriteSDK
45
43
  boolean 'show_remaining'
46
44
  string 'source'
47
45
  string 'status', read_only: true
48
- string 'created', read_only: true
49
- string 'changed', read_only: true
46
+ utc 'created', read_only: true
47
+ utc 'changed', read_only: true
50
48
  string 'resource_uri', read_only: true
51
49
  end
52
50
 
@@ -1,7 +1,6 @@
1
1
  module EventbriteSDK
2
2
  # This module implements media upload to Eventbrite based on:
3
3
  # https://docs.evbhome.com/apidocs/reference/uploads/?highlight=logo
4
-
5
4
  class Media < Resource
6
5
  resource_path 'media/:id'
7
6
 
@@ -11,7 +10,7 @@ module EventbriteSDK
11
10
  event_logo: 'image-event-logo',
12
11
  organizer_logo: 'image-organizer-logo',
13
12
  user_photo: 'image-user-photo',
14
- event_view_from_seat: 'image-event-view-from-seat',
13
+ event_view_from_seat: 'image-event-view-from-seat'
15
14
  }.freeze
16
15
 
17
16
  schema_definition do
@@ -46,9 +45,7 @@ module EventbriteSDK
46
45
  type = VALID_TYPES[image_type]
47
46
 
48
47
  unless type
49
- raise ArgumentError.new(
50
- "image_type needs to be one of #{VALID_TYPES.keys}"
51
- )
48
+ raise ArgumentError, "image_type needs to be one of #{VALID_TYPES.keys}"
52
49
  end
53
50
 
54
51
  request.get(url: path('upload'), query: { type: type })
@@ -58,7 +55,7 @@ module EventbriteSDK
58
55
  RestClient.post(
59
56
  instructions['upload_url'],
60
57
  instructions['upload_data'].merge(file: file),
61
- multipart: true,
58
+ multipart: true
62
59
  )
63
60
  end
64
61
 
@@ -6,7 +6,7 @@ module EventbriteSDK
6
6
  #
7
7
  # When an event has an id the POST is made, otherwise we return false
8
8
  # POSTS to order/:id/(resend_confirmation_email|refunds)
9
- define_api_actions :resend_confirmation_email, { refund: :refunds }
9
+ define_api_actions :resend_confirmation_email, refund: :refunds
10
10
 
11
11
  has_many :attendees, object_class: 'Attendee'
12
12
  belongs_to :event, object_class: 'Event'
@@ -17,8 +17,8 @@ module EventbriteSDK
17
17
  string 'last_name'
18
18
  string 'email'
19
19
  string 'costs'
20
- datetime 'created', read_only: true
21
- datetime 'changed', read_only: true
20
+ utc 'created', read_only: true
21
+ utc 'changed', read_only: true
22
22
  string 'resource_uri', read_only: true
23
23
  end
24
24
  end
@@ -8,8 +8,8 @@ module EventbriteSDK
8
8
 
9
9
  schema_definition do
10
10
  string 'name'
11
- string 'description.html'
12
- string 'long_description.html'
11
+ multipart 'description'
12
+ multipart 'long_description'
13
13
  string 'logo.id'
14
14
  string 'website'
15
15
  string 'twitter'
@@ -1,15 +1,14 @@
1
1
  module EventbriteSDK
2
2
  class Report
3
- STRING_KEYS = %i(
3
+ STRING_KEYS = %i[
4
4
  start_date
5
5
  end_date
6
6
  date_facet
7
7
  event_status
8
8
  timezone
9
9
  group_by
10
- ).freeze
11
-
12
- VALID_REPORTS = %i(attendees sales).freeze
10
+ ].freeze
11
+ VALID_REPORTS = %i[attendees sales].freeze
13
12
 
14
13
  def initialize
15
14
  @query = {}
@@ -27,7 +27,7 @@ module EventbriteSDK
27
27
  # !new? && EventbriteSDK.post(url: path('unpublish'))
28
28
  # end
29
29
  def self.define_api_actions(*actions)
30
- req = ->(inst, postfix) do
30
+ req = lambda do |inst, postfix|
31
31
  inst.instance_eval { !new? && EventbriteSDK.post(url: path(postfix)) }
32
32
  end
33
33
 
@@ -51,10 +51,10 @@ module EventbriteSDK
51
51
  end
52
52
 
53
53
  def refresh!(request: EventbriteSDK, api_token: nil)
54
- unless new?
55
- reload request.get(url: path, api_token: api_token)
56
- else
54
+ if new?
57
55
  false
56
+ else
57
+ reload request.get(url: path, api_token: api_token)
58
58
  end
59
59
  end
60
60
 
@@ -63,15 +63,15 @@ module EventbriteSDK
63
63
  end
64
64
 
65
65
  def save(postfixed_path = '', api_token: nil, request: EventbriteSDK)
66
- if changed? || !postfixed_path.empty?
67
- response = request.post(url: path(postfixed_path),
68
- payload: attrs.payload(self.class.prefix),
69
- api_token: api_token)
66
+ return unless changed? || !postfixed_path.empty?
70
67
 
71
- reload(response)
68
+ response = request.post(url: path(postfixed_path),
69
+ payload: attrs.payload(self.class.prefix),
70
+ api_token: api_token)
72
71
 
73
- true
74
- end
72
+ reload(response)
73
+
74
+ true
75
75
  end
76
76
 
77
77
  def to_json(opts = {})
@@ -1,11 +1,6 @@
1
1
  module EventbriteSDK
2
2
  class Resource
3
3
  class Attributes
4
- SISTER_FIELDS = {
5
- 'timezone' => 'utc',
6
- 'utc' => 'timezone'
7
- }.freeze
8
-
9
4
  attr_reader :attrs, :changes
10
5
 
11
6
  def self.build(attrs, schema)
@@ -15,14 +10,13 @@ module EventbriteSDK
15
10
  end
16
11
 
17
12
  def initialize(hydrated_attrs = {}, schema = NullSchemaDefinition.new)
18
- @attrs = {}
19
13
  @changes = {}
20
14
  @schema = schema
21
15
 
22
16
  # Build out initial hash based on schema's defined keys
23
- schema.defined_keys.each { |key| bury_attribute(key, nil) }
24
-
25
- @attrs = attrs.merge(stringify_keys(hydrated_attrs))
17
+ @attrs = schema.defined_keys.each_with_object({}) do |key, attrs|
18
+ Field.new(key, nil).bury(attrs)
19
+ end.merge(stringify_keys(hydrated_attrs))
26
20
  end
27
21
 
28
22
  def [](key)
@@ -31,7 +25,8 @@ module EventbriteSDK
31
25
 
32
26
  def assign_attributes(new_attrs)
33
27
  stringify_keys(new_attrs).each do |attribute_key, value|
34
- assign_value(attribute_key, value) if schema.writeable?(attribute_key)
28
+ value = Field.new(attribute_key, value, schema: schema)
29
+ changes.merge! value.apply(attrs, changes)
35
30
  end
36
31
 
37
32
  nil
@@ -55,7 +50,7 @@ module EventbriteSDK
55
50
 
56
51
  def reset!
57
52
  changes.each do |attribute_key, (old_value, _current_value)|
58
- bury_attribute(attribute_key, old_value)
53
+ Field.new(attribute_key, old_value).bury(attrs)
59
54
  end
60
55
 
61
56
  @changes = {}
@@ -68,18 +63,12 @@ module EventbriteSDK
68
63
  # prefix: This is needed due to inconsistencies in the EB API
69
64
  # Sometimes there's a prefix, sometimes there's not,
70
65
  # sometimes it's singular, sometimes it's plural.
71
- # Once the API gets a bit more nomalized we can remove this
72
- # alltogether and infer a prefix based
66
+ # Once the API gets a bit more normalized we can remove this
67
+ # altogether and infer a prefix based
73
68
  # on the class name of the resource
74
69
  def payload(prefix = nil)
75
70
  changes.each_with_object({}) do |(attribute_key, (_, value)), payload|
76
- key = if prefix
77
- "#{prefix}.#{attribute_key}"
78
- else
79
- attribute_key
80
- end
81
-
82
- bury(key, value, payload)
71
+ Field.new(attribute_key, value, prefix: prefix).bury(payload)
83
72
  end
84
73
  end
85
74
 
@@ -91,52 +80,10 @@ module EventbriteSDK
91
80
 
92
81
  attr_reader :schema
93
82
 
94
- def assign_value(attribute_key, value)
95
- dirty_check(attribute_key, value)
96
- add_rich_value(attribute_key)
97
- bury_attribute(attribute_key, value)
98
- end
99
-
100
- def dirty_check(attribute_key, value)
101
- initial_value = attrs.dig(*attribute_key.split('.'))
102
-
103
- if initial_value != value
104
- changes[attribute_key] = [initial_value, value]
105
- end
106
- end
107
-
108
- def bury_attribute(attribute_key, value)
109
- bury(attribute_key, value, attrs)
110
- end
111
-
112
- # Since we use dirty checking to determine what the payload is
113
- # you can run into a case where a "rich media" field needs other attrs
114
- # Namely timezone, so if a rich date changed, add the tz with it.
115
- def add_rich_value(attribute_key)
116
- if changes[attribute_key] && attribute_key =~ /\A(.+)\.(utc|timezone)\z/
117
- field = Regexp.last_match(2)
118
- key_prefix = Regexp.last_match(1)
119
-
120
- handle_sister_field(key_prefix, field)
121
- end
122
- end
123
-
124
- def bury(attribute_key, value, hash = {})
125
- keys = attribute_key.split '.'
126
-
127
- # Hand rolling #bury
128
- # hopefully we get it in the next release of Ruby
129
- keys.each_cons(2).reduce(hash) do |prev_attrs, (key, _)|
130
- prev_attrs[key] ||= {}
131
- end[keys.last] = value
132
-
133
- hash
134
- end
135
-
136
83
  def method_missing(method_name, *_args, &_block)
137
84
  requested_key = method_name.to_s
138
85
 
139
- if attrs.has_key?(requested_key)
86
+ if attrs.key?(requested_key)
140
87
  handle_requested_attr(attrs[requested_key])
141
88
  else
142
89
  super
@@ -144,16 +91,7 @@ module EventbriteSDK
144
91
  end
145
92
 
146
93
  def respond_to_missing?(method_name, _include_private = false)
147
- attrs.has_key?(method_name.to_s) || super
148
- end
149
-
150
- def handle_sister_field(key_prefix, field)
151
- sister_field = SISTER_FIELDS[field]
152
- stale_value = attrs.dig(key_prefix, sister_field)
153
-
154
- unless changes["#{key_prefix}.#{sister_field}"]
155
- changes["#{key_prefix}.#{sister_field}"] = [stale_value, stale_value]
156
- end
94
+ attrs.key?(method_name.to_s) || super
157
95
  end
158
96
 
159
97
  def handle_requested_attr(value)
@@ -0,0 +1,90 @@
1
+ module EventbriteSDK
2
+ class Resource
3
+ class Field
4
+ SIBLING_KEYMAP = { 'timezone' => 'utc', 'utc' => 'timezone' }.freeze
5
+ SIBLING_REGEX = /\A(.+)\.(utc|timezone)\z/
6
+
7
+ attr_reader :key, :value, :initial_value
8
+
9
+ def initialize(key, value, prefix: nil, schema: NullSchemaDefinition.new)
10
+ @key = (prefix && "#{prefix}.#{key}") || key
11
+ @schema = schema
12
+ @value = value
13
+ @datetime = false
14
+ end
15
+
16
+ def changes(attrs, changes)
17
+ %i[basic_changes rich_changes].reduce({}) do |diff, method|
18
+ diff.merge send(method, attrs, changes)
19
+ end
20
+ end
21
+
22
+ def keys
23
+ key.split('.')
24
+ end
25
+
26
+ def writeable?
27
+ schema.writeable?(key)
28
+ end
29
+
30
+ def apply(attrs, existing_changes)
31
+ if writeable?
32
+ changes(attrs, existing_changes).tap { bury(attrs) }
33
+ else
34
+ {}
35
+ end
36
+ end
37
+
38
+ def bury(hash = {})
39
+ nested_keys = keys
40
+ # Hand rolling #bury, hopefully we get it in the next release of Ruby.
41
+ # UPDATE: we won't https://bugs.ruby-lang.org/issues/11747
42
+ nested_keys.each_cons(2).reduce(hash) do |prev_attrs, (nkey, _)|
43
+ prev_attrs[nkey] ||= {}
44
+ end[nested_keys.last] = value
45
+
46
+ hash
47
+ end
48
+
49
+ private
50
+
51
+ attr_reader :datetime, :schema
52
+
53
+ def basic_changes(attrs, _changes)
54
+ @initial_value = attrs.dig(*keys)
55
+ comp_value = schema.dirty_comparable(self)
56
+
57
+ (comp_value != value && { key => [initial_value, value] }) || {}
58
+ end
59
+
60
+ def rich_changes(attrs, changes)
61
+ if key =~ SIBLING_REGEX && !changes[sister_field]
62
+ @datetime = true
63
+ { sister_field => sister_change(attrs) }
64
+ else
65
+ {}
66
+ end
67
+ end
68
+
69
+ def sister
70
+ if key =~ SIBLING_REGEX
71
+ key_prefix = Regexp.last_match(1)
72
+ sister_field = SIBLING_KEYMAP[Regexp.last_match(2)]
73
+
74
+ [key_prefix, sister_field]
75
+ end
76
+ end
77
+
78
+ def sister_field
79
+ sister.join('.')
80
+ end
81
+
82
+ # Since we use dirty checking to determine what the payload is
83
+ # you can run into a case where a "rich media" field needs other attrs
84
+ # Namely timezone, so if a rich date changed, add the tz with it.
85
+ def sister_change(attrs)
86
+ Array.new(2) { attrs.dig(*sister) }
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,13 @@
1
+ module EventbriteSDK
2
+ class Resource
3
+ class FieldComparable
4
+ def value_for(type, field)
5
+ if type == :currency && field.initial_value
6
+ field.initial_value.values_at(:currency, :value).join(',')
7
+ else
8
+ field.initial_value
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -8,6 +8,10 @@ module EventbriteSDK
8
8
  def defined_keys
9
9
  []
10
10
  end
11
+
12
+ def dirty_comparable(field)
13
+ field.initial_value
14
+ end
11
15
  end
12
16
  end
13
17
  end
@@ -1,18 +1,26 @@
1
+ require 'byebug'
1
2
  module EventbriteSDK
2
3
  class Resource
3
4
  class SchemaDefinition
4
5
  def initialize(resource_name)
5
- @resource_name = resource_name
6
- @read_only_keys = Set.new
7
6
  @attrs = {}
7
+ @read_only_keys = Set.new
8
+ @comparable = FieldComparable.new
9
+ @resource_name = resource_name
8
10
  end
9
11
 
10
- %i(boolean currency datetime integer string).each do |method|
12
+ %i[
13
+ boolean
14
+ currency
15
+ datetime
16
+ integer
17
+ multipart
18
+ string
19
+ utc
20
+ ].each do |method|
11
21
  define_method(method) do |value, *opts|
12
- options = opts.first
13
-
14
- @read_only_keys << value if options && options[:read_only]
15
- @attrs[value] = method
22
+ add_field_options(opts, value, method)
23
+ add_field(opts, value, method)
16
24
  end
17
25
  end
18
26
 
@@ -28,9 +36,44 @@ module EventbriteSDK
28
36
  attrs.keys
29
37
  end
30
38
 
39
+ def dirty_comparable(field)
40
+ comparable.value_for(attrs[field.key], field)
41
+ end
42
+
31
43
  private
32
44
 
33
- attr_reader :read_only_keys, :resource_name, :attrs
45
+ attr_reader :comparable ,:read_only_keys, :resource_name, :attrs
46
+
47
+ def add_field_options(opts, value, _method)
48
+ options = opts.first
49
+ @read_only_keys << value if options && options[:read_only]
50
+ end
51
+
52
+ def add_field(_options, value, method)
53
+ @attrs[value] = method
54
+ send(:"#{method}_expansion", value)
55
+ end
56
+
57
+ # The following fields are NO-OP expansions
58
+ %i[boolean integer multipart string utc].each do |type|
59
+ define_method("#{type}_expansion") { |val| }
60
+ end
61
+
62
+ def currency_expansion(value)
63
+ generic_expansion(%w[currency display value], value)
64
+ end
65
+
66
+ def datetime_expansion(value)
67
+ generic_expansion(%w[local utc timezone], value)
68
+ end
69
+
70
+ def multipart_expansion(value)
71
+ generic_expansion(%i[html text], value)
72
+ end
73
+
74
+ def generic_expansion(types, value)
75
+ types.map { |exp| @attrs["#{value}.#{exp}"] = :string }
76
+ end
34
77
 
35
78
  def read_only?(key)
36
79
  read_only_keys.member?(key)
@@ -49,7 +49,7 @@ module EventbriteSDK
49
49
  page(pagination['page_number'] - 1, api_token: api_token)
50
50
  end
51
51
 
52
- %w(object_count page_number page_size page_count).each do |method|
52
+ %w[object_count page_number page_size page_count].each do |method|
53
53
  define_method(method) { pagination[method] }
54
54
  end
55
55
 
@@ -73,6 +73,14 @@ module EventbriteSDK
73
73
 
74
74
  private
75
75
 
76
+ attr_reader :expansion,
77
+ :key,
78
+ :object_class,
79
+ :objects,
80
+ :query,
81
+ :request,
82
+ :url_base
83
+
76
84
  def pagination
77
85
  @pagination ||= { 'page_count' => 1, 'page_number' => 1 }
78
86
  end
@@ -87,13 +95,5 @@ module EventbriteSDK
87
95
  @objects = (response[key.to_s] || []).map { |raw| object_class.new(raw) }
88
96
  @pagination = response['pagination']
89
97
  end
90
-
91
- attr_reader :expansion,
92
- :key,
93
- :object_class,
94
- :objects,
95
- :query,
96
- :request,
97
- :url_base
98
98
  end
99
99
  end
@@ -26,8 +26,8 @@ module EventbriteSDK
26
26
  boolean 'include_fee'
27
27
  boolean 'split_fee'
28
28
  string 'sales_channels'
29
- datetime 'sales_start'
30
- datetime 'sales_end'
29
+ utc 'sales_start'
30
+ utc 'sales_end'
31
31
  string 'sales_start_after'
32
32
  integer 'minimum_quantity'
33
33
  integer 'maximum_quantity'
@@ -50,7 +50,7 @@ module EventbriteSDK
50
50
  end
51
51
 
52
52
  def unhide!
53
- ! hidden || change('hidden' => false)
53
+ !hidden || change('hidden' => false)
54
54
  end
55
55
 
56
56
  def change(attrs)
@@ -1,5 +1,5 @@
1
1
  module EventbriteSDK
2
2
  # Major should always line up with the major point release of the public API
3
3
  # v3 => 3.x.x
4
- VERSION = '3.1.1'.freeze
4
+ VERSION = '3.1.2'.freeze
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eventbrite_sdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.1.1
4
+ version: 3.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vinnie Franco
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-08-16 00:00:00.000000000 Z
13
+ date: 2017-08-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rest-client
@@ -129,6 +129,8 @@ files:
129
129
  - lib/eventbrite_sdk/report.rb
130
130
  - lib/eventbrite_sdk/resource.rb
131
131
  - lib/eventbrite_sdk/resource/attributes.rb
132
+ - lib/eventbrite_sdk/resource/field.rb
133
+ - lib/eventbrite_sdk/resource/field_comparable.rb
132
134
  - lib/eventbrite_sdk/resource/null_schema_definition.rb
133
135
  - lib/eventbrite_sdk/resource/operations/attribute_schema.rb
134
136
  - lib/eventbrite_sdk/resource/operations/endpoint.rb
@@ -162,7 +164,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
164
  version: '0'
163
165
  requirements: []
164
166
  rubyforge_project:
165
- rubygems_version: 2.5.2
167
+ rubygems_version: 2.6.13
166
168
  signing_key:
167
169
  specification_version: 4
168
170
  summary: Official Eventbrite SDK for the v3 API