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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b11e939316f83f92542ad8f9dd1d61d6a759b221
4
- data.tar.gz: b37d8f51dccc89e83c7f29e7ccb880025482646a
3
+ metadata.gz: f7f870ce44d951a04a1b73afa9c3b16a5a8ebdb9
4
+ data.tar.gz: e95f2475a72a05c59cbcab56863d77d316b4ffbc
5
5
  SHA512:
6
- metadata.gz: b6c8fd210ade09f620c897676c89dec75bde2cb94379a6acd69511aeaad495fc080eaad1d14fc0096834e79a7156870a495dde4600f245716b893af8b1458d20
7
- data.tar.gz: 3798b7eab1196ab9f2ff594a4d27d6930732894446d7c8fef0793be046f4a0b9bd5f3255a104528a1ff13a0fe1a2772b1843e1deb96dc8ad90bf2fe832d679a7
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
- 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
 
@@ -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
- @cached_versions ||= {}
115
- if @cached_versions[v].nil?
116
- @cached_versions[v] = versions.where(version: v).first
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
- 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)
@@ -88,9 +92,10 @@ module Apidae
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
+ # 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 apidae_project
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, :openings_desc, :rates_desc,
28
- :includes, :excludes, :extra, :booking_desc]
29
- ALL_FIELDS = LOCALIZED_FIELDS + [:theme_desc, :private_desc, :capacity, :telephone, :email, :website, :services,
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
@@ -1,3 +1,3 @@
1
1
  module Apidae
2
- VERSION = "1.2.2"
2
+ VERSION = "1.2.7"
3
3
  end
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.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-24 00:00:00.000000000 Z
11
+ date: 2020-11-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails