fantasticstay_api 0.1.0 → 0.1.2
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/Gemfile.lock +2 -0
- data/fantasticstay_api.gemspec +2 -0
- data/lib/fantasticstay_api/api.rb +7 -2
- data/lib/fantasticstay_api/client.rb +55 -33
- data/lib/fantasticstay_api/configuration.rb +1 -1
- data/lib/fantasticstay_api/version.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0a0159628ff5d6e47b19ff0cbcc1f206809c18bf01a85581c80ce448cc2d8cd
|
4
|
+
data.tar.gz: fc4aa632878fad907ddada639f09339d16d90db906c1bd4a2d1bb34a68cab3ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66c7a86db2f4e5bad774620f8c7f0eaa00af1e63ffffe357a3df59165507bf9e43446252b8a632c5a56da904c9be80a6cc40236919ca6b130d00f49fecd94f8f
|
7
|
+
data.tar.gz: ffdd16db301ead53334a991d423cf72714f6c19568d916b607e2304886ed785f76697adc459826fa79676159b0c5cb3ec4c807ba1f5367f0de3d196f75b4b9df
|
data/Gemfile.lock
CHANGED
@@ -2,6 +2,7 @@ PATH
|
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
4
|
fantasticstay_api (0.1.0)
|
5
|
+
api_cache (~> 0.3.0)
|
5
6
|
faraday (~> 1.3.0)
|
6
7
|
oj (~> 3.11)
|
7
8
|
|
@@ -10,6 +11,7 @@ GEM
|
|
10
11
|
specs:
|
11
12
|
addressable (2.7.0)
|
12
13
|
public_suffix (>= 2.0.2, < 5.0)
|
14
|
+
api_cache (0.3.0)
|
13
15
|
ast (2.4.2)
|
14
16
|
crack (0.4.5)
|
15
17
|
rexml
|
data/fantasticstay_api.gemspec
CHANGED
@@ -33,6 +33,8 @@ Gem::Specification.new do |spec|
|
|
33
33
|
# spec.add_dependency "example-gem", "~> 1.0"
|
34
34
|
spec.add_dependency 'faraday', '~> 1.3.0'
|
35
35
|
spec.add_dependency 'oj', '~> 3.11'
|
36
|
+
spec.add_dependency 'api_cache', '~> 0.3.0'
|
37
|
+
|
36
38
|
# spec.add_dependency 'dry-configurable', '~> 0.12.1'
|
37
39
|
|
38
40
|
# For more information and examples about making a new gem, checkout our
|
@@ -4,6 +4,8 @@ require_relative 'api_exceptions'
|
|
4
4
|
require_relative 'configuration'
|
5
5
|
require_relative 'constants'
|
6
6
|
require_relative 'http_status_codes'
|
7
|
+
require 'api_cache'
|
8
|
+
require 'digest/bubblebabble'
|
7
9
|
|
8
10
|
module FantasticstayApi
|
9
11
|
# Core class responsible for api interface operations
|
@@ -70,13 +72,16 @@ module FantasticstayApi
|
|
70
72
|
@client ||= Faraday.new(@api_endpoint) do |client|
|
71
73
|
client.request :url_encoded
|
72
74
|
client.adapter Faraday.default_adapter
|
75
|
+
client.headers['Content-Type'] = 'application/json'
|
73
76
|
client.headers['x-api-key'] = @api_token
|
74
77
|
client.response :logger, logger
|
75
78
|
end
|
76
79
|
end
|
77
80
|
|
78
|
-
def request(http_method:, endpoint:, params: {})
|
79
|
-
response =
|
81
|
+
def request(http_method:, endpoint:, params: {}, cache_ttl: 3600)
|
82
|
+
response = APICache.get(Digest::SHA256.bubblebabble(@api_token) + http_method.to_s + endpoint + params.to_s, cache: cache_ttl) do
|
83
|
+
client.public_send(http_method, endpoint, params)
|
84
|
+
end
|
80
85
|
parsed_response = Oj.load(response.body)
|
81
86
|
|
82
87
|
return parsed_response if response_successful?(response)
|
@@ -1,21 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'json'
|
3
4
|
require 'logger'
|
4
5
|
require_relative 'api'
|
5
6
|
|
6
7
|
module FantasticstayApi
|
7
8
|
# Main client class that implements communication with the API
|
9
|
+
# global_params:
|
10
|
+
# - include_related_objects: int 0-1 0
|
11
|
+
# - page: int positive 1
|
12
|
+
# - per_page: int positive 20
|
8
13
|
class Client < API
|
9
|
-
def listings
|
14
|
+
def listings(global_params = {})
|
10
15
|
response = request(
|
11
16
|
http_method: :get,
|
12
|
-
endpoint: 'listings'
|
17
|
+
endpoint: 'listings',
|
18
|
+
params: global_params
|
13
19
|
)
|
14
|
-
process_response(response
|
20
|
+
process_response(response)
|
15
21
|
end
|
16
22
|
|
17
23
|
# FantasticstayApi::Client.new.calendar(38859, '2022-01-01', '2022-07-31')
|
18
|
-
def calendar(listing_id, start_date = nil, end_date = nil, filters = {})
|
24
|
+
def calendar(listing_id, start_date = nil, end_date = nil, filters = {}, global_params = {})
|
19
25
|
response = request(
|
20
26
|
http_method: :get,
|
21
27
|
endpoint: 'calendar',
|
@@ -23,65 +29,81 @@ module FantasticstayApi
|
|
23
29
|
listing_id: listing_id,
|
24
30
|
start_date: start_date,
|
25
31
|
end_date: end_date,
|
26
|
-
filters: filters
|
27
|
-
}
|
32
|
+
filters: filters.to_json
|
33
|
+
}.merge(global_params)
|
28
34
|
)
|
29
|
-
process_response(response
|
35
|
+
process_response(response)
|
36
|
+
end
|
37
|
+
|
38
|
+
def listing(listing_id, global_params = {})
|
39
|
+
response = request(
|
40
|
+
http_method: :get,
|
41
|
+
endpoint: "listings/#{listing_id}",
|
42
|
+
params: global_params
|
43
|
+
)
|
44
|
+
process_response(response)
|
30
45
|
end
|
31
46
|
|
32
47
|
# FantasticstayApi::Client.new.reservations(38859)
|
33
|
-
def reservations(listing_id, filters = {},
|
48
|
+
def reservations(listing_id, filters = [], sort = { order: 'checkIn', direction: 'desc' }, global_params = {})
|
34
49
|
response = request(
|
35
50
|
http_method: :get,
|
36
51
|
endpoint: 'reservations',
|
37
52
|
params: {
|
38
53
|
listing_id: listing_id,
|
39
|
-
filters: filters,
|
40
|
-
sort: sort
|
41
|
-
|
54
|
+
filters: filters.to_json,
|
55
|
+
sort: sort[:order],
|
56
|
+
direction: sort[:direction]
|
57
|
+
}.merge!(global_params),
|
58
|
+
cache_ttl: 3600 * 24
|
42
59
|
)
|
43
|
-
process_response(response
|
60
|
+
process_response(response)
|
44
61
|
end
|
45
62
|
|
46
|
-
def reservation(reservation_id,
|
63
|
+
def reservation(reservation_id, global_params = {})
|
47
64
|
response = request(
|
48
65
|
http_method: :get,
|
49
|
-
endpoint:
|
66
|
+
endpoint: "reservations/#{reservation_id}",
|
67
|
+
params: global_params
|
50
68
|
)
|
51
|
-
|
69
|
+
process_response(response)
|
52
70
|
end
|
53
71
|
|
54
|
-
def guest(guest_id,
|
72
|
+
def guest(guest_id, global_params = {})
|
55
73
|
response = request(
|
56
74
|
http_method: :get,
|
57
|
-
endpoint:
|
75
|
+
endpoint: "guests/#{guest_id}",
|
76
|
+
params: global_params,
|
77
|
+
cache_ttl: 3600 * 24
|
58
78
|
)
|
59
|
-
|
79
|
+
process_response(response)
|
60
80
|
end
|
61
81
|
|
62
|
-
def integrations
|
82
|
+
def integrations(global_params = {})
|
63
83
|
response = request(
|
64
84
|
http_method: :get,
|
65
|
-
endpoint: 'integrations'
|
85
|
+
endpoint: 'integrations',
|
86
|
+
params: global_params
|
66
87
|
)
|
67
|
-
process_response(response
|
88
|
+
process_response(response)
|
68
89
|
end
|
69
90
|
|
70
91
|
protected
|
71
92
|
|
72
|
-
def process_response(response
|
73
|
-
|
74
|
-
|
75
|
-
|
93
|
+
def process_response(response)
|
94
|
+
result = response
|
95
|
+
case result
|
96
|
+
when Hash
|
97
|
+
result.transform_keys!(&:to_sym)
|
98
|
+
result.values.each do |r|
|
99
|
+
process_response(r)
|
100
|
+
end
|
101
|
+
when Array
|
102
|
+
result.each do |r|
|
103
|
+
process_response(r)
|
104
|
+
end
|
76
105
|
end
|
77
|
-
|
78
|
-
{ model.to_sym => results, total: total }
|
79
|
-
end
|
80
|
-
|
81
|
-
def process_single(response, model = 'result')
|
82
|
-
result = response[model]
|
83
|
-
result.transform_keys!(&:to_sym)
|
84
|
-
{ model.to_sym => result }
|
106
|
+
result
|
85
107
|
end
|
86
108
|
end
|
87
109
|
end
|
@@ -9,7 +9,7 @@ module FantasticstayApi
|
|
9
9
|
property :follow_redirects, default: true
|
10
10
|
|
11
11
|
# The api endpoint used to connect to FantasticstayApi if none is set
|
12
|
-
property :endpoint, default: 'https://api.fsapp.io'
|
12
|
+
property :endpoint, default: 'https://api.fsapp.io/'
|
13
13
|
|
14
14
|
# The value sent in the http header for 'User-Agent' if none is set
|
15
15
|
property :user_agent, default: "FantasticstayApi API Ruby Gem #{FantasticstayApi::VERSION}"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fantasticstay_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dinis
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '3.11'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: api_cache
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.3.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.3.0
|
41
55
|
description: A gem that implements functions from the FS API available for its users.
|
42
56
|
email:
|
43
57
|
- dinis@lage.pw
|
@@ -80,7 +94,7 @@ metadata:
|
|
80
94
|
homepage_uri: https://github.com/dlage/fantasticstay_api_gem
|
81
95
|
source_code_uri: https://github.com/dlage/fantasticstay_api_gem
|
82
96
|
changelog_uri: https://github.com/dlage/fantasticstay_api_gem/blob/master/CHANGELOG.md
|
83
|
-
post_install_message:
|
97
|
+
post_install_message:
|
84
98
|
rdoc_options: []
|
85
99
|
require_paths:
|
86
100
|
- lib
|
@@ -95,8 +109,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
109
|
- !ruby/object:Gem::Version
|
96
110
|
version: '0'
|
97
111
|
requirements: []
|
98
|
-
rubygems_version: 3.
|
99
|
-
signing_key:
|
112
|
+
rubygems_version: 3.2.33
|
113
|
+
signing_key:
|
100
114
|
specification_version: 4
|
101
115
|
summary: FantasticStay API Wrapper.
|
102
116
|
test_files: []
|