apidae 1.1.2 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aecffb4dbac3b6d3b2c73f08d0ca3647c8d4c807
4
- data.tar.gz: f55420c1dc448d89bd4819950c150f6e08d73624
3
+ metadata.gz: e45899b8d14f77793f2dc9d928f2c2aa6eba0dad
4
+ data.tar.gz: 3123ee0afa071eea4db09c3484de7916be2c6529
5
5
  SHA512:
6
- metadata.gz: 44ce804f3dd69a73d049c4c3b093cfee288eae63a348507bd76c14925bb3ec2fd14ad11dcb7faf46fb5b4760b4e6fecb3b999c9ebf2912cf846c6859e105ccac
7
- data.tar.gz: 518f6e0bbfbe3b176a375da2133349955a550570f1e6aa3654554519f1fa7dbafe24b611b779671bff0bf7208d1bfbf525c945546376b7b57026a55f110d490f
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
- else
39
- selection = params[:selection_apidae_id].blank? ? Selection.last : Selection.find_by_apidae_id(params[:selection_apidae_id])
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
- if @obj && @obj.selections.first.add_or_refresh_obj(@obj.apidae_id)
66
- redirect_to referrer, notice: "L'objet touristique a bien été mis à jour."
67
- else
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
 
@@ -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: ["@all"]})
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 apidae_project
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 apidae_project
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
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "1.1.2"
2
+ VERSION = "1.2.4"
3
3
  end
@@ -63,3 +63,5 @@ Migrating to AddLocalesDataToApidaeProjects (20190123214635)
63
63
   (0.2ms) COMMIT
64
64
   (0.2ms) SELECT pg_advisory_unlock(6140174353533887940)
65
65
   (0.2ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
66
+ Apidae::Obj Load (26.8ms) SELECT 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)
67
+ Apidae::Obj Load (2.4ms) SELECT 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)
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.1.2
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-03 00:00:00.000000000 Z
11
+ date: 2020-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails