edools_sdk 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: df9bf12b8cdeb83a7fa6535f06755ccd0d94c416
4
+ data.tar.gz: f377db745565bace218cb3271f34b221dfd61f52
5
+ SHA512:
6
+ metadata.gz: 43b640df7e14a6ae25bac2193b45270240a81af5b2fcc4e62883b866a0de5f659d893956a9afe743319145e9fa12c119ce0fb36312d35cbe285ec987f77630f0
7
+ data.tar.gz: 01471b24d3e25437c3e71f24f0f388d2f50afc89cfd2ee162b0f7042fee3767f54768ac73c93ca2e99b6e7ef4b978d1bb2375c0586c9ac7744d334ac0772289c
data/lib/edools_sdk.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'edools_sdk/edools_base'
2
+ require 'edools_sdk/school'
3
+ require 'edools_sdk/course'
4
+ require 'edools_sdk/product'
5
+ require 'edools_sdk/student'
6
+ require 'edools_sdk/invitation'
7
+ require 'yaml'
8
+
9
+ file_exists = File.file?('config/edools.yml')
10
+
11
+ if ENV['edools_token'].nil? && file_exists
12
+ config = YAML.load_file('config/edools.yml')
13
+ ENV['edools_token'] = config['token']
14
+ elsif ENV['edools_token'].nil? && !file_exists
15
+ puts "WARNING: edools token not configurated!"
16
+ end
@@ -0,0 +1,188 @@
1
+ module EdoolsSdk
2
+ # Course class
3
+ class Course < EdoolsBase
4
+ attr_accessor(
5
+ :id,
6
+ :name,
7
+ :description,
8
+ :image_url,
9
+ :duration,
10
+ :ready,
11
+ :path_ids,
12
+ :forum_section_ids,
13
+ :linear_requirements,
14
+ :library_resource,
15
+ :created_at,
16
+ :updated_at
17
+ )
18
+
19
+ COURSE_URL = 'https://core.myedools.info/api/courses'
20
+ private_constant :COURSE_URL
21
+
22
+ def initialize
23
+ @id = nil
24
+ @name = nil
25
+ @description = nil
26
+ @image_url = nil
27
+ @duration = nil
28
+ @ready = nil
29
+ @path_ids = nil
30
+ @forum_section_ids = nil
31
+ @linear_requirements = nil
32
+ @library_resource = nil
33
+ @created_at = nil
34
+ @updated_at = nil
35
+ end
36
+
37
+ # Parse json to Course object
38
+ def self.parse_json(props)
39
+ course = Course.new
40
+ course.id = props['id']
41
+ course.name = props['name']
42
+ course.description = props['description']
43
+ course.image_url = props['image_url']
44
+ course.duration = props['duration']
45
+ course.ready = props['ready']
46
+ course.path_ids = props['path_ids']
47
+ course.forum_section_ids = props['forum_section_ids']
48
+ course.linear_requirements = props['linear_requirements']
49
+ course.library_resource = props['library_resource']
50
+
51
+ unless props['created_at'].nil?
52
+ course.created_at = Date.parse(props['created_at'])
53
+ end
54
+ unless props['updated_at'].nil?
55
+ course.updated_at = Date.parse(props['updated_at'])
56
+ end
57
+
58
+ course
59
+ end
60
+
61
+ # Get all courses, if anything goes wrong an exception will be raised
62
+ #
63
+ # Example:
64
+ # >> Course.all!
65
+ # => [#<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test 4", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>]
66
+ def self.all!
67
+ response = HTTP
68
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
69
+ .get(COURSE_URL)
70
+
71
+ raise "invalid status code #{response.status}" if response.status >= 400 && response.status < 600
72
+
73
+ body = response.parse(:json)
74
+
75
+ body['courses'].map { |c| Course.parse_json(c) }
76
+ end
77
+
78
+ # Get all courses
79
+ #
80
+ # Example:
81
+ # >> Course.all!
82
+ # => [#<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test 4", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>]
83
+ def self.all
84
+ response = HTTP
85
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
86
+ .get(COURSE_URL)
87
+
88
+ return response if response.status >= 400 && response.status < 600
89
+
90
+ body = response.parse(:json)
91
+
92
+ body['courses'].map { |c| Course.parse_json(c) }
93
+ end
94
+
95
+ # Save a course, if anything goes wrong an exception will be raised
96
+ #
97
+ # Example:
98
+ # >> course_instance.save!
99
+ # => #<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test 4", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
100
+ def save!
101
+ response = HTTP
102
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
103
+ .post(COURSE_URL, :json => self.to_h)
104
+
105
+ raise "invalid status code #{response.status}" if response.status != 201
106
+
107
+ body = response.parse(:json)
108
+
109
+ course_saved = Course.parse_json(body)
110
+
111
+ change_values(course_saved)
112
+
113
+ course_saved
114
+ end
115
+
116
+ # Save a course
117
+ #
118
+ # Example:
119
+ # >> course_instance.save
120
+ # => #<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test 4", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
121
+ def save
122
+ response = HTTP
123
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
124
+ .post(COURSE_URL, :json => self.to_h)
125
+
126
+ return response if response.status != 201
127
+
128
+ body = response.parse(:json)
129
+
130
+ course_saved = Course.parse_json(body)
131
+
132
+ change_values(course_saved)
133
+
134
+ course_saved
135
+ end
136
+
137
+ # Create a course, if anything goes wrong an exception will be raised
138
+ #
139
+ # Example:
140
+ # >> Course.create!("name" => "test")
141
+ # => #<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
142
+ def self.create!(props)
143
+ response = HTTP
144
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
145
+ .post(COURSE_URL, :json => props)
146
+
147
+ raise "invalid status code #{response.status}" if response.status != 201
148
+
149
+ body = response.parse(:json)
150
+
151
+ Course.parse_json(body)
152
+ end
153
+
154
+ # Create a course
155
+ #
156
+ # Example:
157
+ # >> Course.create("name" => "test")
158
+ # => #<EdoolsSdk::Course:0x00000001aef0c8 @id=21530, @name="test", @description=nil, @image_url=nil, @duration=nil, @ready=nil, @path_ids=[], @forum_section_ids=[], @linear_requirements=nil, @library_resource={"id"=>1152227, "library"=>{"id"=>572}, "library_tags"=>[], "school_products"=>[]}, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
159
+ def self.create(props)
160
+ response = HTTP
161
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
162
+ .post(COURSE_URL, :json => props)
163
+
164
+ return response if response.status != 201
165
+
166
+ body = response.parse(:json)
167
+
168
+ Course.parse_json(body)
169
+ end
170
+
171
+ private
172
+
173
+ def change_values(course)
174
+ @id = course.id
175
+ @name = course.name
176
+ @description = course.description
177
+ @image_url = course.image_url
178
+ @duration = course.duration
179
+ @ready = course.ready
180
+ @path_ids = course.path_ids
181
+ @forum_section_ids = course.forum_section_ids
182
+ @linear_requirements = course.linear_requirements
183
+ @library_resource = course.library_resource
184
+ @created_at = course.created_at
185
+ @updated_at = course.updated_at
186
+ end
187
+ end
188
+ end
@@ -0,0 +1,13 @@
1
+ require "http"
2
+
3
+ module EdoolsSdk
4
+ # EdoolsBase class
5
+ class EdoolsBase
6
+ # Parse object to Hash
7
+ def to_h
8
+ hash = {}
9
+ instance_variables.each {|var| hash[var.to_s.delete("@")] = instance_variable_get(var) }
10
+ hash
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,58 @@
1
+ module EdoolsSdk
2
+ # Invitation class
3
+ class Invitation < EdoolsBase
4
+ attr_accessor(
5
+ :id,
6
+ :first_name,
7
+ :last_name,
8
+ :email,
9
+ :cpf,
10
+ :phone,
11
+ :skype,
12
+ :twitter,
13
+ :facebook,
14
+ :company_name,
15
+ :company_position,
16
+ :born_at,
17
+ :biography,
18
+ :cover_image_url
19
+ )
20
+
21
+ # Parse json to Invitation object
22
+ def self.parse_json(props)
23
+ invitation = Invitation.new
24
+
25
+ invitation.id = props['id']
26
+ invitation.first_name = props['first_name']
27
+ invitation.last_name = props['last_name']
28
+ invitation.email = props['email']
29
+ invitation.cpf = props['cpf']
30
+ invitation.phone = props['phone']
31
+ invitation.skype = props['skype']
32
+ invitation.twitter = props['twitter']
33
+ invitation.facebook = props['facebook']
34
+ invitation.company_name = props['company_name']
35
+ invitation.company_position = props['company_position']
36
+ invitation.born_at = props['born_at']
37
+ invitation.biography = props['biography']
38
+ invitation.cover_image_url = props['cover_image_url']
39
+
40
+ invitation
41
+ end
42
+ end
43
+ end
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
@@ -0,0 +1,262 @@
1
+ module EdoolsSdk
2
+ # Product class
3
+ class Product < EdoolsBase
4
+ attr_accessor(
5
+ :id,
6
+ :title,
7
+ :description,
8
+ :subtitle,
9
+ :logo,
10
+ :video_url,
11
+ :video_title,
12
+ :video_description,
13
+ :published,
14
+ :hidden,
15
+ :restricted,
16
+ :certification,
17
+ :classes_auto_generation,
18
+ :certification_min_progress,
19
+ :meta_title,
20
+ :meta_description,
21
+ :meta_keys,
22
+ :available_time_type,
23
+ :available_time_length,
24
+ :available_time_unit,
25
+ :expire_date,
26
+ :library_resource_id,
27
+ :max_attendance_type,
28
+ :max_attendance_length,
29
+ :allowed_emails,
30
+ :class_teacher_ids,
31
+ :category_ids,
32
+ :gallery_media_ids,
33
+ :created_at,
34
+ :updated_at
35
+ )
36
+
37
+ PRODUCT_URL = 'https://core.myedools.info/api/schools/'
38
+ PRODUCT_URL_WITHOUT_SCHOOL = 'https://core.myedools.info/api/school_products'
39
+ private_constant :PRODUCT_URL
40
+
41
+ def initialize
42
+ @id = nil
43
+ @title = nil
44
+ @description = nil
45
+ @subtitle = nil
46
+ @logo = nil
47
+ @video_url = nil
48
+ @video_title = nil
49
+ @video_description = nil
50
+ @published = nil
51
+ @hidden = nil
52
+ @restricted = nil
53
+ @certification = nil
54
+ @classes_auto_generation = nil
55
+ @certification_min_progress = nil
56
+ @meta_title = nil
57
+ @meta_description = nil
58
+ @meta_keys = nil
59
+ @available_time_type = nil
60
+ @available_time_length = nil
61
+ @available_time_unit = nil
62
+ @expire_date = nil
63
+ @library_resource_id = nil
64
+ @max_attendance_type = nil
65
+ @max_attendance_length = nil
66
+ @allowed_emails = nil
67
+ @class_teacher_ids = nil
68
+ @category_ids = nil
69
+ @gallery_media_ids = nil
70
+ @created_at = nil
71
+ @updated_at = nil
72
+ end
73
+
74
+ # Parse json to Product object
75
+ def self.parse_json(props)
76
+ product = Product.new
77
+
78
+ product.id = props['id']
79
+ product.title = props['title']
80
+ product.description = props['description']
81
+ product.subtitle = props['subtitle']
82
+ product.logo = props['logo']
83
+ product.video_url = props['video_url']
84
+ product.video_title = props['video_title']
85
+ product.video_description = props['video_description']
86
+ product.published = props['published']
87
+ product.hidden = props['hidden']
88
+ product.restricted = props['restricted']
89
+ product.certification = props['certification']
90
+ product.classes_auto_generation = props['classes_auto_generation']
91
+ product.certification_min_progress = props['certification_min_progress']
92
+ product.meta_title = props['meta_title']
93
+ product.meta_description = props['meta_description']
94
+ product.meta_keys = props['meta_keys']
95
+ product.available_time_type = props['available_time_type']
96
+ product.available_time_length = props['available_time_length']
97
+ product.available_time_unit = props['available_time_unit']
98
+ product.expire_date = props['expire_date']
99
+ product.library_resource_id = props['library_resource_id']
100
+ product.max_attendance_type = props['max_attendance_type']
101
+ product.max_attendance_length = props['max_attendance_length']
102
+ product.allowed_emails = props['allowed_emails']
103
+ product.class_teacher_ids = props['class_teacher_ids']
104
+ product.category_ids = props['category_ids']
105
+ product.gallery_media_ids = props['gallery_media_ids']
106
+
107
+ unless props['created_at'].nil?
108
+ product.created_at = Date.parse(props['created_at'])
109
+ end
110
+ unless props['updated_at'].nil?
111
+ product.updated_at = Date.parse(props['updated_at'])
112
+ end
113
+
114
+ product
115
+ end
116
+
117
+ # Get all products, if anything goes wrong an exception will be raised
118
+ #
119
+ # Example:
120
+ # >> Product.all!
121
+ # => [#<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>]
122
+ def self.all!
123
+ response = HTTP
124
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
125
+ .get(PRODUCT_URL_WITHOUT_SCHOOL)
126
+
127
+ raise "invalid status code #{response.status}" if response.status >= 400 && response.status < 600
128
+
129
+ body = response.parse(:json)
130
+
131
+ body['school_products'].map { |c| Product.parse_json(c) }
132
+ end
133
+
134
+ # Get all products
135
+ #
136
+ # Example:
137
+ # >> Product.all!
138
+ # => [#<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>]
139
+ def self.all
140
+ response = HTTP
141
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
142
+ .get(PRODUCT_URL_WITHOUT_SCHOOL)
143
+
144
+ return response if response.status >= 400 && response.status < 600
145
+
146
+ body = response.parse(:json)
147
+
148
+ body['school_products'].map { |c| Product.parse_json(c) }
149
+ end
150
+
151
+ # Save a product, if anything goes wrong an exception will be raised
152
+ #
153
+ # Example:
154
+ # >> product_instance.save(222)!
155
+ # => #<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
156
+ def save!(school_id)
157
+ response = HTTP
158
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
159
+ .post("#{PRODUCT_URL}#{school_id}/school_products", :json => self.to_h)
160
+
161
+ raise "invalid status code #{response.status}" if response.status != 201
162
+
163
+ body = response.parse(:json)
164
+
165
+ product_saved = Product.parse_json(body)
166
+
167
+ change_values(product_saved)
168
+
169
+ product_saved
170
+ end
171
+
172
+ # Save a product
173
+ #
174
+ # Example:
175
+ # >> product_instance.save(222)
176
+ # => #<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
177
+ def save(school_id)
178
+ response = HTTP
179
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
180
+ .post("#{PRODUCT_URL}#{school_id}/school_products", :json => self.to_h)
181
+
182
+ return response if response.status != 201
183
+
184
+ body = response.parse(:json)
185
+
186
+ product_saved = Product.parse_json(body)
187
+
188
+ change_values(product_saved)
189
+
190
+ product_saved
191
+ end
192
+
193
+ # Create a product, if anything goes wrong an exception will be raised
194
+ #
195
+ # Example:
196
+ # >> Product.create!(222, "title" => "test")
197
+ # => #<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
198
+ def self.create!(school_id, props)
199
+ response = HTTP
200
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
201
+ .post("#{PRODUCT_URL}#{school_id}/school_products", :json => props)
202
+
203
+ raise "invalid status code #{response.status}" if response.status != 201
204
+
205
+ body = response.parse(:json)
206
+
207
+ Product.parse_json(body)
208
+ end
209
+
210
+ # Create a product
211
+ #
212
+ # Example:
213
+ # >> Product.create(222, "title" => "test")
214
+ # => #<EdoolsSdk::Product:0x00000002bc4a88 @id=22395, @title="test product 1", @description=nil, @subtitle=nil, @logo=nil, @video_url=nil, @video_title=nil, @video_description=nil, @published=false, @hidden=false, @restricted=false, @certification=false, @classes_auto_generation=false, @certification_min_progress=nil, @meta_title=nil, @meta_description=nil, @meta_keys=nil, @available_time_type="indeterminate", @available_time_length=nil, @available_time_unit=nil, @expire_date=nil, @library_resource_id=nil, @max_attendance_type="indeterminate", @max_attendance_length=nil, @allowed_emails=[], @class_teacher_ids=nil, @category_ids=nil, @gallery_media_ids=nil, @created_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-25 ((2458022j,0s,0n),+0s,2299161j)>>
215
+ def self.create(school_id, props)
216
+ response = HTTP
217
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
218
+ .post("#{PRODUCT_URL}#{school_id}/school_products", :json => props)
219
+
220
+ return response if response.status != 201
221
+
222
+ body = response.parse(:json)
223
+
224
+ Product.parse_json(body)
225
+ end
226
+
227
+ private
228
+
229
+ def change_values(product)
230
+ @id = product.id
231
+ @title = product.title
232
+ @description = product.description
233
+ @subtitle = product.subtitle
234
+ @logo = product.logo
235
+ @video_url = product.video_url
236
+ @video_title = product.video_title
237
+ @video_description = product.video_description
238
+ @published = product.published
239
+ @hidden = product.hidden
240
+ @restricted = product.restricted
241
+ @certification = product.certification
242
+ @classes_auto_generation = product.classes_auto_generation
243
+ @certification_min_progress = product.certification_min_progress
244
+ @meta_title = product.meta_title
245
+ @meta_description = product.meta_description
246
+ @meta_keys = product.meta_keys
247
+ @available_time_type = product.available_time_type
248
+ @available_time_length = product.available_time_length
249
+ @available_time_unit = product.available_time_unit
250
+ @expire_date = product.expire_date
251
+ @library_resource_id = product.library_resource_id
252
+ @max_attendance_type = product.max_attendance_type
253
+ @max_attendance_length = product.max_attendance_length
254
+ @allowed_emails = product.allowed_emails
255
+ @class_teacher_ids = product.class_teacher_ids
256
+ @category_ids = product.category_ids
257
+ @gallery_media_ids = product.gallery_media_ids
258
+ @created_at = product.created_at
259
+ @updated_at = product.updated_at
260
+ end
261
+ end
262
+ end
@@ -0,0 +1,211 @@
1
+ module EdoolsSdk
2
+ # School class
3
+ class School < EdoolsBase
4
+ attr_accessor(
5
+ :id,
6
+ :credentials,
7
+ :name,
8
+ :password,
9
+ :subdomain,
10
+ :domains,
11
+ :rdstation_token,
12
+ :adroll_adv_id,
13
+ :adroll_pix_id,
14
+ :email,
15
+ :phone,
16
+ :cnpj,
17
+ :samba_key,
18
+ :samba_player_key,
19
+ :samba_access_token,
20
+ :samba_project_id,
21
+ :terms_of_use,
22
+ :facebook,
23
+ :twitter,
24
+ :linkedin,
25
+ :pinterest,
26
+ :google_plus,
27
+ :youtube,
28
+ :instagram,
29
+ :site,
30
+ :address,
31
+ :company_name,
32
+ :seo_title,
33
+ :seo_description,
34
+ :logo,
35
+ :metadata,
36
+ :meta_available_locales,
37
+ :event,
38
+ :created_at,
39
+ :updated_at
40
+ )
41
+
42
+ SCHOOL_URL_CREATE = 'https://core.myedools.info/api/schools/wizard'
43
+ SCHOOL_URL_UPDATE = 'https://core.myedools.info/api/schools/'
44
+ private_constant :SCHOOL_URL_CREATE, :SCHOOL_URL_UPDATE
45
+
46
+ def initialize
47
+ @id = nil
48
+ @credentials = nil
49
+ @name = nil
50
+ @password = nil
51
+ @subdomain = nil
52
+ @domains = nil
53
+ @rdstation_token = nil
54
+ @adroll_adv_id = nil
55
+ @adroll_pix_id = nil
56
+ @email = nil
57
+ @phone = nil
58
+ @cnpj = nil
59
+ @samba_key = nil
60
+ @samba_player_key = nil
61
+ @samba_access_token = nil
62
+ @samba_project_id = nil
63
+ @terms_of_use = nil
64
+ @adroll_adv_id = nil
65
+ @adroll_pix_id = nil
66
+ @facebook = nil
67
+ @twitter = nil
68
+ @linkedin = nil
69
+ @pinterest = nil
70
+ @google_plus = nil
71
+ @youtube = nil
72
+ @instagram = nil
73
+ @site = nil
74
+ @address = nil
75
+ @company_name = nil
76
+ @seo_title = nil
77
+ @seo_description = nil
78
+ @logo = nil
79
+ @metadata = nil
80
+ @meta_available_locales = nil
81
+ @event = nil
82
+ @created_at = nil
83
+ @updated_at = nil
84
+ end
85
+
86
+ # Parse json to School object
87
+ def self.parse_json(props)
88
+ school = School.new
89
+
90
+ school.id = props['id']
91
+ school.name = props['name']
92
+ school.password = props['password']
93
+ school.subdomain = props['subdomain']
94
+ school.domains = props['domains']
95
+ school.rdstation_token = props['rdstation_token']
96
+ school.adroll_adv_id = props['adroll_adv_id']
97
+ school.adroll_pix_id = props['adroll_pix_id']
98
+ school.email = props['email']
99
+ school.phone = props['phone']
100
+ school.cnpj = props['cnpj']
101
+ school.samba_key = props['samba_key']
102
+ school.samba_player_key = props['samba_player_key']
103
+ school.samba_access_token = props['samba_access_token']
104
+ school.samba_project_id = props['samba_project_id']
105
+ school.terms_of_use = props['terms_of_use']
106
+ school.adroll_adv_id = props['adroll_adv_id']
107
+ school.adroll_pix_id = props['adroll_pix_id']
108
+ school.facebook = props['facebook']
109
+ school.twitter = props['twitter']
110
+ school.linkedin = props['linkedin']
111
+ school.pinterest = props['pinterest']
112
+ school.google_plus = props['google_plus']
113
+ school.youtube = props['youtube']
114
+ school.instagram = props['instagram']
115
+ school.site = props['site']
116
+ school.address = props['address']
117
+ school.company_name = props['company_name']
118
+ school.seo_title = props['seo_title']
119
+ school.seo_description = props['seo_description']
120
+ school.logo = props['logo']
121
+ school.metadata = props['metadata']
122
+ school.meta_available_locales = props['meta_available_locales']
123
+ school.event = props['event']
124
+
125
+ unless props['created_at'].nil?
126
+ school.created_at = Date.parse(props['created_at'])
127
+ end
128
+ unless props['updated_at'].nil?
129
+ school.updated_at = Date.parse(props['updated_at'])
130
+ end
131
+
132
+ school
133
+ end
134
+
135
+ # Parse created json to School object
136
+ def self.parse_json_created(props)
137
+ school = School.new
138
+
139
+ school.id = props['school']['id']
140
+ school.credentials = props['admin']['credentials']
141
+
142
+ school
143
+ end
144
+
145
+ # Create a School, if anything goes wrong an exception will be raised
146
+ # Just id and name are populated after create
147
+ #
148
+ # Example:
149
+ # >> School.create!(token, "name" => "test")
150
+ # => #<EdoolsSdk::School:0x0000000234d350 @id=nil, @credentials=nil, @name="test", @password=nil, @subdomain=nil, @domains=nil, @rdstation_token=nil, @adroll_adv_id=nil, @adroll_pix_id=nil, @email=nil, @phone=nil, @cnpj=nil, @samba_key=nil, @samba_player_key=nil, @samba_access_token=nil, @samba_project_id=nil, @terms_of_use=nil, @facebook=nil, @twitter=nil, @linkedin=nil, @pinterest=nil, @google_plus=nil, @youtube=nil, @instagram=nil, @site=nil, @address=nil, @company_name=nil, @seo_title=nil, @seo_description=nil, @logo=nil, @metadata=nil, @meta_available_locales=nil, @event=nil, @created_at=nil, @updated_at=nil>
151
+ def self.create!(token, props)
152
+ response = HTTP
153
+ .headers('Authorization' => "Token token=\"#{token}\"")
154
+ .post(SCHOOL_URL_CREATE, :json => props)
155
+
156
+ raise "invalid status code #{response.status}" if response.status != 201
157
+
158
+ body = response.parse(:json)
159
+
160
+ School.parse_json_created(body)
161
+ end
162
+
163
+ # Create a School
164
+ # Just id and name are populated after create
165
+ #
166
+ # Example:
167
+ # >> School.create(token, "name" => "test")
168
+ # => #<EdoolsSdk::School:0x0000000234d350 @id=nil, @credentials=nil, @name="test", @password=nil, @subdomain=nil, @domains=nil, @rdstation_token=nil, @adroll_adv_id=nil, @adroll_pix_id=nil, @email=nil, @phone=nil, @cnpj=nil, @samba_key=nil, @samba_player_key=nil, @samba_access_token=nil, @samba_project_id=nil, @terms_of_use=nil, @facebook=nil, @twitter=nil, @linkedin=nil, @pinterest=nil, @google_plus=nil, @youtube=nil, @instagram=nil, @site=nil, @address=nil, @company_name=nil, @seo_title=nil, @seo_description=nil, @logo=nil, @metadata=nil, @meta_available_locales=nil, @event=nil, @created_at=nil, @updated_at=nil>
169
+ def self.create(token, props)
170
+ response = HTTP
171
+ .headers('Authorization' => "Token token=\"#{token}\"")
172
+ .post(SCHOOL_URL_CREATE, :json => props)
173
+
174
+ return response if response.status != 201
175
+
176
+ body = response.parse(:json)
177
+
178
+ School.parse_json_created(body)
179
+ end
180
+
181
+ # Update School by id
182
+ #
183
+ # Example:
184
+ # >> School.update_by_id(22, "name" => "test")
185
+ # => #<EdoolsSdk::School:0x0000000234d350 @id=nil, @credentials=nil, @name="test", @password=nil, @subdomain=nil, @domains=nil, @rdstation_token=nil, @adroll_adv_id=nil, @adroll_pix_id=nil, @email=nil, @phone=nil, @cnpj=nil, @samba_key=nil, @samba_player_key=nil, @samba_access_token=nil, @samba_project_id=nil, @terms_of_use=nil, @facebook=nil, @twitter=nil, @linkedin=nil, @pinterest=nil, @google_plus=nil, @youtube=nil, @instagram=nil, @site=nil, @address=nil, @company_name=nil, @seo_title=nil, @seo_description=nil, @logo=nil, @metadata=nil, @meta_available_locales=nil, @event=nil, @created_at=nil, @updated_at=nil>
186
+ def self.update_by_id(id, props)
187
+ response = HTTP
188
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
189
+ .put("#{SCHOOL_URL_UPDATE}#{id}", :json => props)
190
+
191
+ return response if response.status != 204
192
+
193
+ School.parse_json(props)
194
+ end
195
+
196
+ # Update School by id, if anything goes wrong an exception will be raised
197
+ #
198
+ # Example:
199
+ # >> School.update_by_id!(22, "name" => "test")
200
+ # => #<EdoolsSdk::School:0x0000000234d350 @id=nil, @credentials=nil, @name="test", @password=nil, @subdomain=nil, @domains=nil, @rdstation_token=nil, @adroll_adv_id=nil, @adroll_pix_id=nil, @email=nil, @phone=nil, @cnpj=nil, @samba_key=nil, @samba_player_key=nil, @samba_access_token=nil, @samba_project_id=nil, @terms_of_use=nil, @facebook=nil, @twitter=nil, @linkedin=nil, @pinterest=nil, @google_plus=nil, @youtube=nil, @instagram=nil, @site=nil, @address=nil, @company_name=nil, @seo_title=nil, @seo_description=nil, @logo=nil, @metadata=nil, @meta_available_locales=nil, @event=nil, @created_at=nil, @updated_at=nil>
201
+ def self.update_by_id!(id, props)
202
+ response = HTTP
203
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
204
+ .put("#{SCHOOL_URL_UPDATE}#{id}", :json => props)
205
+
206
+ raise "invalid status code #{response.status}" if response.status != 204
207
+
208
+ School.parse_json(props)
209
+ end
210
+ end
211
+ end
@@ -0,0 +1,167 @@
1
+ module EdoolsSdk
2
+ # Student class
3
+ class Student
4
+ attr_accessor(
5
+ :id,
6
+ :first_name,
7
+ :last_name,
8
+ :email,
9
+ :password_digest,
10
+ :cpf,
11
+ :phone,
12
+ :skype,
13
+ :company_name,
14
+ :company_position,
15
+ :born_at,
16
+ :biography,
17
+ :cover_image_url,
18
+ :created_at,
19
+ :updated_at
20
+ )
21
+
22
+ STUDENT_URL = 'https://core.myedools.info/api/students'
23
+ INVITATION_URL = 'https://core.myedools.info/api/invitations'
24
+ private_constant :STUDENT_URL, :INVITATION_URL
25
+
26
+ # Parse json to Student object
27
+ def self.parse_json(props)
28
+ student = Student.new
29
+ student.id = props['id']
30
+ student.first_name = props['first_name']
31
+ student.last_name = props['last_name']
32
+ student.email = props['email']
33
+ student.password_digest = props['password_digest']
34
+ student.cpf = props['cpf']
35
+ student.phone = props['phone']
36
+ student.skype = props['skype']
37
+ student.company_name = props['company_name']
38
+ student.company_position = props['company_position']
39
+ student.born_at = props['born_at']
40
+ student.biography = props['biography']
41
+ student.cover_image_url = props['cover_image_url']
42
+
43
+ unless props['created_at'].nil?
44
+ student.created_at = Date.parse(props['created_at'])
45
+ end
46
+ unless props['updated_at'].nil?
47
+ student.updated_at = Date.parse(props['updated_at'])
48
+ end
49
+
50
+ student
51
+ end
52
+
53
+ # Get all students
54
+ #
55
+ # Example:
56
+ # >> Student.all
57
+ # => [#<EdoolsSdk::Student:0x0000000262e1a0 @id=588417, @first_name="test", @last_name=nil, @email="test@test.com", @password_digest=nil, @cpf=nil, @phone=nil, @skype=nil, @company_name=nil, @company_position=nil, @born_at=nil, @biography=nil, @cover_image_url="https://cdn.edools.com/assets/images/users/default.jpeg", @created_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>>]
58
+ def self.all
59
+ response = HTTP
60
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
61
+ .get(STUDENT_URL)
62
+
63
+ return response if response.status >= 400 && response.status < 600
64
+
65
+ body = response.parse(:json)
66
+
67
+ body['students'].map { |c| Student.parse_json(c) }
68
+ end
69
+
70
+ # Get all students, if anything goes wrong an exception will be raised
71
+ #
72
+ # Example:
73
+ # >> Student.all
74
+ # => [#<EdoolsSdk::Student:0x0000000262e1a0 @id=588417, @first_name="test", @last_name=nil, @email="test@test.com", @password_digest=nil, @cpf=nil, @phone=nil, @skype=nil, @company_name=nil, @company_position=nil, @born_at=nil, @biography=nil, @cover_image_url="https://cdn.edools.com/assets/images/users/default.jpeg", @created_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>>]
75
+ def self.all!
76
+ response = HTTP
77
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
78
+ .get(STUDENT_URL)
79
+
80
+ raise "invalid status code #{response.status}" if response.status >= 400 && response.status < 600
81
+
82
+ body = response.parse(:json)
83
+
84
+ body['students'].map { |c| Student.parse_json(c) }
85
+ end
86
+
87
+ # Get all students by Product id
88
+ #
89
+ # Example:
90
+ # >> Student.all_by_product_id
91
+ # => [#<EdoolsSdk::Student:0x0000000262e1a0 @id=588417, @first_name="test", @last_name=nil, @email="test@test.com", @password_digest=nil, @cpf=nil, @phone=nil, @skype=nil, @company_name=nil, @company_position=nil, @born_at=nil, @biography=nil, @cover_image_url="https://cdn.edools.com/assets/images/users/default.jpeg", @created_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>>]
92
+ def self.all_by_product_id(id)
93
+ response = HTTP
94
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
95
+ .get("#{STUDENT_URL}?school_product_id=#{id}")
96
+
97
+ return response if response.status >= 400 && response.status < 600
98
+
99
+ body = response.parse(:json)
100
+
101
+ body['students'].map { |c| Student.parse_json(c) }
102
+ end
103
+
104
+ # Get all students by Product id, if anything goes wrong an exception will be raised
105
+ #
106
+ # Example:
107
+ # >> Student.all_by_product_id
108
+ # => [#<EdoolsSdk::Student:0x0000000262e1a0 @id=588417, @first_name="test", @last_name=nil, @email="test@test.com", @password_digest=nil, @cpf=nil, @phone=nil, @skype=nil, @company_name=nil, @company_position=nil, @born_at=nil, @biography=nil, @cover_image_url="https://cdn.edools.com/assets/images/users/default.jpeg", @created_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>, @updated_at=#<Date: 2017-09-26 ((2458023j,0s,0n),+0s,2299161j)>>]
109
+ def self.all_by_product_id!(id)
110
+ response = HTTP
111
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
112
+ .get("#{STUDENT_URL}?school_product_id=#{id}")
113
+
114
+ raise "invalid status code #{response.status}" if response.status >= 400 && response.status < 600
115
+
116
+ body = response.parse(:json)
117
+
118
+ body['students'].map { |c| Student.parse_json(c) }
119
+ end
120
+
121
+ # Self invite Student, if anything goes wrong an exception will be raised
122
+ #
123
+ # Example:
124
+ # >> Student.self_invite!
125
+ # => #<EdoolsSdk::Invitation>
126
+ def self_invite!(password, confirm_password)
127
+ response = HTTP
128
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
129
+ .post(INVITATION_URL, :json => {
130
+ 'first_name' => @first_name,
131
+ 'last_name' => @last_name,
132
+ 'email' => @email,
133
+ 'password' => password,
134
+ 'confirm_password' => confirm_password,
135
+ })
136
+
137
+ raise "invalid status code #{response.status}" if response.status >= 400 && response.status < 600
138
+
139
+ body = response.parse(:json)
140
+
141
+ Invitation.parse_json(body)
142
+ end
143
+
144
+ # Self invite Student
145
+ #
146
+ # Example:
147
+ # >> Student.self_invite
148
+ # => #<EdoolsSdk::Invitation>
149
+ def self_invite(password, confirm_password)
150
+ response = HTTP
151
+ .headers('Authorization' => "Token token=\"#{ENV['edools_token']}\"")
152
+ .post(INVITATION_URL, :json => {
153
+ 'first_name' => @first_name,
154
+ 'last_name' => @last_name,
155
+ 'email' => @email,
156
+ 'password' => password,
157
+ 'confirm_password' => confirm_password,
158
+ })
159
+
160
+ return response if response.status >= 400 && response.status < 600
161
+
162
+ body = response.parse(:json)
163
+
164
+ Invitation.parse_json(body)
165
+ end
166
+ end
167
+ end
metadata ADDED
@@ -0,0 +1,64 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: edools_sdk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Lucas Vieira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-10-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: http
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
27
+ description: A simple sdk to access edools platform.
28
+ email: lucasvieira.dev@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/edools_sdk.rb
34
+ - lib/edools_sdk/course.rb
35
+ - lib/edools_sdk/edools_base.rb
36
+ - lib/edools_sdk/invitation.rb
37
+ - lib/edools_sdk/product.rb
38
+ - lib/edools_sdk/school.rb
39
+ - lib/edools_sdk/student.rb
40
+ homepage: http://rubygems.org/gems/edools_sdk
41
+ licenses:
42
+ - MIT
43
+ metadata: {}
44
+ post_install_message:
45
+ rdoc_options: []
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ required_rubygems_version: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ requirements: []
59
+ rubyforge_project:
60
+ rubygems_version: 2.5.2
61
+ signing_key:
62
+ specification_version: 4
63
+ summary: SDK for edools platform.
64
+ test_files: []