vng 0.1.20 → 1.1.0

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
  SHA256:
3
- metadata.gz: 0b49dda09b2542875760b7b2cdd3c4ab50d548458400e7dda9586edafd5c18b2
4
- data.tar.gz: 0e86208199aebd2f79914bfd5e6c5ec330682bcebbe4d154bd808bb3bb4a64f7
3
+ metadata.gz: 1356553075599aa2888d10740b02d282d6f6407c69bf49f67e0dbdc46475cebc
4
+ data.tar.gz: a8d09b9454c4fe51de636f61a880614eca6d12e9fc8455e5fc3888f324eaab9c
5
5
  SHA512:
6
- metadata.gz: 751d1a4eb1774f508106113b6cdc21988b6515ae8d965be322b205670b716214668ae72c67828e2a05fcb127a6c525fa741704c72244e8d9c52ad5e33fc55e43
7
- data.tar.gz: 552dcc79f28b148d54559849f04052b5348e552c7fbecc2dbba81dc46a07744db9b83b90b4ff740e48893b1aedede0e3db31d05fcccb043bf6620a3c8af276ee
6
+ metadata.gz: 273b479db2901d89fbdd880383cdcf212aaffcfd1637ca973464567b33b98eafeb2036a6e7e46357d6e7aadc87d70876733bc7094c7c727a0e04118f0b8772fe
7
+ data.tar.gz: '088ea1b5e63a121b23f956b533d34b3adcf5a570851d999e583197134ae5af69b8345e9ff4946d15183723e031c87015dae8b112e1bf30edc2a2d683b3ca8ee1'
data/.rubocop.yml ADDED
@@ -0,0 +1,17 @@
1
+ # Omakase Ruby styling for Rails
2
+ inherit_gem: { rubocop-rails-omakase: rubocop.yml }
3
+
4
+ AllCops:
5
+ TargetRubyVersion: 3.2.2
6
+
7
+ Style/StringLiterals:
8
+ Enabled: false
9
+
10
+ Layout/SpaceInsideArrayLiteralBrackets:
11
+ Enabled: false
12
+
13
+ Style/TrailingCommaInHashLiteral:
14
+ Enabled: false
15
+
16
+ Style/TrailingCommaInArrayLiteral:
17
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  ## [Unreleased]
2
2
 
3
+ ## [1.1] - 2024-11-20
4
+
5
+ - Support optional ActiveSupport::Notifications
6
+
7
+ ## [1.0.0] - 2024-11-20
8
+
9
+ - First major release
10
+ - Includes all the methods added so far
11
+ - 100% code coverage and Rubocop-happy
12
+
3
13
  ## [0.1.20] - 2024-11-20
4
14
 
5
15
  - Adds Franchise.find
data/README.md CHANGED
@@ -38,7 +38,7 @@ To install on your system, run
38
38
 
39
39
  To use inside a bundled Ruby project, add this line to the Gemfile:
40
40
 
41
- gem 'vng', '~> 0.1.13'
41
+ gem 'vng', '~> 1.0'
42
42
 
43
43
  Since the gem follows [Semantic Versioning](http://semver.org),
44
44
  indicating the full version in your Gemfile (~> *major*.*minor*.*patch*)
data/lib/vng/asset.rb CHANGED
@@ -16,10 +16,10 @@ module Vng
16
16
  method: '3',
17
17
  clientID: client_id,
18
18
  Fields: [
19
- {fieldID: 1013, fieldValue: name},
20
- {fieldID: 1017, fieldValue: weight},
21
- {fieldID: 1014, optionID: breed_option_id},
22
- ]
19
+ { fieldID: 1013, fieldValue: name },
20
+ { fieldID: 1017, fieldValue: weight },
21
+ { fieldID: 1014, optionID: breed_option_id },
22
+ ],
23
23
  }
24
24
 
25
25
  data = request path: PATH, body: body
@@ -45,4 +45,3 @@ module Vng
45
45
  end
46
46
  end
47
47
  end
48
-
data/lib/vng/breed.rb CHANGED
@@ -16,7 +16,6 @@ module Vng
16
16
  @high_weight = high_weight
