apidae 1.1.2 → 1.2.4
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 +21 -12
- data/app/models/apidae/apidae_data_parser.rb +16 -15
- data/app/models/apidae/obj.rb +1 -1
- data/app/models/apidae/selection.rb +10 -5
- data/lib/apidae/version.rb +1 -1
- data/test/dummy/log/development.log +2 -0
- 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: e45899b8d14f77793f2dc9d928f2c2aa6eba0dad
|
4
|
+
data.tar.gz: 3123ee0afa071eea4db09c3484de7916be2c6529
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '059806981d7ed7c469a45cda41072dceb8384d1cc5943089f42e766378a444d516a2e728d48e0335eea1da411673053e296ed6cf3c4cf309f4c9f45ccbb2faaf'
|
7
|
+
data.tar.gz: fde56d7ce57fef6fc0b984cfba695e80e22d63b52d4b258807edabedb3952f2ca5adbcca3510512445a4a90e4361f54c51142318a836e2f6cb8ad0db880d914d
|
@@ -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
|
@@ -62,9 +60,20 @@ module Apidae
|
|
62
60
|
|
63
61
|
def refresh
|
64
62
|
referrer = (session.delete(:referrer) || objects_url)
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
begin
|
64
|
+
sel = @obj.selections.find {|s| s.valid_api?}
|
65
|
+
if sel && sel.add_or_refresh_obj(@obj.apidae_id)
|
66
|
+
redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
|
67
|
+
else
|
68
|
+
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
|
69
|
+
end
|
70
|
+
rescue OpenURI::HTTPError => err
|
71
|
+
logger.error("Failed to refresh obj : #{@obj.apidae_id}")
|
72
|
+
logger.error("Error is : #{err}")
|
73
|
+
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet. Veuillez vérifier que le projet Apidae comporte une clé API valide."
|
74
|
+
rescue Exception => ex
|
75
|
+
logger.error("Failed to refresh obj : #{@obj.apidae_id}")
|
76
|
+
logger.error("Error is : #{err}")
|
68
77
|
redirect_to referrer, alert: "Une erreur s'est produite lors de la mise à jour de l'objet."
|
69
78
|
end
|
70
79
|
end
|
@@ -167,37 +167,37 @@ module Apidae
|
|
167
167
|
case c[:type][:id]
|
168
168
|
when PHONE, ALT_PHONE
|
169
169
|
contact_details[:telephone] ||= {}
|
170
|
-
contact_details[:telephone][c[:identifiant]] = c[:coordonnees][:fr]
|
170
|
+
contact_details[:telephone][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
171
171
|
when EMAIL
|
172
172
|
contact_details[:email] ||= {}
|
173
|
-
contact_details[:email][c[:identifiant]] = c[:coordonnees][:fr]
|
173
|
+
contact_details[:email][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
174
174
|
when WEBSITE
|
175
175
|
contact_details[:website] ||= {}
|
176
|
-
contact_details[:website][c[:identifiant]] = c[:coordonnees][:fr]
|
176
|
+
contact_details[:website][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
177
177
|
when GOOGLE
|
178
178
|
contact_details[:google] ||= {}
|
179
|
-
contact_details[:google][c[:identifiant]] = c[:coordonnees][:fr]
|
179
|
+
contact_details[:google][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
180
180
|
when FACEBOOK
|
181
181
|
contact_details[:facebook] ||= {}
|
182
|
-
contact_details[:facebook][c[:identifiant]] = c[:coordonnees][:fr]
|
182
|
+
contact_details[:facebook][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
183
183
|
when TWITTER
|
184
184
|
contact_details[:twitter] ||= {}
|
185
|
-
contact_details[:twitter][c[:identifiant]] = c[:coordonnees][:fr]
|
185
|
+
contact_details[:twitter][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
186
186
|
when YELP
|
187
187
|
contact_details[:yelp] ||= {}
|
188
|
-
contact_details[:yelp][c[:identifiant]] = c[:coordonnees][:fr]
|
188
|
+
contact_details[:yelp][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
189
189
|
when TRIP_ADVISOR
|
190
190
|
contact_details[:trip_advisor] ||= {}
|
191
|
-
contact_details[:trip_advisor][c[:identifiant]] = c[:coordonnees][:fr]
|
191
|
+
contact_details[:trip_advisor][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
192
192
|
when FAX
|
193
193
|
contact_details[:fax] ||= {}
|
194
|
-
contact_details[:fax][c[:identifiant]] = c[:coordonnees][:fr]
|
194
|
+
contact_details[:fax][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
195
195
|
when MOBILE_WEBSITE
|
196
196
|
contact_details[:mobile_website] ||= {}
|
197
|
-
contact_details[:mobile_website][c[:identifiant]] = c[:coordonnees][:fr]
|
197
|
+
contact_details[:mobile_website][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
198
198
|
when SHORTY_URL
|
199
199
|
contact_details[:shorty_url] ||= {}
|
200
|
-
contact_details[:shorty_url][c[:identifiant]] = c[:coordonnees][:fr]
|
200
|
+
contact_details[:shorty_url][c[:identifiant]] = {value: c[:coordonnees][:fr], description: c.dig(:observation, :libelleFr)}
|
201
201
|
else
|
202
202
|
end
|
203
203
|
end
|
@@ -245,13 +245,14 @@ module Apidae
|
|
245
245
|
def self.parse_rates(rates_hash, *locales)
|
246
246
|
if rates_hash
|
247
247
|
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)}
|
248
|
+
values = rates_hash[:periodes].blank? ? [] : rates_hash[:periodes].map {|p| build_rate(p, *locales)}
|
249
249
|
methods = rates_hash[:modesPaiement].blank? ? [] : rates_hash[:modesPaiement].map {|p| p[:id]}
|
250
250
|
{
|
251
251
|
rates_desc: desc, rates: values, payment_methods: methods,
|
252
252
|
rates_desc_mode: rates_hash[:tarifsEnClairGenerationMode] == 'AUTOMATIQUE' ? MODE_AUTO : MODE_MANUAL,
|
253
253
|
includes: node_value(rates_hash, :leTarifComprend, *locales),
|
254
|
-
excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales)
|
254
|
+
excludes: node_value(rates_hash, :leTarifNeComprendPas, *locales),
|
255
|
+
rates_extra: node_value(rates_hash, :complement, *locales)
|
255
256
|
}
|
256
257
|
end
|
257
258
|
end
|
@@ -346,10 +347,10 @@ module Apidae
|
|
346
347
|
|
347
348
|
private
|
348
349
|
|
349
|
-
def self.build_rate(rate_period)
|
350
|
+
def self.build_rate(rate_period, *locales)
|
350
351
|
{
|
351
352
|
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)}}
|
353
|
+
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
354
|
}
|
354
355
|
end
|
355
356
|
|
data/app/models/apidae/obj.rb
CHANGED
@@ -20,7 +20,7 @@ module Apidae
|
|
20
20
|
:mobile_website, :shorty_url, :contacts
|
21
21
|
store_accessor :location_data, :address, :place, :latitude, :longitude, :access, :territories, :environments
|
22
22
|
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
|
23
|
+
store_accessor :rates_data, :rates_desc, :rates_desc_mode, :rates, :payment_methods, :includes, :excludes, :rates_extra
|
24
24
|
store_accessor :service_data, :services, :equipments, :comfort, :activities, :challenged, :languages
|
25
25
|
store_accessor :booking_data, :booking_desc, :booking_entities
|
26
26
|
store_accessor :tags_data, :promo, :internal, :linked
|
@@ -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)
|
@@ -83,13 +87,13 @@ module Apidae
|
|
83
87
|
res
|
84
88
|
end
|
85
89
|
|
86
|
-
def api_object(apidae_obj_id)
|
87
|
-
query_args = build_args(OBJECTS_ENDPOINT, {obj_ids: [apidae_obj_id], fields:
|
90
|
+
def api_object(apidae_obj_id, fields = ["@all"])
|
91
|
+
query_args = build_args(OBJECTS_ENDPOINT, {obj_ids: [apidae_obj_id], fields: fields})
|
88
92
|
query_api(query_args, true, false)
|
89
93
|
end
|
90
94
|
|
91
95
|
def add_or_refresh_obj(apidae_obj_id)
|
92
|
-
if
|
96
|
+
if valid_api?
|
93
97
|
res = api_object(apidae_obj_id)
|
94
98
|
if res[:results] && res[:results].length == 1
|
95
99
|
obj_data = res[:results].first.deep_symbolize_keys
|
@@ -99,7 +103,7 @@ module Apidae
|
|
99
103
|
end
|
100
104
|
|
101
105
|
def add_or_refresh_objs(fields = ["@all"])
|
102
|
-
if
|
106
|
+
if valid_api?
|
103
107
|
res = api_objects({fields: fields})
|
104
108
|
if res[:results] && res[:results].length > 0
|
105
109
|
res[:results].each do |result|
|
@@ -116,8 +120,9 @@ module Apidae
|
|
116
120
|
obj = Obj.update_object(obj, obj_data, apidae_project.locales, apidae_project.versions)
|
117
121
|
else
|
118
122
|
obj = Obj.add_object(obj_data, apidae_project.locales, apidae_project.versions)
|
119
|
-
SelectionObject.create(apidae_selection_id: id, apidae_object_id: added_obj.id)
|
120
123
|
end
|
124
|
+
SelectionObject.create(apidae_selection_id: id, apidae_object_id: obj.id) unless objects.include?(obj)
|
125
|
+
|
121
126
|
if Rails.application.config.respond_to?(:apidae_obj_refresh_callback)
|
122
127
|
Rails.application.config.apidae_obj_refresh_callback.call(obj.apidae_id)
|
123
128
|
end
|
data/lib/apidae/version.rb
CHANGED
@@ -63,3 +63,5 @@ Migrating to AddLocalesDataToApidaeProjects (20190123214635)
|
|
63
63
|
[1m[35m (0.2ms)[0m [1m[35mCOMMIT[0m
|
64
64
|
[1m[35m (0.2ms)[0m [1m[34mSELECT pg_advisory_unlock(6140174353533887940)[0m
|
65
65
|
[1m[35m (0.2ms)[0m [1m[34mSELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC[0m
|
66
|
+
[1m[36mApidae::Obj Load (26.8ms)[0m [1m[34mSELECT apidae_id, COUNT(id) FROM "apidae_objs" WHERE "apidae_objs"."root_obj_id" IS NULL GROUP BY "apidae_objs"."apidae_id" HAVING (COUNT(id) > 1)[0m
|
67
|
+
[1m[36mApidae::Obj Load (2.4ms)[0m [1m[34mSELECT apidae_id, COUNT(id) FROM "apidae_objs" WHERE "apidae_objs"."root_obj_id" IS NULL GROUP BY "apidae_objs"."apidae_id" HAVING (COUNT(id) > 1)[0m
|
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.
|
4
|
+
version: 1.2.4
|
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-07-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|