manabu 0.0.3 → 0.0.4

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 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