lockme 0.4.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +25 -0
- data/examples/README.md +5 -0
- data/examples/basic.rb +27 -0
- data/lib/lockme/base.rb +26 -0
- data/lib/lockme/configuration.rb +4 -0
- data/lib/lockme/error.rb +3 -0
- data/lib/lockme/json_utils.rb +12 -1
- data/lib/lockme/request.rb +20 -12
- data/lib/lockme/reservation.rb +17 -12
- data/lib/lockme/room.rb +3 -0
- data/lib/lockme/test.rb +4 -0
- data/lib/lockme/version.rb +3 -1
- data/lib/lockme.rb +4 -1
- data/lockme.gemspec +1 -1
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 524261899efd42507740502d05f185f9acf04c0a
|
4
|
+
data.tar.gz: f92acf0789df28f6970379739e44dfff01b1a654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db3f67c37fc6332d6b1131983f4b0824bbc1b12ca40f032b6a6d28f355d806d8496fb58857ecbc2ec01db673a7f1e0e1d404092c404614c7bf76443c8d142d96
|
7
|
+
data.tar.gz: 581add854ee6105efa0810dd5ca7771d1faca895efbc905fb46350d81464ac05efeba22adb4badf720d82d7331c47fd8a1e19a4d082885348ec40daa87495367
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
AllCops:
|
2
|
+
Exclude:
|
3
|
+
- examples/*
|
4
|
+
- '*'
|
5
|
+
- bin/*
|
6
|
+
|
7
|
+
Style/StringLiterals:
|
8
|
+
Enabled: false
|
9
|
+
Style/StringLiteralsInInterpolation:
|
10
|
+
Enabled: false
|
11
|
+
Style/PreferredHashMethods:
|
12
|
+
EnforcedStyle: verbose
|
13
|
+
Style/NumericLiterals:
|
14
|
+
Exclude:
|
15
|
+
- test/*_test.rb
|
16
|
+
Metrics/BlockLength:
|
17
|
+
Exclude:
|
18
|
+
- test/*_test.rb
|
19
|
+
Style/FrozenStringLiteralComment:
|
20
|
+
Exclude:
|
21
|
+
- test/*_test.rb
|
22
|
+
Metrics/LineLength:
|
23
|
+
Exclude:
|
24
|
+
- test/*_test.rb
|
25
|
+
|
data/examples/README.md
ADDED
data/examples/basic.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# Find a reservation using an ID from LockMe. Returns an instance of Lockme::Reservation
|
2
|
+
Lockme::Reservation.find(lockme_id)
|
3
|
+
|
4
|
+
# Provide a hash of attributes expected by LockMe API
|
5
|
+
def to_lockme_hash
|
6
|
+
{
|
7
|
+
reservationid: lockme_id,
|
8
|
+
roomid: room_id,
|
9
|
+
date: start_at.strftime("%Y-%m-%d"),
|
10
|
+
hour: start_at.strftime("%H:%M:%S"),
|
11
|
+
people: 4,
|
12
|
+
pricer: '1',
|
13
|
+
price: '%.2f' % BigDecimal.new(price),
|
14
|
+
name: first_name,
|
15
|
+
surname: last_name,
|
16
|
+
email: email,
|
17
|
+
phone: phone,
|
18
|
+
comment: nil,
|
19
|
+
extid: id.to_s
|
20
|
+
}.compact
|
21
|
+
end
|
22
|
+
|
23
|
+
# Save or update a reservation. Returns an instance of Lockme::Reservation
|
24
|
+
Lockme::Reservation.new(to_lockme_hash).save
|
25
|
+
|
26
|
+
# Destroy a reservation. Returns `true` on success
|
27
|
+
Lockme::Reservation.new(reservationid: lockme_id).destroy
|
data/lib/lockme/base.rb
CHANGED
@@ -1,5 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Lockme
|
4
|
+
# Base class for all LockMe API objects
|
2
5
|
class Base
|
3
6
|
include JsonUtils
|
7
|
+
|
8
|
+
class << self; attr_reader :base_path end
|
9
|
+
|
10
|
+
# Check if object is persisted with Lockme
|
11
|
+
def persisted?
|
12
|
+
!id.nil?
|
13
|
+
end
|
14
|
+
|
15
|
+
def singular_path
|
16
|
+
self.class.singular_path(id)
|
17
|
+
end
|
18
|
+
|
19
|
+
def collection_path
|
20
|
+
self.class.collection_path
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.singular_path(id)
|
24
|
+
[base_path, id].join('/')
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.collection_path
|
28
|
+
base_path
|
29
|
+
end
|
4
30
|
end
|
5
31
|
end
|
data/lib/lockme/configuration.rb
CHANGED
data/lib/lockme/error.rb
CHANGED
data/lib/lockme/json_utils.rb
CHANGED
@@ -1,7 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
#:nodoc:
|
1
4
|
module Lockme
|
5
|
+
# Mixin providing JSON encoding method compatible with LockMe API
|
2
6
|
module JsonUtils
|
3
7
|
def to_json
|
4
|
-
@data.to_h.to_json.force_encoding('UTF-8')
|
8
|
+
utf_str = @data.to_h.to_json.force_encoding('UTF-8')
|
9
|
+
utf_str.each_codepoint.reduce(+'') do |str, codepoint|
|
10
|
+
str << if codepoint > 127
|
11
|
+
'\u' + codepoint.to_s(16).rjust(4, '0')
|
12
|
+
else
|
13
|
+
codepoint.chr
|
14
|
+
end
|
15
|
+
end
|
5
16
|
end
|
6
17
|
end
|
7
18
|
private_constant :JsonUtils
|
data/lib/lockme/request.rb
CHANGED
@@ -1,35 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Lockme
|
4
|
+
# API request module providing argument processing and signing
|
2
5
|
module SignedRequest
|
3
6
|
def self.perform(method, path, data = nil)
|
4
|
-
|
5
|
-
params = {
|
6
|
-
body: data,
|
7
|
-
headers: headers,
|
8
|
-
debug_output: Lockme.logger
|
9
|
-
}.delete_if {|k,v| k.nil? || v.nil? }
|
7
|
+
params = prepare_params(method, path, data)
|
10
8
|
|
11
9
|
resp = Request.send(method.downcase, path, params).parsed_response
|
12
|
-
if resp.is_a?(Hash) && resp
|
13
|
-
raise Lockme::Error
|
10
|
+
if resp.is_a?(Hash) && resp.has_key?('error')
|
11
|
+
raise Lockme::Error, resp['error']
|
14
12
|
end
|
15
13
|
resp
|
16
14
|
rescue JSON::ParserError
|
17
|
-
raise Lockme::Error
|
15
|
+
raise Lockme::Error, 'Invalid response from the server'
|
18
16
|
end
|
19
17
|
|
20
18
|
def self.signature(*args)
|
21
|
-
|
19
|
+
digest = Digest::SHA1.hexdigest([
|
22
20
|
*args,
|
23
21
|
Lockme.api_secret
|
24
22
|
].compact.join(''))
|
25
23
|
|
26
24
|
{
|
27
25
|
'Partner-Key' => Lockme.api_key,
|
28
|
-
'Signature' =>
|
26
|
+
'Signature' => digest
|
29
27
|
}
|
30
28
|
end
|
29
|
+
|
30
|
+
def self.prepare_params(method, path, data)
|
31
|
+
headers = signature(method.upcase, path.gsub(%r{^\/}, ''), data)
|
32
|
+
{
|
33
|
+
body: data,
|
34
|
+
headers: headers,
|
35
|
+
debug_output: Lockme.logger
|
36
|
+
}.delete_if { |key, val| key.nil? || val.nil? }
|
37
|
+
end
|
31
38
|
end
|
32
39
|
|
40
|
+
# HTTParty wrapper including some basic configuration
|
33
41
|
module Request
|
34
42
|
include ::HTTParty
|
35
43
|
|
@@ -37,7 +45,7 @@ module Lockme
|
|
37
45
|
'User-Agent' => 'Ruby.Lockme.Api',
|
38
46
|
'Accept' => 'application/json',
|
39
47
|
'Content-Type' => 'application/json'
|
40
|
-
}
|
48
|
+
}.freeze
|
41
49
|
API_VERSION = '1.1'
|
42
50
|
|
43
51
|
base_uri "https://lockme.pl/api/v#{API_VERSION}/"
|
data/lib/lockme/reservation.rb
CHANGED
@@ -1,11 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Lockme
|
4
|
+
# LockMe API reservation object
|
2
5
|
class Reservation < Lockme::Base
|
6
|
+
@base_path = '/reservation'
|
7
|
+
|
3
8
|
def initialize(args = {})
|
4
9
|
parse_lockme_json(args)
|
5
10
|
end
|
6
11
|
|
12
|
+
def id
|
13
|
+
reservationid
|
14
|
+
end
|
15
|
+
|
7
16
|
def self.find(lockme_id)
|
8
|
-
|
17
|
+
new(SignedRequest.perform("get", singular_path(lockme_id)))
|
9
18
|
end
|
10
19
|
|
11
20
|
def save
|
@@ -17,29 +26,25 @@ module Lockme
|
|
17
26
|
end
|
18
27
|
|
19
28
|
def destroy
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
# Check if object is persisted with Lockme
|
24
|
-
def persisted?
|
25
|
-
!@data.reservationid.nil?
|
29
|
+
SignedRequest.perform("delete", singular_path)
|
26
30
|
end
|
27
31
|
|
28
32
|
# Provide attribute accessors
|
29
|
-
def method_missing(method, *args)
|
33
|
+
def method_missing(method, *args)
|
30
34
|
@data.send method, *args
|
31
35
|
end
|
32
36
|
|
33
37
|
def create
|
34
|
-
|
35
|
-
|
38
|
+
resp = SignedRequest.perform("put", collection_path, to_json)
|
39
|
+
@data.reservationid = resp
|
40
|
+
self
|
36
41
|
end
|
37
42
|
private :create
|
38
43
|
|
39
44
|
def update
|
40
|
-
resp =
|
45
|
+
resp = SignedRequest.perform("post", singular_path, to_json)
|
41
46
|
parse_lockme_json(resp)
|
42
|
-
|
47
|
+
self
|
43
48
|
end
|
44
49
|
private :update
|
45
50
|
|
data/lib/lockme/room.rb
CHANGED
data/lib/lockme/test.rb
CHANGED
data/lib/lockme/version.rb
CHANGED
data/lib/lockme.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'forwardable'
|
4
|
+
require 'httparty'
|
3
5
|
|
4
6
|
require 'lockme/configuration'
|
5
7
|
require 'lockme/json_utils'
|
@@ -11,6 +13,7 @@ require 'lockme/reservation'
|
|
11
13
|
require 'lockme/room'
|
12
14
|
require 'lockme/version'
|
13
15
|
|
16
|
+
#:nodoc:
|
14
17
|
module Lockme
|
15
18
|
extend Configuration
|
16
19
|
extend Test
|
data/lockme.gemspec
CHANGED
@@ -21,8 +21,8 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.14"
|
24
|
-
spec.add_development_dependency "rake", "~> 10.0"
|
25
24
|
spec.add_development_dependency "minitest", "~> 5.0"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "simplecov"
|
27
27
|
spec.add_dependency "httparty", "~> 0.15.6"
|
28
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lockme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Szyndel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-01-
|
11
|
+
date: 2018-01-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -25,33 +25,33 @@ dependencies:
|
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.14'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.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
|
-
version: '
|
40
|
+
version: '5.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '10.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '10.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: simplecov
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -88,6 +88,7 @@ extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
90
|
- ".gitignore"
|
91
|
+
- ".rubocop.yml"
|
91
92
|
- ".travis.yml"
|
92
93
|
- Gemfile
|
93
94
|
- LICENSE.txt
|
@@ -95,6 +96,8 @@ files:
|
|
95
96
|
- Rakefile
|
96
97
|
- bin/console
|
97
98
|
- bin/setup
|
99
|
+
- examples/README.md
|
100
|
+
- examples/basic.rb
|
98
101
|
- lib/lockme.rb
|
99
102
|
- lib/lockme/base.rb
|
100
103
|
- lib/lockme/configuration.rb
|