lightspeed_pos 0.2.0 → 0.3.0
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 +4 -4
- data/.rubocop.yml +6 -3
- data/README.markdown +3 -1
- data/bin/console +19 -1
- data/lib/lightspeed/account.rb +2 -0
- data/lib/lightspeed/client.rb +13 -12
- data/lib/lightspeed/collection.rb +6 -12
- data/lib/lightspeed/error.rb +6 -5
- data/lib/lightspeed/price_level.rb +14 -0
- data/lib/lightspeed/price_levels.rb +8 -0
- data/lib/lightspeed/prices.rb +1 -1
- data/lib/lightspeed/request.rb +18 -4
- data/lib/lightspeed/resource.rb +5 -7
- data/lib/lightspeed/version.rb +1 -1
- data/lib/lightspeed_pos.rb +1 -1
- data/lightspeed_pos.gemspec +7 -6
- data/script/buildkite +14 -1
- metadata +43 -27
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3e50edadd52d55b1ed3b2def3b6b10b765d8ac2a
|
4
|
+
data.tar.gz: b59ae04766b48a27126491e94a4b88fbf7a71902
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7951c24a7ee73b3840a1145b8f8c8d797e074a1b03277ea4fe814618fd7045116a41d06ae9ea1c8c723f1561e1b84547c0799a5a3d0d13f74fe0bf500a9841bd
|
7
|
+
data.tar.gz: f1c67e762048bfc0a08660027e2742ed6d3d85b33467062cb558b0569fc094498f2490ee41c6e3f250cc39b0316ffd971b3a1162181a8b943b8ccb512beee387
|
data/.rubocop.yml
CHANGED
@@ -49,8 +49,8 @@ IndentHash:
|
|
49
49
|
IndentationWidth:
|
50
50
|
Enabled: false
|
51
51
|
|
52
|
-
CaseIndentation:
|
53
|
-
|
52
|
+
Layout/CaseIndentation:
|
53
|
+
EnforcedStyle: end
|
54
54
|
|
55
55
|
FormatString:
|
56
56
|
Enabled: false
|
@@ -65,5 +65,8 @@ SignalException:
|
|
65
65
|
DoubleNegation:
|
66
66
|
Enabled: false
|
67
67
|
|
68
|
-
|
68
|
+
Style/TrailingCommaInLiteral:
|
69
|
+
Enabled: false
|
70
|
+
|
71
|
+
Style/TrailingCommaInArguments:
|
69
72
|
Enabled: false
|
data/README.markdown
CHANGED
@@ -9,9 +9,11 @@ Not all endpoints are implemented yet, but you can help by submitting pull reque
|
|
9
9
|
First, intialize a new client:
|
10
10
|
|
11
11
|
```ruby
|
12
|
-
client = Lightspeed::Client.new(
|
12
|
+
client = Lightspeed::Client.new(oauth_token_holder: yourOAuthAwareObjectHere)
|
13
13
|
```
|
14
14
|
|
15
|
+
`yourOAuthAwareObjectHere` must be an object that responds to `oauth_token` and `refresh_oauth_token`. `oauth_token` must return an access token, and `refresh_oauth_token` must handle the refreshing of expired access tokens, so that a subsequent call to `oauth_token` will return a new, unexpired access token.
|
16
|
+
|
15
17
|
Next, make a request for your accounts:
|
16
18
|
|
17
19
|
```ruby
|
data/bin/console
CHANGED
@@ -5,13 +5,31 @@ require 'dotenv'
|
|
5
5
|
require 'lightspeed_pos'
|
6
6
|
Lightspeed::Request.verbose = true
|
7
7
|
|
8
|
+
class TokenHolder
|
9
|
+
def initialize(token: nil, refresh_token: nil)
|
10
|
+
@token = token
|
11
|
+
@refresh_token = refresh_token
|
12
|
+
end
|
13
|
+
|
14
|
+
def oauth_token
|
15
|
+
@token
|
16
|
+
end
|
17
|
+
|
18
|
+
def refresh_oauth_token
|
19
|
+
raise "Token expired, refresh not yet implemented"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
8
23
|
# require "pry"
|
9
24
|
# Pry.start
|
10
25
|
Dotenv.load
|
11
26
|
def client
|
12
27
|
token = ENV['LIGHTSPEED_OAUTH_TOKEN']
|
28
|
+
refresh_token = ENV['LIGHTSPEED_OAUTH_REFRESH_TOKEN']
|
13
29
|
raise 'set LIGHTSPEED_OAUTH_TOKEN as an envorinment variable to use this' unless token
|
14
|
-
|
30
|
+
raise 'set LIGHTSPEED_OAUTH_REFRESH_TOKEN as an envorinment variable to use this' unless refresh_token
|
31
|
+
token_holder = Tokenholder.new(token: token, refresh_token: refresh_token)
|
32
|
+
@client ||= Lightspeed::Client.new(oauth_token_holder: token_holder)
|
15
33
|
end
|
16
34
|
|
17
35
|
def account
|
data/lib/lightspeed/account.rb
CHANGED
@@ -7,6 +7,7 @@ require_relative 'item_attribute_sets'
|
|
7
7
|
require_relative 'images'
|
8
8
|
require_relative 'inventories'
|
9
9
|
require_relative 'orders'
|
10
|
+
require_relative 'price_levels'
|
10
11
|
require_relative 'sales'
|
11
12
|
require_relative 'shops'
|
12
13
|
require_relative 'special_orders'
|
@@ -28,6 +29,7 @@ module Lightspeed
|
|
28
29
|
:ItemAttributeSets,
|
29
30
|
:Items,
|
30
31
|
:Orders,
|
32
|
+
:PriceLevels,
|
31
33
|
:Sales,
|
32
34
|
:Shops,
|
33
35
|
:SpecialOrders,
|
data/lib/lightspeed/client.rb
CHANGED
@@ -6,11 +6,13 @@ require_relative 'request_throttler'
|
|
6
6
|
|
7
7
|
module Lightspeed
|
8
8
|
class Client
|
9
|
-
attr_accessor :
|
9
|
+
attr_accessor :throttler
|
10
10
|
|
11
|
-
def initialize(oauth_token: nil)
|
12
|
-
@
|
11
|
+
def initialize(oauth_token_holder: nil, oauth_token: nil)
|
12
|
+
@oauth_token_holder = oauth_token_holder
|
13
13
|
@throttler = Lightspeed::RequestThrottler.new
|
14
|
+
|
15
|
+
raise "Passing an oauth token is no longer supported. Pass a token holder instead." if oauth_token
|
14
16
|
end
|
15
17
|
|
16
18
|
# Returns a list of accounts that you have access to.
|
@@ -18,14 +20,6 @@ module Lightspeed
|
|
18
20
|
@accounts ||= Lightspeed::Accounts.new(context: self)
|
19
21
|
end
|
20
22
|
|
21
|
-
def load_json(json)
|
22
|
-
data = JSON.parse(json)
|
23
|
-
Array.wrap(data).map do |resource|
|
24
|
-
resource = resource_class.new(context: self, attributes: resource)
|
25
|
-
@resources[resource.id] = resource
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
23
|
def get(**args)
|
30
24
|
perform_request(args.merge(method: :get))
|
31
25
|
end
|
@@ -42,6 +36,14 @@ module Lightspeed
|
|
42
36
|
perform_request(args.merge(method: :delete))
|
43
37
|
end
|
44
38
|
|
39
|
+
def oauth_token
|
40
|
+
@oauth_token_holder.oauth_token
|
41
|
+
end
|
42
|
+
|
43
|
+
def refresh_oauth_token
|
44
|
+
@oauth_token_holder.refresh_oauth_token
|
45
|
+
end
|
46
|
+
|
45
47
|
private
|
46
48
|
|
47
49
|
def perform_request(**args)
|
@@ -51,6 +53,5 @@ module Lightspeed
|
|
51
53
|
def request **args
|
52
54
|
Lightspeed::Request.new(self, **args)
|
53
55
|
end
|
54
|
-
|
55
56
|
end
|
56
57
|
end
|
@@ -1,7 +1,5 @@
|
|
1
1
|
require 'active_support/core_ext/string'
|
2
2
|
require 'active_support/core_ext/array/wrap'
|
3
|
-
require 'active_support/json'
|
4
|
-
require 'active_support/core_ext/object/json'
|
5
3
|
|
6
4
|
module Lightspeed
|
7
5
|
class Collection
|
@@ -22,10 +20,6 @@ module Lightspeed
|
|
22
20
|
@resources = {}
|
23
21
|
end
|
24
22
|
|
25
|
-
def load_json(json)
|
26
|
-
instantiate(JSON.parse(json))
|
27
|
-
end
|
28
|
-
|
29
23
|
def client
|
30
24
|
return context if context.is_a?(Lightspeed::Client)
|
31
25
|
account.client
|
@@ -94,11 +88,11 @@ module Lightspeed
|
|
94
88
|
end
|
95
89
|
|
96
90
|
def create(attributes = {})
|
97
|
-
instantiate(post(body: attributes
|
91
|
+
instantiate(post(body: Yajl::Encoder.encode(attributes))).first
|
98
92
|
end
|
99
93
|
|
100
94
|
def update(id, attributes = {})
|
101
|
-
instantiate(put(id, body: attributes
|
95
|
+
instantiate(put(id, body: Yajl::Encoder.encode(attributes))).first
|
102
96
|
end
|
103
97
|
|
104
98
|
def destroy(id)
|
@@ -125,14 +119,14 @@ module Lightspeed
|
|
125
119
|
"#<#{self.class.name} API#{base_path}>"
|
126
120
|
end
|
127
121
|
|
128
|
-
def as_json
|
122
|
+
def as_json
|
129
123
|
return if all_loaded.empty?
|
130
|
-
{ resource_name => all_loaded.as_json
|
124
|
+
{ resource_name => all_loaded.as_json }
|
131
125
|
end
|
132
126
|
alias_method :to_h, :as_json
|
133
127
|
|
134
|
-
def to_json
|
135
|
-
|
128
|
+
def to_json
|
129
|
+
Yajl::Encoder.encode(as_json)
|
136
130
|
end
|
137
131
|
|
138
132
|
def page(n, per_page: PER_PAGE, params: {})
|
data/lib/lightspeed/error.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
module Lightspeed
|
2
2
|
class Error < Exception
|
3
|
-
class BadRequest <
|
4
|
-
class Unauthorized <
|
5
|
-
class
|
6
|
-
class
|
7
|
-
class
|
3
|
+
class BadRequest < Lightspeed::Error; end # 400
|
4
|
+
class Unauthorized < Lightspeed::Error; end # 401
|
5
|
+
class NotAuthorized < Lightspeed::Error; end # 403
|
6
|
+
class NotFound < Lightspeed::Error; end # 404
|
7
|
+
class InternalServerError < Lightspeed::Error; end # 500
|
8
|
+
class Throttled < Lightspeed::Error; end # 503
|
8
9
|
end
|
9
10
|
end
|
data/lib/lightspeed/prices.rb
CHANGED
data/lib/lightspeed/request.rb
CHANGED
@@ -34,10 +34,15 @@ module Lightspeed
|
|
34
34
|
@raw_request = request_class.new(uri)
|
35
35
|
@raw_request.body = body if body
|
36
36
|
@raw_request.set_form_data(@params) if @params && @method != :get
|
37
|
-
@
|
37
|
+
@client = client
|
38
|
+
set_authorization_header
|
38
39
|
end
|
39
40
|
|
40
|
-
def
|
41
|
+
def set_authorization_header
|
42
|
+
@raw_request["Authorization"] = "Bearer #{@client.oauth_token}" if @client.oauth_token
|
43
|
+
end
|
44
|
+
|
45
|
+
def perform_raw
|
41
46
|
response = @http.request(raw_request)
|
42
47
|
extract_rate_limits(response)
|
43
48
|
if response.code == "200"
|
@@ -45,14 +50,22 @@ module Lightspeed
|
|
45
50
|
else
|
46
51
|
handle_error(response)
|
47
52
|
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def perform
|
56
|
+
perform_raw
|
48
57
|
rescue Lightspeed::Error::Throttled
|
49
58
|
retry_throttled_request
|
59
|
+
rescue Lightspeed::Error::Unauthorized
|
60
|
+
@client.refresh_oauth_token
|
61
|
+
set_authorization_header
|
62
|
+
perform_raw
|
50
63
|
end
|
51
64
|
|
52
65
|
private
|
53
66
|
|
54
67
|
def handle_success(response)
|
55
|
-
json =
|
68
|
+
json = Yajl::Parser.parse(response.body)
|
56
69
|
pp json if self.class.verbose?
|
57
70
|
json
|
58
71
|
end
|
@@ -64,10 +77,11 @@ module Lightspeed
|
|
64
77
|
end
|
65
78
|
|
66
79
|
def handle_error(response)
|
67
|
-
data =
|
80
|
+
data = Yajl::Parser.parse(response.body)
|
68
81
|
error = case response.code.to_s
|
69
82
|
when '400' then Lightspeed::Error::BadRequest
|
70
83
|
when '401' then Lightspeed::Error::Unauthorized
|
84
|
+
when '403' then Lightspeed::Error::NotAuthorized
|
71
85
|
when '404' then Lightspeed::Error::NotFound
|
72
86
|
when '429' then Lightspeed::Error::Throttled
|
73
87
|
when /5../ then Lightspeed::Error::InternalServerError
|
data/lib/lightspeed/resource.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
require 'bigdecimal'
|
2
2
|
require 'active_support/core_ext/string'
|
3
3
|
require 'active_support/core_ext/hash/slice'
|
4
|
-
require 'active_support/json'
|
5
|
-
require 'active_support/core_ext/object/json'
|
6
4
|
|
7
5
|
require_relative 'collection'
|
8
6
|
|
@@ -74,7 +72,7 @@ module Lightspeed
|
|
74
72
|
end
|
75
73
|
|
76
74
|
def update(attributes = {})
|
77
|
-
self.attributes = put(body: attributes
|
75
|
+
self.attributes = put(body: Yajl::Encoder.encode(attributes))[resource_name]
|
78
76
|
end
|
79
77
|
|
80
78
|
def destroy
|
@@ -115,12 +113,12 @@ module Lightspeed
|
|
115
113
|
end
|
116
114
|
|
117
115
|
|
118
|
-
def to_json
|
119
|
-
|
116
|
+
def to_json
|
117
|
+
Yajl::Encoder.encode(as_json)
|
120
118
|
end
|
121
119
|
|
122
|
-
def as_json
|
123
|
-
fields_to_h.merge(relationships_to_h).reject { |_, v| v.nil? || v == {} }
|
120
|
+
def as_json
|
121
|
+
fields_to_h.merge(relationships_to_h).reject { |_, v| v.nil? || v == {} }
|
124
122
|
end
|
125
123
|
alias_method :to_h, :as_json
|
126
124
|
|
data/lib/lightspeed/version.rb
CHANGED
data/lib/lightspeed_pos.rb
CHANGED
data/lightspeed_pos.gemspec
CHANGED
@@ -19,13 +19,14 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
spec.license = "MIT"
|
21
21
|
|
22
|
-
spec.add_dependency "activesupport"
|
22
|
+
spec.add_dependency "activesupport"
|
23
|
+
spec.add_dependency "yajl-ruby"
|
23
24
|
|
24
|
-
spec.add_development_dependency "bundler"
|
25
|
-
spec.add_development_dependency "rake"
|
26
|
-
spec.add_development_dependency "rspec"
|
27
|
-
spec.add_development_dependency "webmock"
|
28
|
-
spec.add_development_dependency "vcr"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency "rspec"
|
28
|
+
spec.add_development_dependency "webmock"
|
29
|
+
spec.add_development_dependency "vcr"
|
29
30
|
spec.add_development_dependency "rubocop"
|
30
31
|
spec.add_development_dependency "dotenv"
|
31
32
|
spec.add_development_dependency "pry"
|
data/script/buildkite
CHANGED
@@ -3,9 +3,22 @@
|
|
3
3
|
set -e
|
4
4
|
set -x
|
5
5
|
|
6
|
+
AWS_ACCOUNT='847437976396'
|
7
|
+
REGION='us-west-2'
|
8
|
+
REGISTRY="${AWS_ACCOUNT}.dkr.ecr.${REGION}.amazonaws.com"
|
9
|
+
REPOSITORY='teg-ci'
|
10
|
+
TAG='ci' # change this if you have pushed an image with a new tag
|
11
|
+
IMAGE="${REGISTRY}/${REPOSITORY}:${TAG}"
|
12
|
+
|
6
13
|
set
|
7
14
|
echo $PWD
|
8
15
|
|
9
16
|
REAL_CORES=`cat /proc/cpuinfo | grep "core id" | sort | uniq | wc -l`
|
10
17
|
|
11
|
-
|
18
|
+
# Pull image if we don't have a locally cached version
|
19
|
+
if ! docker images "$IMAGE" | grep --quiet "$IMAGE"; then
|
20
|
+
eval $(aws --region "$REGION" ecr get-login)
|
21
|
+
docker pull "$IMAGE"
|
22
|
+
fi
|
23
|
+
|
24
|
+
docker run --rm=true -e "PARALLEL_TEST_PROCESSORS=$REAL_CORES" -v $PWD:/source -v ~/.buildbox/be-bundle-cache:/cache -v /tmp/ramdisk:/tmp/ramdisk -t "$IMAGE" /source/script/docker_tests
|
metadata
CHANGED
@@ -1,99 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lightspeed_pos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Bigg
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-10-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: yajl-ruby
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: bundler
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
30
44
|
requirements:
|
31
|
-
- - "
|
45
|
+
- - ">="
|
32
46
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
47
|
+
version: '0'
|
34
48
|
type: :development
|
35
49
|
prerelease: false
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
37
51
|
requirements:
|
38
|
-
- - "
|
52
|
+
- - ">="
|
39
53
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: rake
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
|
-
- - "
|
59
|
+
- - ">="
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
61
|
+
version: '0'
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
|
-
- - "
|
66
|
+
- - ">="
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rspec
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
58
72
|
requirements:
|
59
|
-
- -
|
73
|
+
- - ">="
|
60
74
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
75
|
+
version: '0'
|
62
76
|
type: :development
|
63
77
|
prerelease: false
|
64
78
|
version_requirements: !ruby/object:Gem::Requirement
|
65
79
|
requirements:
|
66
|
-
- -
|
80
|
+
- - ">="
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: webmock
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
72
86
|
requirements:
|
73
|
-
- -
|
87
|
+
- - ">="
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: '0'
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- -
|
94
|
+
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
96
|
+
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: vcr
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
|
-
- -
|
101
|
+
- - ">="
|
88
102
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
103
|
+
version: '0'
|
90
104
|
type: :development
|
91
105
|
prerelease: false
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
93
107
|
requirements:
|
94
|
-
- -
|
108
|
+
- - ">="
|
95
109
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
110
|
+
version: '0'
|
97
111
|
- !ruby/object:Gem::Dependency
|
98
112
|
name: rubocop
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -174,6 +188,8 @@ files:
|
|
174
188
|
- lib/lightspeed/items.rb
|
175
189
|
- lib/lightspeed/order.rb
|
176
190
|
- lib/lightspeed/orders.rb
|
191
|
+
- lib/lightspeed/price_level.rb
|
192
|
+
- lib/lightspeed/price_levels.rb
|
177
193
|
- lib/lightspeed/prices.rb
|
178
194
|
- lib/lightspeed/request.rb
|
179
195
|
- lib/lightspeed/request_throttler.rb
|
@@ -213,7 +229,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
213
229
|
version: '0'
|
214
230
|
requirements: []
|
215
231
|
rubyforge_project:
|
216
|
-
rubygems_version: 2.
|
232
|
+
rubygems_version: 2.6.14
|
217
233
|
signing_key:
|
218
234
|
specification_version: 4
|
219
235
|
summary: A gem for interacting with Lightspeed's Point of Sale system
|