apidae 1.2.2 → 1.2.7
Sign up to get free protection for your applications and to get access to all the features.
- 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
|