apidae 1.2.0 → 1.2.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2ec3c909a4d3a0cf9b9312db0b7f94e5a58c42d2
4
- data.tar.gz: 3c7ce15d9d02a27d97567f4da56e3634068fcb23
3
+ metadata.gz: ff6394e1f32776f2d275a0b448ceb968c493967b
4
+ data.tar.gz: 679a63b9dc98ea90c3a5491c59ab86ccf144c6e2
5
5
  SHA512:
6
- metadata.gz: 2959dc04c3a7763578402a35a219a7bdb5888e114288343c654cba7d4a8e4d57b5cdceaf39a3de1ecf292c22d89a11186dfb05bc27f04108ac5cea5b2557c79a
7
- data.tar.gz: 4b6dc11085319946637ac528feafdff08d66e4a1f80276734919f26960a51b5404787461bf22a461f8ff7abee2cc36df068a576b4eeec514164e2ea2655313f9
6
+ metadata.gz: 3ee076bdd66bdf41487cd6be15d7ac4239724e004ff1304835f8c362f6b4f681d94681d289b3cb227f6dcae20ec02c7990338f9f4260d9a429a97bfc00e148ed
7
+ data.tar.gz: c2a9f335d0ec0bdcd58f639024431d1d78388c7c21140da2ab523bf72c520bc83d243f28ce26ef216bbc61e1e566893a4964a065bc31e27ee268695b9996aaa5
@@ -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
@@ -63,7 +61,8 @@ module Apidae
63
61
  def refresh
64
62
  referrer = (session.delete(:referrer) || objects_url)
65
63
  begin
66
- if @obj && @obj.selections.first.add_or_refresh_obj(@obj.apidae_id)
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
 
@@ -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
@@ -10,7 +10,7 @@ module Apidae
10
10
  end
11
11
 
12
12
  def self.import(refs_json)
13
- locales = Rails.application.config.respond_to?(:apidae_locales) ? Rails.application.config.apidae_locales : [DEFAULT_LOCALE]
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)
@@ -83,14 +87,14 @@ 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
- def add_or_refresh_obj(apidae_obj_id)
92
- if apidae_project
93
- res = api_object(apidae_obj_id)
95
+ def add_or_refresh_obj(apidae_obj_id, fields = ["@all"])
96
+ if valid_api?
97
+ res = api_object(apidae_obj_id, fields)
94
98
  if res[:results] && res[:results].length == 1
95
99
  obj_data = res[:results].first.deep_symbolize_keys
96
100
  add_or_refresh(obj_data)
@@ -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.2.0"
2
+ VERSION = "1.2.5"
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.2.0
4
+ version: 1.2.5
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-09 00:00:00.000000000 Z
11
+ date: 2020-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails