Module: Recras
- Included in:
- Booking, Combination, CombinationItem, ContactForm, ContactFormField, Itinerary, Person
- Defined in:
- lib/recras.rb,
lib/recras/api.rb,
lib/recras/client.rb,
lib/recras/person.rb,
lib/recras/booking.rb,
lib/recras/version.rb,
lib/recras/itinerary.rb,
lib/recras/combination.rb,
lib/recras/contact_form.rb,
lib/recras/combination_item.rb,
lib/recras/contact_form_field.rb
Defined Under Namespace
Modules: Config Classes: Api, Booking, Client, Combination, CombinationItem, ContactForm, ContactFormField, Itinerary, Person
Constant Summary collapse
- API_VERSION =
2- VERSION =
"0.1.5"
Class Method Summary collapse
-
.make_request(endpoint, body: {}, http_method: :get, client: nil) ⇒ Object
communicates with the server and returns either: - an object (Person, Booking) - an error - a json object.
-
.object_mappings ⇒ Object
this method maps the recras API objects to the names used by this gem.
- .parse_json(json: nil, endpoint: nil, client: nil) ⇒ Object
- .url ⇒ Object
-
.version ⇒ Object
returns the version number.
Instance Method Summary collapse
-
#new_from_json(json) ⇒ Object
initialize a new Person from given JSON.
Class Method Details
.make_request(endpoint, body: {}, http_method: :get, client: nil) ⇒ Object
communicates with the server and returns either:
-
an object (Person, Booking)
-
an error
-
a json object
112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/recras.rb', line 112 def self.make_request(endpoint, body: {}, http_method: :get, client: nil) url = "#{client.host}/api#{Recras::API_VERSION}/#{endpoint}" auth = client ? {username: client.username, password: client.password} : nil if http_method && http_method.to_s == 'post' response = HTTParty.post(url, basic_auth: auth, body: body) else response = HTTParty.get(url, basic_auth: auth, body: body) end json = response.parsed_response return json end |
.object_mappings ⇒ Object
this method maps the recras API objects to the names used by this gem
30 31 32 |
# File 'lib/recras.rb', line 30 def self.object_mappings [["personeel", Person], ["arrangement", Combination], ["contactformulier", ContactForm], ["velden", ContactFormField], ["booking", Booking]] end |
.parse_json(json: nil, endpoint: nil, client: nil) ⇒ Object
86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/recras.rb', line 86 def self.parse_json(json: nil, endpoint: nil, client: nil) if json.is_a?(Hash) && json["error"] if json["message"] raise RecrasError.new(self), json["message"] else raise RecrasError.new(self), json["error"]["message"] end else Recras.object_mappings.each do |key,klass| if endpoint.match(key) # puts "Making new #{klass.name} with data: #{json}" obj = klass.new_from_json(json) if client obj.client = client end return obj end end raise RecrasError.new(self), "Unknwon object '#{endpoint}'" end end |
.url ⇒ Object
34 35 36 |
# File 'lib/recras.rb', line 34 def self.url "https://demo.recras.nl" end |
.version ⇒ Object
returns the version number
24 25 26 |
# File 'lib/recras.rb', line 24 def self.version VERSION end |
Instance Method Details
#new_from_json(json) ⇒ Object
initialize a new Person from given JSON.
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/recras.rb', line 39 def new_from_json(json) params = {} # set each attribute based on the mapping self.attribute_mapping.each do |o,n| # if o is a string, parse it if n.is_a?(String) # check if data type is specified (using @@ symbol) if n.include?("@@") if n.split("@@").last.downcase == 'time' data = Time.new(n.split("@@").first) elsif n.split("@@").last.downcase == 'float' data = n.split("@@").first.to_f else data = n.split("@@").first end params[n.split("@@").first] = data else # puts "parsing value: #{n} => #{json[o]}" params[n] = json[o.to_s] # puts "parsed value (#{params[n]})" end # assign boolean value elsif [FalseClass, TrueClass].include?(n.class) # puts "Parsing boolean value: #{n} = #{json[o]}" params[n] = json[o] # puts "#{n} => #{o}" # else, o is a class. Call the 'parse_children' method on it else # puts "n is a #{n.class.name}" # loop through all the children (for example: 'regels' on 'arrangementen') if json[o] children = [] for item in json[o] children << n.new_from_json(item) end params[n.plural_name] = children end end end params['json'] = json self.new(params) end |