17
17
  end
18
18
 
19
- # TODO: Needs pagination
20
19
  def self.all
21
20
  data = request path: PATH
22
21
 
data/lib/vng/case.rb CHANGED
@@ -16,14 +16,14 @@ module Vng
16
16
  method: '3',
17
17
  clientID: client_id,
18
18
  Fields: [
19
- {fieldID: 219, optionID: 239}, # Status: open
20
- {fieldID: 220, fieldValue: summary}, # Summary:
21
- {fieldID: 230, fieldValue: comments}, # Comments:
22
- {fieldID: 226, optionID: 227}, # Type: 'General request'
23
- {fieldID: 227, optionID: 232}, # Preferred Contact Method: 'Phone'
24
- {fieldID: 228, fieldValue: phone}, # Phone Me Back at:
25
- {fieldID: 229, fieldValue: email}, # Email:
26
- {fieldID: 1023, fieldValue: zip}, # Zip Code:
19
+ { fieldID: 219, optionID: 239 }, # Status: open
20
+ { fieldID: 220, fieldValue: summary }, # Summary:
21
+ { fieldID: 230, fieldValue: comments }, # Comments:
22
+ { fieldID: 226, optionID: 227 }, # Type: 'General request'
23
+ { fieldID: 227, optionID: 232 }, # Preferred Contact Method: 'Phone'
24
+ { fieldID: 228, fieldValue: phone }, # Phone Me Back at:
25
+ { fieldID: 229, fieldValue: email }, # Email:
26
+ { fieldID: 1023, fieldValue: zip }, # Zip Code:
27
27
  ]
28
28
  }
29
29
 
@@ -42,4 +42,3 @@ module Vng
42
42
  end
43
43
  end
44
44
  end
45
-
data/lib/vng/config.rb CHANGED
@@ -42,4 +42,4 @@ module Vng
42
42
  # @note Config is the only module auto-loaded in the Vng module,
43
43
  # in order to have a syntax as easy as Vng.configure
44
44
  extend Config
45
- end
45
+ end
@@ -52,4 +52,4 @@ module Vng
52
52
  @mock = ENV['VNG_MOCK'] == '1'
53
53
  end
54
54
  end
55
- end
55
+ end
data/lib/vng/contact.rb CHANGED
@@ -20,23 +20,22 @@ module Vng
20
20
  method: '3',
21
21
  clientID: client_id,
22
22
  Fields: [
23
- {fieldID: 127, fieldValue: first_name},
24
- {fieldID: 128, fieldValue: last_name},
25
- {fieldID: 97, fieldValue: URI.encode_uri_component(email)},
26
- {fieldID: 96, fieldValue: phone},
23
+ { fieldID: 127, fieldValue: first_name },
24
+ { fieldID: 128, fieldValue: last_name },
25
+ { fieldID: 97, fieldValue: URI.encode_uri_component(email) },
26
+ { fieldID: 96, fieldValue: phone },
27
27
  ]
28
28
  }
29
29
 
30
30
  data = request path: PATH, body: body
31
31
 
32
32
  id = data['Contact']['objectID']
33
- first_name = data['Fields'].find{|field| field['fieldID'] == 127}['fieldValue']
34
- last_name = data['Fields'].find{|field| field['fieldID'] == 128}['fieldValue']
35
- email = data['Fields'].find{|field| field['fieldID'] == 97}['fieldValue']
36
- phone = data['Fields'].find{|field| field['fieldID'] == 96}['fieldValue']
33
+ first_name = value_for_field data, 127
34
+ last_name = value_for_field data, 128
35
+ email = value_for_field data, 97
36
+ phone = value_for_field data, 96
37
37
 
38
38
  new id: id, first_name: first_name, last_name: last_name, email: email, phone: phone
39
39
  end
40
40
  end
41
41
  end
42
-
data/lib/vng/franchise.rb CHANGED
@@ -34,9 +34,7 @@ module Vng
34
34
  }
35
35
 
36
36
  data = request path: PATH, body: body
37
-
38
- email_field = data['Fields'].find{|field| field['fieldID'] == 9}
39
- email = email_field['fieldValue'] if email_field
37
+ email = value_for_field data, 9
40
38
  new id: franchise_id, email: email
