epitech_api 0.1.2 → 0.1.3
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 +4 -4
- data/.idea/epitech-api-gem.iml +2 -8
- data/lib/epitech_api/DataTypes/basic_student.rb +15 -0
- data/lib/epitech_api/DataTypes/promo.rb +14 -0
- data/lib/epitech_api/DataTypes/student.rb +20 -0
- data/lib/epitech_api/Exceptions/invalid_parameters.rb +5 -0
- data/lib/epitech_api/Exceptions/resource_not_found.rb +5 -0
- data/lib/epitech_api/Managers/promo_manager.rb +78 -0
- data/lib/epitech_api/Managers/user_manager.rb +27 -0
- data/lib/epitech_api/{Provider → Providers}/intra_provider.rb +0 -0
- data/lib/epitech_api/{Provider → Providers}/office_provider.rb +0 -0
- data/lib/epitech_api/gatherer.rb +9 -16
- data/lib/epitech_api/providers.rb +2 -0
- data/lib/epitech_api/version.rb +1 -1
- metadata +12 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67b007c5fab2d1b27993ab9a3668ede6f8dd09d1
|
4
|
+
data.tar.gz: 46056b75fd7c547db05a7f07ab52c08c25345e23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bf3f7b893a87873a95ec424abf428d7a7d25fa6f4eeb491c5abbe1965610f6d50e106889769286c0ce03f3428a9bd916f033bbd794b5d7d7ee5c569f931148d
|
7
|
+
data.tar.gz: 032cb5fc1367bb5b589fa9882d61811cf2d09fa4a68d9cad40f3114a05c9b05ac15eddde99c72548885ea66e62432fe691c04d3717b528f783c9ad648a192cc3
|
data/.idea/epitech-api-gem.iml
CHANGED
@@ -5,14 +5,8 @@
|
|
5
5
|
</component>
|
6
6
|
<component name="NewModuleRootManager">
|
7
7
|
<content url="file://$MODULE_DIR$" />
|
8
|
-
<orderEntry type="jdk" jdkName="
|
8
|
+
<orderEntry type="jdk" jdkName="ruby-2.3.1-p112" jdkType="RUBY_SDK" />
|
9
9
|
<orderEntry type="sourceFolder" forTests="false" />
|
10
|
-
<orderEntry type="library" scope="PROVIDED" name="
|
11
|
-
<orderEntry type="library" scope="PROVIDED" name="json (v2.1.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
12
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.7.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
13
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.7.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.7.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.7.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.7.0, Remote: ruby-2.3.1-p112) [gem]" level="application" />
|
10
|
+
<orderEntry type="library" scope="PROVIDED" name="json (v2.1.0, ruby-2.3.1-p112) [gem]" level="application" />
|
17
11
|
</component>
|
18
12
|
</module>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module EpitechApi
|
2
|
+
class BasicStudent
|
3
|
+
|
4
|
+
attr_accessor :login, :first_name, :last_name, :location, :picture
|
5
|
+
|
6
|
+
def initialize(login, first_name, last_name, picture, location)
|
7
|
+
@login = login
|
8
|
+
@first_name = first_name
|
9
|
+
@last_name = last_name
|
10
|
+
@picture = picture
|
11
|
+
@location = location
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'epitech_api/DataTypes/basic_student'
|
2
|
+
|
3
|
+
module EpitechApi
|
4
|
+
class Student < BasicStudent
|
5
|
+
|
6
|
+
attr_accessor :closed, :time_active, :time_needed
|
7
|
+
|
8
|
+
def initialize(login, first_name, last_name, picture, location, time_active, time_needed, closed)
|
9
|
+
@login = login
|
10
|
+
@first_name = first_name
|
11
|
+
@last_name = last_name
|
12
|
+
@picture = picture
|
13
|
+
@location = location
|
14
|
+
@time_active = time_active
|
15
|
+
@time_needed = time_needed
|
16
|
+
@closed = closed
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'epitech_api/DataTypes/basic_student'
|
2
|
+
|
3
|
+
module EpitechApi
|
4
|
+
class PromoManager
|
5
|
+
|
6
|
+
def initialize(token)
|
7
|
+
@token = token
|
8
|
+
end
|
9
|
+
|
10
|
+
# @param [string] location base location for the promotion
|
11
|
+
# @param [number] year of activity of this promotion
|
12
|
+
# @return List of all promotions matching criteria
|
13
|
+
def list(location, year)
|
14
|
+
uri = URI("https://intra.epitech.eu/user/filter/promo?format=json&location=#{location}&year=#{year}&active=true")
|
15
|
+
|
16
|
+
req = Net::HTTP::Get.new uri
|
17
|
+
req['Cookie'] = "#{@token}"
|
18
|
+
|
19
|
+
http = Net::HTTP.new(uri.hostname, uri.port)
|
20
|
+
http.use_ssl = true
|
21
|
+
|
22
|
+
response = http.request req
|
23
|
+
raise InvalidRights unless response.code.to_i == 200
|
24
|
+
response_body = JSON.parse response.body
|
25
|
+
|
26
|
+
promos = []
|
27
|
+
response_body.each do |p|
|
28
|
+
promos.push Promo.new(p['promo'], p['students'].to_i, year, location)
|
29
|
+
end
|
30
|
+
promos
|
31
|
+
end
|
32
|
+
|
33
|
+
# @param [string] name Promo name
|
34
|
+
# @param [string] location location (ex FR/LIL)
|
35
|
+
# @param [number] year year of selected promotion
|
36
|
+
def get(name, location, year)
|
37
|
+
promos = list(location, year)
|
38
|
+
promos.each do |promo|
|
39
|
+
return promo if promo.name == name && promo.location == location && promo.year == year
|
40
|
+
end
|
41
|
+
raise ResourceNotFound
|
42
|
+
end
|
43
|
+
|
44
|
+
# @param [Promo] promo Promotion to extract students information
|
45
|
+
# @return Array<BasicUser>
|
46
|
+
def extract_students(promo)
|
47
|
+
students = []
|
48
|
+
idx = 0
|
49
|
+
while idx < promo.size
|
50
|
+
uri = URI("https://intra.epitech.eu/user/filter/user?format=json&location=#{promo.location}&year=#{promo.year}&active=true&promo=#{promo.name}&offset=#{idx}")
|
51
|
+
|
52
|
+
req = Net::HTTP::Get.new uri
|
53
|
+
req['Cookie'] = "#{@token}"
|
54
|
+
|
55
|
+
http = Net::HTTP.new(uri.hostname, uri.port)
|
56
|
+
http.use_ssl = true
|
57
|
+
|
58
|
+
response = http.request req
|
59
|
+
|
60
|
+
raise InvalidRights unless response.code.to_i == 200
|
61
|
+
response_body = JSON.parse response.body
|
62
|
+
students.push *convert_users(response_body['items'])
|
63
|
+
idx += response_body['items'].size
|
64
|
+
end
|
65
|
+
students
|
66
|
+
end
|
67
|
+
|
68
|
+
private
|
69
|
+
|
70
|
+
def convert_users(users)
|
71
|
+
students = []
|
72
|
+
users.each do |u|
|
73
|
+
students.push BasicStudent.new(u['login'], u['prenom'], u['nom'], u['picture'], u['location'])
|
74
|
+
end
|
75
|
+
students
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'epitech_api/DataTypes/student'
|
2
|
+
|
3
|
+
module EpitechApi
|
4
|
+
class UserManager
|
5
|
+
|
6
|
+
def initialize(token)
|
7
|
+
@token = token
|
8
|
+
end
|
9
|
+
|
10
|
+
def get(login)
|
11
|
+
uri = URI("https://intra.epitech.eu/user/#{login}/?format=json")
|
12
|
+
|
13
|
+
req = Net::HTTP::Get.new uri
|
14
|
+
req['Cookie'] = "#{@token}"
|
15
|
+
|
16
|
+
http = Net::HTTP.new(uri.hostname, uri.port)
|
17
|
+
http.use_ssl = true
|
18
|
+
|
19
|
+
response = http.request req
|
20
|
+
|
21
|
+
raise InvalidRights unless response.code.to_i == 200
|
22
|
+
body = JSON.parse response.body
|
23
|
+
Student.new body['login'], body['firstname'], body['lastname'], body['picture'], body['location'], body['nsstat']['active'], body['nsstat']['nslog_norm'], body['close']
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
File without changes
|
File without changes
|
data/lib/epitech_api/gatherer.rb
CHANGED
@@ -1,26 +1,19 @@
|
|
1
|
+
require 'epitech_api/DataTypes/promo'
|
2
|
+
require 'epitech_api/Managers/promo_manager'
|
3
|
+
require 'epitech_api/Managers/user_manager'
|
4
|
+
|
5
|
+
|
1
6
|
module EpitechApi
|
2
7
|
|
3
8
|
class Gatherer
|
4
9
|
|
10
|
+
attr_accessor :promo_manager, :user_manager
|
11
|
+
|
5
12
|
def initialize(token)
|
6
13
|
@token = token
|
14
|
+
@promo_manager = PromoManager.new @token
|
15
|
+
@user_manager = UserManager.new @token
|
7
16
|
end
|
8
17
|
|
9
|
-
def promos(location, year)
|
10
|
-
uri = URI("https://intra.epitech.eu/user/filter/promo?format=json&location=#{location}&year=#{year}&active=true")
|
11
|
-
puts uri
|
12
|
-
|
13
|
-
req = Net::HTTP::Get.new uri
|
14
|
-
req['Cookie'] = "#{@token}"
|
15
|
-
|
16
|
-
http = Net::HTTP.new(uri.hostname, uri.port)
|
17
|
-
http.use_ssl = true
|
18
|
-
|
19
|
-
response = http.request req
|
20
|
-
|
21
|
-
puts response
|
22
|
-
raise InvalidRights unless response.code.to_i == 200
|
23
|
-
JSON.parse response.body
|
24
|
-
end
|
25
18
|
end
|
26
19
|
end
|
data/lib/epitech_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: epitech_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Antoine FORET
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-12-
|
11
|
+
date: 2017-12-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -92,11 +92,19 @@ files:
|
|
92
92
|
- bin/setup
|
93
93
|
- epitech_api.gemspec
|
94
94
|
- lib/epitech_api.rb
|
95
|
+
- lib/epitech_api/DataTypes/basic_student.rb
|
96
|
+
- lib/epitech_api/DataTypes/promo.rb
|
97
|
+
- lib/epitech_api/DataTypes/student.rb
|
95
98
|
- lib/epitech_api/Exceptions/invalid_credentials.rb
|
99
|
+
- lib/epitech_api/Exceptions/invalid_parameters.rb
|
96
100
|
- lib/epitech_api/Exceptions/invalid_rights.rb
|
97
|
-
- lib/epitech_api/
|
98
|
-
- lib/epitech_api/
|
101
|
+
- lib/epitech_api/Exceptions/resource_not_found.rb
|
102
|
+
- lib/epitech_api/Managers/promo_manager.rb
|
103
|
+
- lib/epitech_api/Managers/user_manager.rb
|
104
|
+
- lib/epitech_api/Providers/intra_provider.rb
|
105
|
+
- lib/epitech_api/Providers/office_provider.rb
|
99
106
|
- lib/epitech_api/gatherer.rb
|
107
|
+
- lib/epitech_api/providers.rb
|
100
108
|
- lib/epitech_api/user.rb
|
101
109
|
- lib/epitech_api/version.rb
|
102
110
|
homepage: https://github.com/eliastre100/epitech-api-gem
|