apidae 1.2.2 → 1.2.7
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/app/controllers/apidae/objects_controller.rb +9 -10
- data/app/models/apidae/apidae_data_parser.rb +6 -4
- data/app/models/apidae/obj.rb +12 -5
- data/app/models/apidae/reference.rb +1 -1
- data/app/models/apidae/selection.rb +10 -4
- data/config/initializers/constants.rb +6 -3
- data/lib/apidae/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f7f870ce44d951a04a1b73afa9c3b16a5a8ebdb9
|
|
4
|
+
data.tar.gz: e95f2475a72a05c59cbcab56863d77d316b4ffbc
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9cf4871c99377ff9e1dbb875099a5b75279177fb1964a18f57363083c38af1f0b5bce1e8f880103486652b5bb417da7dbebf6b2d2602b537c2432d1bf801bc62
|
|
7
|
+
data.tar.gz: 2896159f983e04f3710a82a465c75a5a2080336bfa6f4266c0ec10b6a7e46f6a2929a87ff410db44fb700ecfa8ccdfbd09e664e15ce8ae628c58b19c4cb43369
|
|
@@ -34,17 +34,15 @@ module Apidae
|
|
|
34
34
|
def create
|
|
35
35
|
@obj = Obj.new(object_params)
|
|
36
36
|
if Obj.find_by_apidae_id(@obj.apidae_id)
|
|
37
|
-
redirect_to objects_url, alert: "Cet objet est déjà importé."
|
|
38
|
-
|
|
39
|
-
selection =
|
|
40
|
-
if @obj.save && selection.add_or_refresh_obj(@obj.apidae_id)
|
|
41
|
-
redirect_to objects_url, notice: "L'objet a bien été importé"
|
|
42
|
-
else
|
|
43
|
-
flash[:alert] = "Une erreur s'est produite lors de l'import de l'objet."
|
|
44
|
-
render :new
|
|
37
|
+
redirect_to objects_url, alert: "Cet objet est déjà importé." and return
|
|
38
|
+
elsif !params[:selection_apidae_id].blank?
|
|
39
|
+
selection = Selection.find_by_apidae_id(params[:selection_apidae_id])
|
|
40
|
+
if selection && selection.valid_api? && @obj.save && selection.add_or_refresh_obj(@obj.apidae_id)
|
|
41
|
+
redirect_to objects_url, notice: "L'objet a bien été importé" and return
|
|
45
42
|
end
|
|
46
43
|
end
|
|
47
|
-
|
|
44
|
+
flash[:alert] = "Une erreur s'est produite lors de l'import de l'objet."
|
|
45
|
+
render :new
|
|
48
46
|
end
|
|
49
47
|
|
|
50
48
|
def update
|
|
@@ -63,7 +61,8 @@ module Apidae
|
|
|
63
61
|
def refresh
|
|
64
62
|
referrer = (session.delete(:referrer) || objects_url)
|
|
65
63
|
begin
|
|
66
|
-
|
|
64
|
+
sel = @obj.selections.find {|s| s.valid_api?}
|
|
65
|
+
if sel && sel.add_or_refresh_obj(@obj.apidae_id)
|
|
67
66
|
redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
|
|
68
67
|
else
|
|
69
68
|
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
|
|
@@ -236,6 +236,7 @@ module Apidae
|
|
|
236
236
|
openings_desc: node_value(openings_hash, :periodeEnClair, *locales),
|
|
237
237
|
openings_desc_mode: openings_hash[:periodeEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
|
|
238
238
|
openings: build_openings(openings_hash, *locales),
|
|
239
|
+
all_year_long: openings_hash[:ouvertTouteLAnnee] == 'OUVERT_TOUTE_L_ANNEE' ? 'true' : 'false',
|
|
239
240
|
time_periods: lists_ids(openings_hash[:indicationsPeriode]),
|
|
240
241
|
openings_extra: lists_ids(openings_hash[:ouverturesComplementaires])
|
|
241
242
|
}
|
|
@@ -245,13 +246,14 @@ module Apidae
|
|
|
245
246
|
def self.parse_rates(rates_hash, *locales)
|
|
246
247
|
if rates_hash
|
|
247
248
|
desc = rates_hash[:gratuit] ? {DEFAULT_LOCALE => 'gratuit'} : node_value(rates_hash, :tarifsEnClair, *locales)
|
|
248
|
-
values = rates_hash[:periodes].blank? ? [] : rates_hash[:periodes].map {|p| build_rate(p)}
|
|
249
|
+
values = rates_hash[:periodes].blank? ? [] : rates_hash[:periodes].map {|p| build_rate(p, *locales)}
|
|
249
250
|
methods = rates_hash[:modesPaiement].blank? ? [] : rates_hash[:modesPaiement].map {|p| p[:id]}
|
|
250
251
|
{
|
|
251
252
|
rates_desc: desc, rates: values, payment_methods: methods,
|
|
252
253
|
rates_desc_mode: rates_hash[:tarifsEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
|
|
253
254
|
includes: node_value(rates_hash, :leTarifComprend, *locales),
|
|
254
|
-
excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales)
|
|
255
|
+
excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales),
|
|
256
|
+
rates_extra: node_value(rates_hash, :complement, *locales)
|
|
255
257
|
}
|
|
256
258
|
end
|
|
257
259
|
end
|
|
@@ -346,10 +348,10 @@ module Apidae
|
|
|
346
348
|
|
|
347
349
|
private
|
|
348
350
|
|
|
349
|
-
def self.build_rate(rate_period)
|
|
351
|
+
def self.build_rate(rate_period, *locales)
|
|
350
352
|
{
|
|
351
353
|
id: rate_period[:identifiant], start_date: rate_period[:dateDebut], end_date: rate_period[:dateFin],
|
|
352
|
-
values: rate_period[:tarifs].blank? ? [] : rate_period[:tarifs].map {|t| {min: t[:minimum], max: t[:maximum], type: t[:type][:id], details: node_value(t, :precisionTarif)}}
|
|
354
|
+
values: rate_period[:tarifs].blank? ? [] : rate_period[:tarifs].map {|t| {min: t[:minimum], max: t[:maximum], type: t[:type][:id], details: node_value(t, :precisionTarif, *locales)}}
|
|
353
355
|
}
|
|
354
356
|
end
|
|
355
357
|
|
data/app/models/apidae/obj.rb
CHANGED
|
@@ -7,6 +7,7 @@ module Apidae
|
|
|
7
7
|
|
|
8
8
|
attr_accessor :locale
|
|
9
9
|
attr_accessor :obj_version
|
|
10
|
+
attr_accessor :obj_versions
|
|
10
11
|
|
|
11
12
|
store_accessor :title_data, :title
|
|
12
13
|
store_accessor :owner_data, :owner_name, :owner_id
|
|
@@ -20,7 +21,7 @@ module Apidae
|
|
|
20
21
|
:mobile_website, :shorty_url, :contacts
|
|
21
22
|
store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
|
|
22
23
|
store_accessor :openings_data, :openings_desc, :openings_desc_mode, :openings, :time_periods, :openings_extra
|
|
23
|
-
store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes
|
|
24
|
+
store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes, :rates_extra
|
|
24
25
|
store_accessor :service_data, :services, :equipments, :comfort, :activities, :challenged, :languages
|
|
25
26
|
store_accessor :booking_data, :booking_desc, :booking_entities
|
|
26
27
|
store_accessor :tags_data, :promo, :internal, :linked
|
|
@@ -100,6 +101,7 @@ module Apidae
|
|
|
100
101
|
after_initialize do
|
|
101
102
|
@locale = DEFAULT_LOCALE
|
|
102
103
|
@obj_version = DEFAULT_VERSION
|
|
104
|
+
@obj_versions = {}
|
|
103
105
|
end
|
|
104
106
|
|
|
105
107
|
def root_obj
|
|
@@ -111,11 +113,15 @@ module Apidae
|
|
|
111
113
|
end
|
|
112
114
|
|
|
113
115
|
def in_version(v)
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
116
|
+
if v == DEFAULT_VERSION && root_obj_id.nil?
|
|
117
|
+
@obj_version = DEFAULT_VERSION
|
|
118
|
+
self
|
|
119
|
+
else
|
|
120
|
+
if @obj_versions[v].nil?
|
|
121
|
+
@obj_versions[v] = versions.where(version: v).first
|
|
122
|
+
end
|
|
123
|
+
@obj_versions[v]
|
|
117
124
|
end
|
|
118
|
-
@cached_versions[v]
|
|
119
125
|
end
|
|
120
126
|
|
|
121
127
|
def in_locale(l)
|
|
@@ -164,6 +170,7 @@ module Apidae
|
|
|
164
170
|
apidae_obj
|
|
165
171
|
end
|
|
166
172
|
|
|
173
|
+
# Note : overrides existing fields (not a merge)
|
|
167
174
|
def self.populate_fields(apidae_obj, object_data, locales)
|
|
168
175
|
type_fields = TYPES_DATA[object_data[:type]]
|
|
169
176
|
apidae_obj.last_update = DateTime.parse(object_data[:gestion][:dateModification]) unless object_data[:gestion].blank?
|
|
@@ -10,7 +10,7 @@ module Apidae
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def self.import(refs_json)
|
|
13
|
-
|
|
13
|
+
locales = Rails.application.config.respond_to?(:apidae_locales) ? Rails.application.config.apidae_locales : [DEFAULT_LOCALE]
|
|
14
14
|
locales_map = Hash[locales.map {|loc| ["libelle#{loc.camelize.gsub('-', '')}".to_sym, loc]}]
|
|
15
15
|
refs_hashes = JSON.parse(refs_json, symbolize_names: true)
|
|
16
16
|
if refs_hashes.length != where("apidae_type != ?", INTERNAL).count
|
|
@@ -50,6 +50,10 @@ module Apidae
|
|
|
50
50
|
objects.where(where_clause).count
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
+
def valid_api?
|
|
54
|
+
apidae_project && !apidae_project.api_key.blank? && !apidae_project.apidae_id.blank?
|
|
55
|
+
end
|
|
56
|
+
|
|
53
57
|
def api_results(opts = {})
|
|
54
58
|
key = cache_key(:results)
|
|
55
59
|
res = $apidae_cache.read(key)
|
|
@@ -88,9 +92,10 @@ module Apidae
|
|
|
88
92
|
query_api(query_args, true, false)
|
|
89
93
|
end
|
|
90
94
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
95
|
+
# Note : WARNING - updated obj will only contain the provided fields
|
|
96
|
+
def add_or_refresh_obj(apidae_obj_id, fields = ["@all"])
|
|
97
|
+
if valid_api?
|
|
98
|
+
res = api_object(apidae_obj_id, fields)
|
|
94
99
|
if res[:results] && res[:results].length == 1
|
|
95
100
|
obj_data = res[:results].first.deep_symbolize_keys
|
|
96
101
|
add_or_refresh(obj_data)
|
|
@@ -98,8 +103,9 @@ module Apidae
|
|
|
98
103
|
end
|
|
99
104
|
end
|
|
100
105
|
|
|
106
|
+
# Note : WARNING - updated objs will only contain the provided fields
|
|
101
107
|
def add_or_refresh_objs(fields = ["@all"])
|
|
102
|
-
if
|
|
108
|
+
if valid_api?
|
|
103
109
|
res = api_objects({fields: fields})
|
|
104
110
|
if res[:results] && res[:results].length > 0
|
|
105
111
|
res[:results].each do |result|
|
|
@@ -24,8 +24,11 @@ module Apidae
|
|
|
24
24
|
ALL_VERSIONS = [STANDARD_VERSION, WINTER_VERSION, SUMMER_VERSION, CHALLENGED_VERSION, BUSINESS_VERSION,
|
|
25
25
|
GROUPS_VERSION, ACTIVITIES_VERSION]
|
|
26
26
|
|
|
27
|
-
LOCALIZED_FIELDS = [:title, :short_desc, :long_desc, :pictures, :attachments,
|
|
28
|
-
:includes, :excludes, :extra, :booking_desc]
|
|
29
|
-
ALL_FIELDS = LOCALIZED_FIELDS + [:theme_desc, :private_desc, :capacity, :telephone, :email, :website,
|
|
27
|
+
LOCALIZED_FIELDS = [:title, :short_desc, :long_desc, :pictures, :attachments,
|
|
28
|
+
:openings_desc, :rates_desc, :includes, :excludes, :extra, :booking_desc]
|
|
29
|
+
ALL_FIELDS = LOCALIZED_FIELDS + [:theme_desc, :private_desc, :capacity, :telephone, :email, :website,
|
|
30
|
+
:google, :facebook, :twitter, :yelp, :trip_advisor, :fax, :mobile_website, :shorty_url,
|
|
31
|
+
:openings, :rates, :services, :payment_methods, :categories, :themes, :labels, :chains,
|
|
32
|
+
:classification, :challenged, :environments, :languages, :products, :animals,
|
|
30
33
|
:equipments, :comfort, :activities, :promo, :internal, :linked]
|
|
31
34
|
end
|
data/lib/apidae/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: apidae
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jean-Baptiste Vilain
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-06
|
|
11
|
+
date: 2020-11-06 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|