41
39
  end
42
40
 
data/lib/vng/lead.rb CHANGED
@@ -18,19 +18,19 @@ module Vng
18
18
  body = {
19
19
  method: '3',
20
20
  Fields: [
21
- {fieldID: 121, optionID: '59'},
22
- {fieldID: 126, fieldValue: name},
23
- {fieldID: 238, fieldValue: URI.encode_uri_component(email)},
24
- {fieldID: 1024, fieldValue: phone},
21
+ { fieldID: 121, optionID: '59' },
22
+ { fieldID: 126, fieldValue: name },
23
+ { fieldID: 238, fieldValue: URI.encode_uri_component(email) },
24
+ { fieldID: 1024, fieldValue: phone },
25
25
  ]
26
26
  }
27
27
 
28
28
  data = request path: PATH, body: body
29
29
 
30
30
  id = data['Client']['objectID']
31
- name = data['Fields'].find{|field| field['fieldID'] == 126}['fieldValue']
32
- email = data['Fields'].find{|field| field['fieldID'] == 238}['fieldValue']
33
- phone = data['Fields'].find{|field| field['fieldID'] == 1024}['fieldValue']
31
+ name = value_for_field data, 127
32
+ email = value_for_field data, 238
33
+ phone = value_for_field data, 1024
34
34
 
35
35
  new id: id, name: name, email: email, phone: phone
36
36
  end
data/lib/vng/location.rb CHANGED
@@ -5,7 +5,7 @@ module Vng
5
5
  class Location < Resource
6
6
  PATH = '/api/v1/data/Locations/'
7
7
 
8
- # TODO: fetch from /system/objects/ method: 1, objectID: 20
8
+ # These could be fetched from /system/objects/ method: 1, objectID: 20
9
9
  STATES_OPTION_ID = {
10
10
  AK: 9879, AL: 9878, AR: 9877, AZ: 9880, CA: 9883, CO: 9876, CT: 9875,
11
11
  DC: 9874, DE: 9873, FL: 9872, GA: 9871, HI: 9870, IA: 9869, ID: 9868,
@@ -28,11 +28,11 @@ module Vng
28
28
  method: '3',
29
29
  clientID: client_id,
30
30
  Fields: [
31
- {fieldID: 779, optionID: 9906}, # 'USA'
32
- {fieldID: 778, optionID: STATES_OPTION_ID[state.to_sym]},
33
- {fieldID: 776, fieldValue: city},
34
- {fieldID: 773, fieldValue: address},
35
- {fieldID: 775, fieldValue: zip},
31
+ { fieldID: 779, optionID: 9906 }, # 'USA'
32
+ { fieldID: 778, optionID: STATES_OPTION_ID[state.to_sym] },
33
+ { fieldID: 776, fieldValue: city },
34
+ { fieldID: 773, fieldValue: address },
35
+ { fieldID: 775, fieldValue: zip },
36
36
  ]
37
37
  }
38
38
 
@@ -42,4 +42,3 @@ module Vng
42
42
  end
43
43
  end
44
44
  end
45
-
@@ -7,7 +7,7 @@ module Vng
7
7
  private
8
8
  def self.request(path:, body: {}, query: {}, include_security_token: true)
9
9
  if Vng.configuration.mock
10
- mock_request path:, body:, query:
10
+ mock_request(path:, body:, query:)
11
11
  else
12
12
  http_request(path:, body:, query:, include_security_token:)
13
13
  end
@@ -16,57 +16,57 @@ module Vng
16
16
  def self.mock_request(path:, body:, query:)
17
17
  case path
18
18
  when '/api/v1/security/login/'
19
- {"securityToken"=>"1234567"}
19
+ { "securityToken"=>"1234567" }
20
20
  when '/api/v1/resources/zips/'
21
- {"Zips"=>[{"zip"=>"21765", "zoneName"=>"Brentwood", "state"=>"MD"}]}
21
+ { "Zips"=>[{ "zip"=>"21765", "zoneName"=>"Brentwood", "state"=>"MD" }] }
22
22
  when '/api/v1/resources/franchises/'
