manabu 0.0.3 → 0.0.4

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
2
  SHA256:
3
- metadata.gz: a9e858021472f03b2d532caf72061380aeabe89a644faae4471492496604ac48
4
- data.tar.gz: 176b6bdba3acfb636ecd2c6d71b67e16ae6e833bc759d5b8cd2742b812171643
3
+ metadata.gz: 4d0d8774904775b780856094912549fe8e73842344fa9ed1abf2367eb6d3f432
4
+ data.tar.gz: 607865e224db1f430b3e317bfced10d724457ec7c0500a71ce6bf71390f7e1ff
5
5
  SHA512:
6
- metadata.gz: 306735afa0cf37124823c0feb56e445822667423e6c2ad460d6a3781ce266944b840b5b9c2ec5eaaeb1fc639cdd8b6c0eed4fea400a894b8e79edf9dad962b14
7
- data.tar.gz: 31653b603f44ed4a2c69cc4545eb4002f81e956cb2874b1f165710d8d9a3b5aa108fbd1c1ebf55730c6f78f55ca3076bfa7436aa9f04c500cd9e32e333161f9f
6
+ metadata.gz: 5edabccb9131aa2a723b57acb03c92268677cd62534b99cc4fc900156a92da92802c711d05bab9daf73615ac9e78b8a8d88cd37ea825e145afe4b1de09553384
7
+ data.tar.gz: 9a827582764ffc1856e251bb980bfc8a76d7c3a244f51b11e9dfd4401f3a93ef559708582d7fd5339b30c1bcc9d2a091bc8826760cee872fb43bfc2885099569
@@ -33,6 +33,10 @@ module Manabu
33
33
  end
34
34
  end
35
35
 
36
+ def simple_get(endpoint)
37
+ @transactor.simple_get(endpoint)
38
+ end
39
+
36
40
  # Performs a GET against the API
37
41
  #
38
42
  # == Parameters:
@@ -27,6 +27,10 @@ module Manabu
27
27
 
28
28
  end
29
29
 
30
+ def full_host
31
+ @transactor.full_host
32
+ end
33
+
30
34
  def _authenticate(username, password)
31
35
  response = @transactor.post("authenticate", username: username, password: password)
32
36
  @connection = true
@@ -21,7 +21,7 @@ module Manabu
21
21
  @status = :unknown
22
22
  @force_secure_connection = force_secure_connection
23
23
  @options = options
24
- @api_version = options[:api_version] || 1
24
+ @api_version = options.fetch(:api_version, 1)
25
25
  connect
26
26
  _check_server_status
27
27
  end
@@ -29,6 +29,7 @@ module Manabu
29
29
  def connect()
30
30
  return @connection if @connection
31
31
  @connection = Faraday.new do |conn|
32
+ conn.request :multipart
32
33
  conn.request :url_encoded
33
34
 
34
35
  case @transport_type
@@ -50,6 +51,10 @@ module Manabu
50
51
  _check_server_status
51
52
  end
52
53
 
54
+ def simple_get(endpoint)
55
+ Faraday.get("#{full_host}/api/v#{@api_version}/#{endpoint}")
56
+ end
57
+
53
58
  # Gets data from the server
54
59
  def get(endpoint, **args)
55
60
  _define_action(:get, endpoint, args)
@@ -68,11 +73,15 @@ module Manabu
68
73
  _define_action(:delete, endpoint, args)
69
74
  end
70
75
 
76
+ def full_host
77
+ "#{@protocol}://#{@server_url}:#{@server_port}"
78
+ end
79
+
71
80
  def _define_action(action, endpoint, args)
72
81
  response = connect.send(
73
82
  action,
74
83
  URI.encode(
75
- "#{@protocol}://#{@server_url}:#{@server_port}/api/v#{@api_version}/#{endpoint}"),
84
+ "#{full_host}/api/v#{@api_version}/#{endpoint}"),
76
85
  args,
77
86
  _header_hash
78
87
  )
