Dendreo 1.0.5 → 1.1.1

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
- SHA1:
3
- metadata.gz: f6acd8aec6aad15be181d8c7562c4ceff992d21e
4
- data.tar.gz: 976cd232b037d758edb5e149b5e0699f4129cfbb
2
+ SHA256:
3
+ metadata.gz: 80deec797bcba45bc51d99def32ab84d15796a83e07e1219b6c379702d788ee5
4
+ data.tar.gz: ba2118cdb3d05e7f0f6e875634eeffeb2354ed98355ef0df5326d6d1a1081b76
5
5
  SHA512:
6
- metadata.gz: 67f98ad4219e4d8510d497d2c27bd764e78417bc96a655159aff17a8f5a36948c26c462b08bd6d3c05238027d9ef9e3f66b65157afce1084bb02b1798dc14b97
7
- data.tar.gz: 1783a737d7be365b669e48a8f0e9d104c00594cccfb65e06532959940de67557efebc444927baf570904dc5730c650ae1ad0e4c32fbe8b808fe50cc4c346f502
6
+ metadata.gz: 6d28f4d2e4b3410911cc932d471b797509872bb3f8d1b1cb08dacec9187d31f43ac1a06c72069e5d20ab1f249c4a464331f32d42cdc935e5950a3ee79062c84a
7
+ data.tar.gz: 145b8f63c3d285a33b6c2a7c98b39e423ee1d184237ec43fc9c4e0f7dd7350c160a2c95237970c9d6b39c020959fae3c9d60c8093bf07a861c829e3a726adf8d
data/.gitignore CHANGED
@@ -10,3 +10,5 @@
10
10
 
11
11
  # rspec failure tracking
12
12
  .rspec_status
13
+ .byebug_history
14
+ .idea/
@@ -0,0 +1 @@
1
+ 2.7.1
Binary file
data/README.md CHANGED
@@ -25,7 +25,7 @@ Ou installez la gem vous-même:
25
25
  Instanciez votre API.
26
26
 
27
27
  ```ruby
28
- dendreo = Dendreo::API.new("https://pro.dendreo.com/masociété/api", "MaCleApi")
28
+ dendreo = Dendreo::API.new('https://pro.dendreo.com/masociété/api', 'MaCleApi')
29
29
  ```
30
30
  Attention à bien vérifier que votre url à bien ce format:
31
31
 
@@ -37,67 +37,94 @@ Attention à bien vérifier que votre url à bien ce format:
37
37
 
38
38
  Je vous invite à bien lire la documentation de l'api ici => https://developers.dendreo.com/
39
39
 