23
- {"Franchises"=>[
24
- {"franchiseID"=>106, "franchiseName"=>"Mississauga", "gmtOffsetFranchise"=>-300, "isActive"=>false},
25
- {"franchiseID"=>107, "franchiseName"=>"Boise", "gmtOffsetFranchise"=>-420, "isActive"=>true},
26
- ]}
23
+ { "Franchises"=>[
24
+ { "franchiseID"=>106, "franchiseName"=>"Mississauga", "gmtOffsetFranchise"=>-300, "isActive"=>false },
25
+ { "franchiseID"=>107, "franchiseName"=>"Boise", "gmtOffsetFranchise"=>-420, "isActive"=>true },
26
+ ] }
27
27
  when '/api/v1/resources/availability/'
28
28
  if body.key?(:zip)
29
- {"Ids"=>{"franchiseID"=>"172"}}
29
+ { "Ids"=>{ "franchiseID"=>"172" } }
30
30
  elsif body[:method] == '2'
31
- {"Ids"=>{"lockID"=>"1406328"}}
31
+ { "Ids"=>{ "lockID"=>"1406328" } }
32
32
  else
33
- {"Availability"=> [
34
- {"dayID"=>"20241119", "routeID"=>"8949", "startTime"=>"1080"},
35
- {"dayID"=>"20241119", "routeID"=>"8949", "startTime"=>"1110"},
36
- ]}
33
+ { "Availability"=> [
34
+ { "dayID"=>"20241119", "routeID"=>"8949", "startTime"=>"1080" },
35
+ { "dayID"=>"20241119", "routeID"=>"8949", "startTime"=>"1110" },
36
+ ] }
37
37
  end
38
38
  when '/api/v1/resources/breeds/'
39
- {"Breeds"=>[{"breedID"=>2, "breed"=>"Bulldog", "species"=>"Dog", "optionID"=>303, "breedLowWeight"=>30, "breedHighWeight"=>50}]}
39
+ { "Breeds"=>[{ "breedID"=>2, "breed"=>"Bulldog", "species"=>"Dog", "optionID"=>303, "breedLowWeight"=>30, "breedHighWeight"=>50 }] }
40
40
  when '/api/v1/data/Leads/'
41
- {"Client"=>{"objectID"=>"916347"}, "Fields"=>[
42
- {"fieldID"=>126, "fieldValue"=>"Vng Example"},
43
- {"fieldID"=>238, "fieldValue"=>"vng@example.com"},
44
- {"fieldID"=>1024, "fieldValue"=>"8648648640"},
45
- ]}
41
+ { "Client"=>{ "objectID"=>"916347" }, "Fields"=> [
42
+ { "fieldID"=>126, "fieldValue"=>"Vng Example" },
43
+ { "fieldID"=>238, "fieldValue"=>"vng@example.com" },
44
+ { "fieldID"=>1024, "fieldValue"=>"8648648640" },
45
+ ] }
46
46
  when '/api/v1/data/Contacts/'
47
- {"Contact"=>{"objectID"=>"2201007"}, "Fields"=>[
48
- {"fieldID"=>127, "fieldValue"=>"Vng"},
49
- {"fieldID"=>128, "fieldValue"=>"Example"},
50
- {"fieldID"=>97, "fieldValue"=>"vng@example.com"},
51
- {"fieldID"=>96, "fieldValue"=>"8648648640"},
52
- ]}
47
+ { "Contact"=>{ "objectID"=>"2201007" }, "Fields"=>[
48
+ { "fieldID"=>127, "fieldValue"=>"Vng" },
49
+ { "fieldID"=>128, "fieldValue"=>"Example" },
50
+ { "fieldID"=>97, "fieldValue"=>"vng@example.com" },
51
+ { "fieldID"=>96, "fieldValue"=>"8648648640" },
52
+ ] }
53
53
  when '/api/v1/data/Locations/'
54
- {"Location"=>{"objectID"=>"995681"}}
54
+ { "Location"=>{ "objectID"=>"995681" } }
55
55
  when '/api/v1/data/Assets/'