@@ -0,0 +1,16 @@
1
+ require_relative './resource'
2
+
3
+ module Manabu
4
+ class Contact < Resource
5
+ attr_accessor :id, :data, :contact_type_id
6
+
7
+ def fill(**info)
8
+ @id = info.fetch(:id, @id)
9
+ @data = info.fetch(:data, @data)
10
+ @contact_type_id = info.fetch(:contact_type_id, @contact_type_id)
11
+
12
+ self
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ module Manabu
2
+ class ContactTypes
3
+ attr_accessor :client
4
+
5
+ def initialize(client)
6
+ @client = client
7
+ @contact_types = {}
8
+ end
9
+
10
+ def register(name)
11
+ response = @client.post("/contact_types", name: name)
12
+ response[:id]
13
+ rescue
14
+ nil
15
+ end
16
+
17
+ def all
18
+ return @contact_types unless @contact_types.empty?
19
+
20
+ response = @client.get("/contact_types")
21
+ @contact_types = response[:contact_types].each_with_object({}) do |type, obj|
22
+ obj[type[:name]] = type[:id]
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module Manabu
2
+ class EnrollmentStatus < Resource
3
+ attr_reader :id, :active, :code, :immutable
4
+
5
+ def fill(**info)
6
+ @id = info.fetch(:id, @id)
7
+ @code = info.fetch(:code, @code)
8
+ @active = info.fetch(:active, @active)
9
+ @immutable = info.fetch(:immutable, @immutable)
10
+ self
11
+ end
12
+
13
+ end
14
+ end
@@ -0,0 +1,21 @@
1
+ require_relative 'enrollment_status'
2
+ module Manabu
3
+ class EnrollmentStatuses
4
+ attr_accessor :client
5
+
6
+ def initialize(client)
7
+ @client = client
8
+ @enrollment_statuses = []
9
+ end
10
+
11
+ def all
12
+ return @enrollment_statuses unless @enrollment_statuses.empty?
13
+
14
+ response = @client.get("/enrollment_statuses")
15
+
16
+ @enrollment_statuses = response.map do |enrollment_status|
17
+ Manabu::EnrollmentStatus.new(@client, enrollment_status)
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,11 +1,22 @@
1
+ require 'filemagic'
1
2
  require_relative './resource'
2
3
  require_relative './guardian'
4
+ require_relative './enrollment_status'
5
+ require_relative './contact'
3
6
 
4
7
  module Manabu
5
8
  class Student < Resource
6
9
  class GuardianNotAdded < StandardError; end
10
+ class ContactNotAdded < StandardError; end
7
11
  attr_accessor :id, :surname, :name, :name_reading,
8
- :surname_reading, :birth_date, :gender
12
+ :surname_reading, :middle_name,
13
+ :middle_name_reading,:birth_date, :gender, :enrollment_status
14
+
15
+ def initialize(client, **info)
16
+ super
17
+ @contacts = []
18
+ @picture = nil
19
+ end
9
20
 
10
21
  def fill(**info)
11
22
  @id = info.fetch(:id, @id)
@@ -15,15 +26,31 @@ module Manabu
15
26
  @surname_reading = info.fetch(:surname_reading, @surname_reading)
16
27
  @birth_date = info.fetch(:birth_date, @birth_date)
17
28
  @gender = info.fetch(:gender, @gender)
18
-
29
+ @enrollment_status = Manabu::EnrollmentStatus.new(@client, info[:enrollment_status] || {})
19
30
  self
20
31
  end
21
32
 
33
+ def picture
34
+ return unless @id
35
+ return @picture if @picture
36
+
37
+ response = @client.simple_get("students/#{id}/picture")
38
+ @picture = response.body
39
+ end
40
+
22
41
  def set(**info)
23
42
  response = @client.patch("students/#{@id}", info)
24
43
  fill(response)
25
44
  end
26
45
 
46
+ def add_picture(path)
47
+ file = Faraday::UploadIO.new(path, FileMagic.new(FileMagic::MAGIC_MIME).file(path))
48
+
49
+ response = @client.patch("students/#{@id}", picture: file)
50
+ @picture = nil
51
+ fill(response)
52
+ end
53
+
27
54
  def add_guardian(guardian)
28
55
  # NOTE: detect when guardian is already added to student
29
56
  response = @client.post("students/#{id}/student_guardians", guardian_id: guardian.id)
@@ -32,6 +59,17 @@ module Manabu
32
59
  raise GuardianNotAdded, 'Guardian is not added to student'
33
60
  end
34
61
 
62
+ def add_contact(contact_type_id, data)
63
+ response = @client.post("students/#{id}/contacts",
64
+ contact_type_id: contact_type_id,
65
+ data: data
66
+ )
67
+ @contacts.push Contact.new(@client, response)
68
+ self
69
+ # rescue StandardError
70
+ # raise ContactNotAdded, 'Contact is not added to student'
71
+ end
72
+
35
73
  def guardians
36
74
  response = @client.get("students/#{id}/guardians")
37
75
  response[:guardians].map do |guardian|
@@ -34,6 +34,14 @@ module Manabu
34
34
  end
35
35
  end
36
36
 
37
+ def filter(attrs = {})
38
+ result = students.dup
39
+ if attrs.has_key?(:enrollment_status)
40
+ result.select! { |student| student.enrollment_status&.code == attrs[:enrollment_status] }
41
+ end
42
+ result
43
+ end
44
+
37
45
  def register(student)
38
46
  new_student = case student
39
47
  when Manabu::Student
@@ -73,8 +81,8 @@ module Manabu
73
81
  end
74
82
  end
75
83
 
76
- def whitelist_filter_attributes()
77
- [:name, :surname]
84
+ def whitelist_filter_attributes
85
+ [:id, :name, :surname]
78
86
  end
79
87
 
80
88
  def _fetch_students()
@@ -1,18 +1,18 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'manabu'
3
- s.version = '0.0.3'
3
+ s.version = '0.0.4'
4
4
  s.licenses = ['AGPL-3.0', 'GPL-3.0']
5
5
  s.summary = 'API client for GAKU Engine'
6
6
  s.description = 'Manabu is an API client module used to access the GAKU Engine API'
7
7
  s.post_install_message = \
8
- '╔═════════════════════════╼' +
9
- "║Manabu API Client for ⚙学 GAKU Engine [学エンジン] " +
10
- '╟─────────────────────────╼' +
11
- '║©2015 (株)幻創社 [Phantom Creation Inc.]' +
12
- '║http://www.gakuengine.com' +
13
- '╟─────────────────────────╼' +
14
- '║Manabu is Open Sourced under the AGPLv3/GPLv3.' +
15
- '╚═════════════════════════╼'
8
+ "╔═════════════════════════╼\n" +
9
+ "║Manabu API Client for ⚙学 GAKU Engine [学エンジン] \n" +
10
+ "╟─────────────────────────╼\n" +
11
+ "║©2015 (株)幻創社 [Phantom Creation Inc.]\n" +
12
+ "║http://www.gakuengine.com\n" +
13
+ "╟─────────────────────────╼\n" +
14
+ "║Manabu is Open Sourced under the AGPLv3/GPLv3.\n" +
15
+ "╚═════════════════════════╼\n"
16
16
  s.authors = ['Rei Kagetsuki']
17
17
  s.email = 'info@gakuengine.com'
18
18
  s.homepage = 'http://www.gakuengine.com'
@@ -25,5 +25,6 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency 'faraday_middleware', '~> 0.12', '~> 0.12.2'
26
26
  s.add_dependency 'typhoeus', '~> 1.3', '~> 1.3.0'
27
27
  s.add_dependency 'msgpack', '~> 1.2', '~> 1.2.2'
28
- s.add_development_dependency 'gaku', '~> 0.3.0', '~> 0.3.0.pre.4'
28
+ s.add_dependency 'ruby-filemagic'
29
+ s.add_development_dependency 'gaku', '~> 0.3', '~> 0.3.0'
29
30
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manabu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rei Kagetsuki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-21 00:00:00.000000000 Z
11
+ date: 2018-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -90,26 +90,40 @@ dependencies:
90
90
  - - "~>"
91
91
  - !ruby/object:Gem::Version
92
92
  version: 1.2.2
93
+ - !ruby/object:Gem::Dependency
94
+ name: ruby-filemagic
95
+ requirement: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :runtime
101
+ prerelease: false
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: '0'
93
107
  - !ruby/object:Gem::Dependency
94
108
  name: gaku
95
109
  requirement: !ruby/object:Gem::Requirement
96
110
  requirements:
97
111
  - - "~>"
98
112
  - !ruby/object:Gem::Version
99
- version: 0.3.0
113
+ version: '0.3'
100
114
  - - "~>"
101
115
  - !ruby/object:Gem::Version
102
- version: 0.3.0.pre.4
116
+ version: 0.3.0
103
117
  type: :development
104
118
  prerelease: false
105
119
  version_requirements: !ruby/object:Gem::Requirement
106
120
  requirements:
107
121
  - - "~>"
108
122
  - !ruby/object:Gem::Version
109
- version: 0.3.0
123
+ version: '0.3'
110
124
  - - "~>"
111
125
  - !ruby/object:Gem::Version
112
- version: 0.3.0.pre.4
126
+ version: 0.3.0
113
127
  description: Manabu is an API client module used to access the GAKU Engine API
114
128
  email: info@gakuengine.com
115
129
  executables: []
@@ -123,8 +137,12 @@ files:
123
137
  - lib/manabu/connection/auth.rb
124
138
  - lib/manabu/connection/error.rb
125
139
  - lib/manabu/connection/transactor.rb
140
+ - lib/manabu/contact.rb
141
+ - lib/manabu/contact_types.rb
126
142
  - lib/manabu/course.rb
127
143
  - lib/manabu/courses.rb
144
+ - lib/manabu/enrollment_status.rb
145
+ - lib/manabu/enrollment_statuses.rb
128
146
  - lib/manabu/guardian.rb
129
147
  - lib/manabu/resource.rb
130
148
  - lib/manabu/student.rb
@@ -136,9 +154,9 @@ licenses:
136
154
  - AGPL-3.0
137
155
  - GPL-3.0
138
156
  metadata: {}
139
- post_install_message: "╔═════════════════════════╼║Manabu API Client for ⚙学 GAKU Engine
140
- [学エンジン] ╟─────────────────────────╼║©2015 (株)幻創社 [Phantom Creation Inc.]║http://www.gakuengine.com╟─────────────────────────╼║Manabu
141
- is Open Sourced under the AGPLv3/GPLv3.╚═════════════════════════╼"
157
+ post_install_message: "╔═════════════════════════╼\n║Manabu API Client for ⚙学 GAKU
158
+ Engine [学エンジン] \n╟─────────────────────────╼\n║©2015 (株)幻創社 [Phantom Creation Inc.]\n║http://www.gakuengine.com\n╟─────────────────────────╼\n║Manabu
159
+ is Open Sourced under the AGPLv3/GPLv3.\n╚═════════════════════════╼\n"
142
160
  rdoc_options: []
143
161
  require_paths:
144
162
  - lib