40
- La gem utilise la "method_missing", il vous suffira donc de récupérer le nom de la resource que vous souhaitez récupérer, ajouter ou modifier (hé oui c'est possible!).
40
+ La gem utilise la 'method_missing', il vous suffira donc de récupérer le nom de la resource que vous souhaitez récupérer, ajouter ou modifier.
41
41
 
42
42
  Exemple:
43
43
 
44
44
  Il faut donc piocher le nom de la ressource tel quel est dans l'url de la requête API.
45
45
 
46
- -Catégories de module. => "categories_module"
47
- -Catégories de produits => "categories_produit"
48
- -Modules/Produits => "modules"
49
- -Formateurs => "formateurs"
50
- -Entreprises => "entreprises"
51
- -Contacts => "contacts"
52
- -Particuliers => "contacts" avec la variable "particulier" = 1 sinon ajout d'un contact
53
- -Participants => "participants"
54
- -Etapes => "etapes"
55
- -Centres de formation => "centres_de_formation"
56
- -Salles de formation => "salles_de_formation"
57
- -Factures => "factures"
58
- -Actions de formation => "actions_de_formation"
59
- -Créneaux => "creneaux"
60
- -Inscription d'un participant => "laps"
61
- -Programmation d'un module => "lams"
62
- -Mails => "emails"
46
+ - Catégories de module. => 'categories_module'
47
+ - Catégories de produits => 'categories_produit'
48
+ - Modules/Produits => 'modules'
49
+ - Formateurs => 'formateurs'
50
+ - Entreprises => 'entreprises'
51
+ - Contacts => 'contacts'
52
+ - Particuliers => 'contacts' avec la variable 'particulier' = 1 sinon ajout d'un contact
53
+ - Participants => 'participants'
54
+ - Etapes => 'etapes'
55
+ - Centres de formation => 'centres_de_formation'
56
+ - Salles de formation => 'salles_de_formation'
57
+ - Factures => 'factures'
58
+ - Actions de formation => 'actions_de_formation'
59
+ - Créneaux => 'creneaux'
60
+ - Inscription d'un participant => 'laps'
61
+ - Programmation d'un module => 'lams'
62
+ - Mails => 'emails'
63
+
64
+
65
+ Arguments:
63
66
 
67
+ ```ruby
68
+ # methode http
69
+ { method: :get }
70
+
71
+ # toute information qui doit passer par l'url
72
+ { url_data: { id: 123456 } }
73
+
74
+ # toute information que vous souhaitez modifier/créer
75
+ { form_data: { email: 'dendreo@test.com' } }
76
+
77
+ # exemple d'utilisation
78
+ dendreo = Dendreo::API.new('https://pro.dendreo.com/masociété/api', 'MaCleApi')
79
+
80
+ dendreo.participants(
81
+ method: :post,
82
+ url_data: {
83
+ id_participant: 1345
84
+ },
85
+ form_data: {
86
+ nom: 'nouveau nom',
87
+ civilite: 'M.',
88
+ id_add: 2,
89
+ }
90
+ )
91
+
92
+ ```
64
93
 
65
94
  Pour les participants ( GET https://pro.dendreo.com/demo/api/participants.php?)
66
95
 
67
96
  ```ruby
68
97
  # Renvoi tous les particpants
69
- dendreo.participants(method: "get")
98
+ dendreo.participants(method: 'get')
70
99
 
71
100
  # Renvoi le particpant qui a l'id en question
72
- dendreo.participants(method: "get", datas: {id_participant: 1345})
101
+ dendreo.participants(method: 'get', url_data: { id_participant: 1345 })
73
102
 
74
103
  # Renvoi le ou les particpants qui ont l'email en question
75
- dendreo.participants(method: "get", datas: {email: "mon_email@gmail.com"})
104
+ dendreo.participants(method: 'get', url_data: { email: 'mon_email@gmail.com' })
76
105
 
77
106
  #Renvoi le ou les particpants qui ont le commentaire en question
78
- dendreo.participants(method: "get", datas: {search: "Un joli nom ou ce que vous souhaitez id, email, commentaires etc.."})
107
+ dendreo.participants(method: 'get', url_data: { search: 'Un nom ou ce que vous souhaitez id, email, commentaires etc..' })
79
108
  ```
80
109
 
81
110
  Ajouter ou modifier un participant.
82
111
 
83
- Attention, pour modifier un participant déjà existant, il vous suffit de remplacer "id_participant" par "id" tout court et d'ajouter un "id_add" qui contiendra un id d'administrateur.
112
+ Attention, pour modifier un participant déjà existant, il vous suffit de remplacer 'id_participant' par 'id' tout court et d'ajouter un 'id_add' qui contiendra un id d'administrateur.
84
113
 
85
114
  Faites appel au support dendreo pour plus d'informations, ils sont très réactifs equipe@dendreo.com .
86
115
 
87
116
  ```ruby
88
117
  # Créer un participant
89
- dendreo.participants(method: "post", datas: {nom: "nouveau nom", prenom: "toto", civilite: "M.", email: "toto@gmail.com", id_add: 2})
118
+ dendreo.participants(method: 'post', form_data: { nom: 'nouveau nom', prenom: 'toto', civilite: 'M.', email: 'toto@gmail.com', id_add: 2 })
90
119
 
91
- # Modifier un participant existant (Attention, bien remplacer "id" par "id_participant" et ajouter un "id_add" pour
120
+ # Modifier un participant existant (Attention, bien remplacer 'id' par 'id_participant' et ajouter un 'id_add' pour
92
121
  # s'identifier en admin sur la mise à jour.)
93
- dendreo.participants(method: "post", datas: {id_participant: 1345, nom: "nouveau nom", civilite: "M.", id_add: 2})
122
+ dendreo.participants(method: 'post', url_data: { id_participant: 1345 }, form_data: { nom: 'nouveau nom', civilite: 'M.', id_add: 2 })
94
123
 
95
- # Supprimer un participant (attention, il n'y a pas de methode "delete" sûr tous les endpoints)
96
- dendreo.participants(method: "delete", datas: {id_participant: 1345})
124
+ # Supprimer un participant (attention, il n'y a pas de methode 'delete' sûr tous les endpoints)
125
+ dendreo.participants(method: 'delete', url_data: { id_participant: 1345 })
97
126
 
98
127
  ```
99
- Cet exemple fonctionne sur toutes les ressources sauf les "particuliers" que l'on peut créer mais pas modifier.
100
-
101
128
 
102
129
  ## Contribution
103
130
 
@@ -30,8 +30,9 @@ Gem::Specification.new do |spec|
30
30
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
31
  spec.require_paths = ["lib"]
32
32
 
33
- spec.add_development_dependency "bundler", "~> 1.15"
34
- spec.add_development_dependency "rake", "~> 10.0"
35
- spec.add_development_dependency "rspec", "~> 3.0"
36
- spec.add_development_dependency "rest-client"
33
+ spec.add_development_dependency 'bundler'
34
+ spec.add_development_dependency 'rake'
35
+ spec.add_development_dependency 'rspec'
36
+ spec.add_development_dependency 'rest-client'
37
+ spec.add_development_dependency 'byebug'
37
38
  end
@@ -1,48 +1,55 @@
1
- require "dendreo/version"
2
- require "json"
3
- require 'net/http'
4
- require "rest-client"
1
+ # frozen_string_literal: true
2
+
3
+ require 'byebug'
4
+ require 'dendreo/version'
5
+ require 'dendreo/requests/error'
6
+ require 'dendreo/requests/url'
7
+ require 'dendreo/request'
8
+ require 'json'
9
+ require 'rest-client'
10
+
5
11
  module Dendreo
6
12
  class API
7
- attr_accessor :url
8
- attr_accessor :api_key
13
+ attr_accessor :url, :api_key, :errors, :result
9
14
 
10
15
  def initialize(url, api_key)
11
- @url = url #exemple = https://pro.dendreo.com/my_company/api
16
+ @url = url # https://pro.dendreo.com/my_company/api
12
17
  @api_key = api_key
18
+ @request = Request.new(base_url: @url, api_key: @api_key)
19
+ @errors = @request.errors
20
+ @result = nil
21
+ handle_errors
13
22
  end
14
23
 
15
24
  def method_missing(method_name, *args)
16
- method_name_string = method_name.to_s
17
- request_method = args.first[:method]
18
- datas = args.any? ? args.first[:datas] : {}
19
- base_url = "#{@url}/#{method_name_string}.php?key=#{@api_key}"
20
- case request_method
21
- when "get"
22
- send_it(:get, "#{base_url}#{format_args_to_url(datas || {})}")
23
- when "post"
24
- send_it(:post, "#{base_url}", datas)
25
- when "delete"
26
- send_it(:delete, "#{base_url}#{format_args_to_url(datas)}")
27
- else
28
- raise "Méthode inconnue '#{request_method}' !"
29
- end
25
+ @errors = []
26
+ @result = @request.call(
27
+ http_method: args.first[:method],
28
+ endpoint: method_name,
29
+ args: args.first,
30
+ )
31
+ handle_errors
32
+ @result
30
33
  end
31
34
 
32
35
  private
33
36
 
34
- def send_it(http_method, url, options = {})
35
- hsh = {url: url, method: http_method }
36
- hsh.merge!(payload: options) if http_method == :post
37
- response_json(RestClient::Request.execute(hsh))
38
- end
37
+ def handle_errors
38
+ handle_init_errors
39
+ @errors += @request.errors
40
+ return if @errors.empty?
39
41
 
40
- def format_args_to_url(args = {})
41
- args.any? ? args.map{|k, v| k == args.keys.first ? "&#{k}=#{v}" : "#{k}=#{v}" }.join("&") : ""
42
+ raise Requests::Error.new(@errors.map(&:message).join(', '))
42
43
  end
43
44
 
44
- def response_json(result)
45
- JSON.parse(result == "" ? "[{}]" : result)
45
+ def handle_init_errors
46
+ errors << Requests::Error.new(
47
+ 'Veuillez renseigner une url ex: https://pro.dendreo.com/my_company/api'
48
+ ) if @url.nil? or @url == ''
49
+
50
+ errors << Requests::Error.new(
51
+ 'Veuillez renseigner une clé API'
52
+ ) if @api_key.nil? or @api_key == ''
46
53
  end
47
54
  end
48
55
  end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dendreo
4
+ class Request
5
+ attr_accessor :errors, :data
6
+
7
+ def initialize(base_url:, api_key:)
8
+ @url = base_url
9
+ @api_key = api_key
10
+ @errors = []
11
+ @form_data = nil
12
+ @url_data = nil
13
+ @request = nil
14
+ end
15
+
16
+ def call(http_method:, endpoint:, args: {})
17
+ update_data(args)
18
+ handle_call_errors(http_method, endpoint, args)
19
+ execute(
20
+ http_method,
21
+ Requests::Url.new(@url, endpoint, @url_data, @api_key).complete_url,
22
+ @form_data,
23
+ )
24
+ end
25
+
26
+ private
27
+
28
+ def update_data(args)
29
+ @form_data = args[:form_data] || []
30
+ @url_data = args[:url_data] || []
31
+ end
32
+
33
+ def execute(http_method, url, options = {})
34
+ @request = RestClient::Request.execute(
35
+ url: url,
36
+ method: http_method,
37
+ payload: options,
38
+ )
39
+ response_json(@request)
40
+ rescue SocketError => e
41
+ errors << Requests::Error.new('Veuillez renseigner une url ex: https://pro.dendreo.com/my_company/api')
42
+ rescue RestClient::ExceptionWithResponse => e
43
+ response_json(e.response)
44
+ end
45
+
46
+ def response_json(result)
47
+ JSON.parse(result == '' ? '[{}]' : result)
48
+ end
49
+
50
+ def handle_call_errors(http_method, endpoint, args = {})
51
+ errors << Requests::Error.new(
52
+ 'Veuillez renseigner une méthode de requête ex: :post, :get, :delete'
53
+ ) unless http_method
54
+
55
+ errors << Requests::Error.new(
56
+ 'Veuillez renseigner une méthode de requête ex: :participants'
57
+ ) unless endpoint
58
+
59
+ errors << Requests::Error.new(
60
+ 'La data est vide sur une requête :post'
61
+ ) if http_method == :post && args[:form_data].empty?
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dendreo
4
+ module Requests
5
+ class Error < StandardError
6
+ def initialize(msg)
7
+ super(msg)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_String_literal: true
2
+
3
+ module Dendreo
4
+ module Requests
5
+ class Url
6
+ attr_reader :complete_url
7
+
8
+ def initialize(url, endpoint, url_data, api_key)
9
+ @endpoint = endpoint.to_s
10
+ @url_data = url_data
11
+ @url = url
12
+ @api_key = api_key
13
+ @complete_url = build_complete_url
14
+ end
15
+
16
+ private
17
+
18
+ def build_data_url
19
+ @url_data.map do |k, v|
20
+ "#{k}=#{v}"
21
+ end.join('&')
22
+ end
23
+
24
+ def build_url
25
+ return '' if @url_data&.empty?
26
+
27
+ build_data_url
28
+ end
29
+
30
+ def build_complete_url
31
+ "#{@url}/#{@endpoint}.php?key=#{@api_key}&#{build_url}"
32
+ end
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Dendreo
2
- VERSION = "1.0.5"
2
+ VERSION = '1.1.1'
3
3
  end
metadata CHANGED
@@ -1,57 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: Dendreo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ronan louarn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-31 00:00:00.000000000 Z
11
+ date: 2020-10-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.15'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.15'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rest-client
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  description: Simple gem for Dendreo CRM API
70
84
  email:
71
85
  - ronan33720@hotmail.Com
@@ -75,12 +89,14 @@ extra_rdoc_files: []
75
89
  files:
76
90
  - ".gitignore"
77
91
  - ".rspec"
92
+ - ".ruby-version"
78
93
  - ".travis.yml"
79
94
  - Dendreo-1.0.0.gem
80
95
  - Dendreo-1.0.1.gem
81
96
  - Dendreo-1.0.2.gem
82
97
  - Dendreo-1.0.3.gem
83
98
  - Dendreo-1.0.4.gem
99
+ - Dendreo-1.1.0.gem
84
100
  - Gemfile
85
101
  - LICENSE.txt
86
102
  - README.md
@@ -89,6 +105,9 @@ files:
89
105
  - bin/setup
90
106
  - dendreo.gemspec
91
107
  - lib/dendreo.rb
108
+ - lib/dendreo/request.rb
109
+ - lib/dendreo/requests/error.rb
110
+ - lib/dendreo/requests/url.rb
92
111
  - lib/dendreo/version.rb
93
112
  homepage: http://lr-dev.fr
94
113
  licenses:
@@ -110,8 +129,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
110
129
  - !ruby/object:Gem::Version
111
130
  version: '0'
112
131
  requirements: []
113
- rubyforge_project:
114
- rubygems_version: 2.6.11
132
+ rubygems_version: 3.1.2
115
133
  signing_key:
116
134
  specification_version: 4
117
135
  summary: Simple gem for Dendreo CRM API