56
- {"Asset"=>{"objectID"=>"2201008"}}
56
+ { "Asset"=>{ "objectID"=>"2201008" } }
57
57
  when '/api/v1/data/priceLists/'
58
- {"PriceItems"=>[
59
- {"priceItemID"=>275111, "priceItem"=>"15 Step SPA Grooming", "value"=>85.0, "taxID"=>256, "durationPerUnit"=>45.0, "serviceBadge"=>"Required", "serviceCategory"=>"15 Step Spa", "isOnline"=>true, "isActive"=>true},
60
- {"priceItemID"=>275300, "priceItem"=>"De-Shedding Treatment", "value"=>20.0, "taxID"=>256, "durationPerUnit"=>15.0, "serviceBadge"=>nil, "serviceCategory"=>"De-Shed", "isOnline"=>true, "isActive"=>false},
61
- ]}
58
+ { "PriceItems"=>[
59
+ { "priceItemID"=>275111, "priceItem"=>"15 Step SPA Grooming", "value"=>85.0, "taxID"=>256, "durationPerUnit"=>45.0, "serviceBadge"=>"Required", "serviceCategory"=>"15 Step Spa", "isOnline"=>true, "isActive"=>true },
60
+ { "priceItemID"=>275300, "priceItem"=>"De-Shedding Treatment", "value"=>20.0, "taxID"=>256, "durationPerUnit"=>15.0, "serviceBadge"=>nil, "serviceCategory"=>"De-Shed", "isOnline"=>true, "isActive"=>false },
61
+ ] }
62
62
  when '/api/v1/resources/serviceTypes/'
63
- {"ServiceTypes"=>[
64
- {"serviceTypeID"=>14, "serviceType"=>"Pet Grooming", "duration"=>90, "isActive"=>true},
65
- ]}
63
+ { "ServiceTypes"=>[
64
+ { "serviceTypeID"=>14, "serviceType"=>"Pet Grooming", "duration"=>90, "isActive"=>true },
65
+ ] }
66
66
  when '/api/v1/data/WorkOrders/'
67
- {"WorkOrder"=>{"objectID"=>"4138030"}}
67
+ { "WorkOrder"=>{ "objectID"=>"4138030" } }
68
68
  when '/api/v1/data/Cases/'
69
- {"Case"=>{"objectID"=>"28460"}}
69
+ { "Case"=>{ "objectID"=>"28460" } }
70
70
  else
71
71
  {}
72
72
  end
data/lib/vng/resource.rb CHANGED
@@ -18,8 +18,10 @@ module Vng
18
18
  request.body = body.to_json
19
19
  end
20
20
 
21
- response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
22
- http.request request
21
+ response = instrument do |data|
22
+ data[:response] = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
23
+ http.request request
24
+ end
23
25
  end
24
26
 
25
27
  JSON(response.body).tap do |data|
@@ -36,5 +38,19 @@ module Vng
36
38
  def self.security_token
37
39
  Vng.configuration.security_token
38
40
  end
41
+
42
+ def self.value_for_field(data, field_id)
43
+ field = data['Fields'].find { |field| field['fieldID'] == field_id }
44
+ field['fieldValue'] if field
45
+ end
46
+
47
+ def self.instrument(&block)
48
+ data = {class_name: name} # TODO: Add path, query, ...
49
+ if defined?(ActiveSupport::Notifications)
50
+ ActiveSupport::Notifications.instrument 'Vng.request', data, &block
51
+ else
52
+ block.call(data)
53
+ end
54
+ end
39
55
  end
40
56
  end
data/lib/vng/route.rb CHANGED
@@ -12,7 +12,6 @@ module Vng
12
12
  @name = name
13
13
  end
14
14
 
15
- # TODO: Needs pagination
16
15
  def self.all
17
16
  data = request path: PATH
18
17
 
@@ -24,8 +24,6 @@ module Vng
24
24
  new token: data['securityToken']
25
25
  end
26
26
 
27
- # TODO: Check if it's not the correct one already or catch
28
- # Data validation failed. [{"fieldID"=>0, "fieldName"=>nil, "errNo"=>-5213, "errMsg"=>"Same franchise ID supplied."}]
29
27
  def assign_to(franchise_id:)
30
28
  body = {
31
29
  securityToken: @token,
@@ -35,7 +33,6 @@ module Vng
35
33
 
36
34
  self.class.request path: '/api/v1/security/session/', body: body, include_security_token: false
37
35
  rescue Vng::Error => e
38
- # TODO: improve: ignore if the token was already assigned to the franchise
39
36
  raise unless e.message.include? 'Same franchise ID supplied'
40
37
  end
41
38
 
@@ -43,8 +40,6 @@ module Vng
43
40
  query = { securityToken: @token }
44
41
  self.class.request path: '/api/v1/security/logout/', query: query
45
42
  rescue Vng::Error => e
46
- p "Vng:Error! #{e}"
47
- # TODO: improve: ignore if the token was already destroyed
48
43
  raise unless e.message.include?('Session expired') || e.message.include?('Session does not exist')
49
44
  end
50
45
  end
@@ -13,7 +13,6 @@ module Vng
13
13
  @duration = duration
14
14
  end
15
15
 
16
- # TODO: Needs pagination
17
16
  def self.all
18
17
  data = request path: PATH
19
18
 
data/lib/vng/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Vng
2
- VERSION = '0.1.20'
2
+ VERSION = '1.1.0'
3
3
  end
@@ -20,9 +20,9 @@ module Vng
20
20
  contactID: contact_id,
21
21
  locationID: location_id,
22
22
  Fields: [
23
- {fieldID: 200, fieldValue: summary},
24
- {fieldID: 186, fieldValue: duration.to_i},
25
- {fieldID: 201, optionID: '9537'} # label: Online Tentative
23
+ { fieldID: 200, fieldValue: summary },
24
+ { fieldID: 186, fieldValue: duration.to_i },
25
+ { fieldID: 201, optionID: '9537' } # label: Online Tentative
26
26
  ],
27
27
  Charges: charges_for(line_items)
28
28
  }
@@ -47,13 +47,13 @@ module Vng
47
47
 
48
48
  def self.charge_fields_for(line_item)
49
49
  [
50
- {fieldID: 9289, fieldValue: line_item[:description]},
51
- {fieldID: 9287, fieldValue: line_item[:price]}, # Unit price
52
- {fieldID: 8673, fieldValue: line_item[:price]}, # Price item
53
- {fieldID: 813, fieldValue: line_item[:price]}, # Price
54
- {fieldID: 9286, fieldValue: line_item[:price]}, # Subtotal
55
- {fieldID: 9283, fieldValue: line_item[:price]}, # Total
56
- {fieldID: 9288, fieldValue: 1}, # Qty
50
+ { fieldID: 9289, fieldValue: line_item[:description] },
51
+ { fieldID: 9287, fieldValue: line_item[:price] }, # Unit price
52
+ { fieldID: 8673, fieldValue: line_item[:price] }, # Price item
53
+ { fieldID: 813, fieldValue: line_item[:price] }, # Price
54
+ { fieldID: 9286, fieldValue: line_item[:price] }, # Subtotal
55
+ { fieldID: 9283, fieldValue: line_item[:price] }, # Total
56
+ { fieldID: 9288, fieldValue: 1 }, # Qty
57
57
  ]
58
58
  end
59
59
  end
data/lib/vng/zip.rb CHANGED
@@ -13,7 +13,6 @@ module Vng
13
13
  @zone_name = zone_name
14
14
  end
15
15
 
16
- # TODO: Needs pagination
17
16
  def self.all
18
17
  data = request path: PATH
19
18
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vng
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - claudiob
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-11-20 00:00:00.000000000 Z
11
+ date: 2024-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov
@@ -24,6 +24,34 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activesupport
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
27
55
  description: A Ruby client for the Vonigo API.
28
56
  email:
29
57
  - claudiob@users.noreply.github.com
@@ -32,6 +60,7 @@ extensions: []
32
60
  extra_rdoc_files: []
33
61
  files:
34
62
  - ".rspec"
63
+ - ".rubocop.yml"
35
64
  - CHANGELOG.md
36
65
  - LICENSE.txt
37
66
  - README.md