kokkai 0.1.4 → 0.2.0
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/.travis.yml +5 -0
- data/README.md +20 -4
- data/lib/kokkai/api_methods.rb +4 -0
- data/lib/kokkai/client.rb +6 -3
- data/lib/kokkai/data.rb +2 -0
- data/lib/kokkai/error.rb +44 -0
- data/lib/kokkai/meeting.rb +19 -0
- data/lib/kokkai/parser.rb +15 -2
- data/lib/kokkai/response.rb +1 -1
- data/lib/kokkai/version.rb +1 -1
- metadata +5 -3
- data/lib/kokkai/errors.rb +0 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2d55e93920f786bbb3978bf6c43f974781720a7a7db843d88dde7d91a31eca4d
|
4
|
+
data.tar.gz: 6a3a546d9db2361c68e096bd13553390ed52b030846369afe3ce7ed75a92a21c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b7fc77b81c04801e973a73fdcfeb1b4d2de3c8a7da77f03d49e73aa05361135fa825fe445c567c51e58a015aaadc9cb03355505c9abf9895b7b9674eaac4178
|
7
|
+
data.tar.gz: 2d84485521d8ce4334ce8253c4f332776b1ab6382623695a896c6c449aee967ec4231e34b1e668de30ad9a0f02d1198fed55565026d280c4b2b961703be52959
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# Kokkai
|
2
2
|
|
3
|
-
|
3
|
+
[](https://travis-ci.org/kimihito/kokkai)
|
4
4
|
|
5
|
-
|
5
|
+
http://kokkai.ndl.go.jp/api.html client library, written in Ruby
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,7 +22,23 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
```
|
26
|
+
# Initialization
|
27
|
+
client = Kokkai::Client.new
|
28
|
+
|
29
|
+
# Call speech data
|
30
|
+
client.speech(any: "アベノミクス", speaker: "安倍晋三", start_record: 1, maximum_records: 5).body.data
|
31
|
+
|
32
|
+
|
33
|
+
# call meeting API
|
34
|
+
|
35
|
+
client.meeting(name_of_house: "両院", name_of_meeting: "国家基本政策委員会合同審査会").body.data
|
36
|
+
|
37
|
+
|
38
|
+
```
|
39
|
+
|
40
|
+
More information about parameters and attributes is [here](http://kokkai.ndl.go.jp/api.html#specification) (Japanese).
|
41
|
+
|
26
42
|
|
27
43
|
## Development
|
28
44
|
|
@@ -32,7 +48,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
48
|
|
33
49
|
## Contributing
|
34
50
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
51
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/kimihito/kokkai.
|
36
52
|
|
37
53
|
## License
|
38
54
|
|
data/lib/kokkai/api_methods.rb
CHANGED
data/lib/kokkai/client.rb
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
require 'erb'
|
2
|
-
require 'kokkai/errors'
|
3
2
|
require 'kokkai/api_methods'
|
4
3
|
require 'kokkai/response'
|
4
|
+
require 'kokkai/utils/string_formatter'
|
5
5
|
|
6
6
|
module Kokkai
|
7
7
|
class Client
|
8
8
|
include ApiMethods
|
9
|
-
|
10
9
|
def initialize
|
11
10
|
end
|
12
11
|
|
@@ -54,10 +53,14 @@ module Kokkai
|
|
54
53
|
end
|
55
54
|
|
56
55
|
class ParamsEncoder
|
56
|
+
using Utils::StringFormatter
|
57
|
+
|
57
58
|
def self.encode(params)
|
58
|
-
|
59
|
+
camelized_params = Hash[params.map {|k,v| [k.to_s.to_camel.to_sym, v]}]
|
60
|
+
str = camelized_params.map {|(key, value)|
|
59
61
|
"#{key}=#{value}"
|
60
62
|
}.join('&')
|
63
|
+
|
61
64
|
return ERB::Util.url_encode(str)
|
62
65
|
end
|
63
66
|
|
data/lib/kokkai/data.rb
CHANGED
data/lib/kokkai/error.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
module Kokkai
|
2
|
+
class Error < StandardError
|
3
|
+
attr_reader :code
|
4
|
+
|
5
|
+
ClientError = Class.new(self)
|
6
|
+
BadRequest = Class.new(ClientError)
|
7
|
+
|
8
|
+
ERRORS = {
|
9
|
+
400 => Kokkai::Error::BadRequest
|
10
|
+
}.freeze
|
11
|
+
|
12
|
+
ATTRIBUTES = %w(data diagnostics diagnostic)
|
13
|
+
|
14
|
+
class << self
|
15
|
+
def from_response(body)
|
16
|
+
message, code = parse_error(body)
|
17
|
+
new(message, code)
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def parse_error(body)
|
23
|
+
if body.nil? || body.empty?
|
24
|
+
['', nil]
|
25
|
+
elsif body.dig("data", "diagnostics")
|
26
|
+
extract_message_from_error(body.dig(*ATTRIBUTES))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def extract_message_from_error(body)
|
31
|
+
message = body.dig("details").nil? ? body.dig("message") : body.dig("details")
|
32
|
+
message = message.first if message.is_a?(Array)
|
33
|
+
match = message.match(/\([0-9]{5}\)/)
|
34
|
+
[match.post_match, match[0].gsub(/\(|\)/, '').to_i]
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize(message, code)
|
40
|
+
super(message)
|
41
|
+
@code = code
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'kokkai/record'
|
2
|
+
require 'kokkai/speech'
|
3
|
+
|
4
|
+
module Kokkai
|
5
|
+
class Meeting < Record
|
6
|
+
|
7
|
+
def initialize(raw)
|
8
|
+
super
|
9
|
+
@raw_record = @raw_record.dig("meetingRecord")
|
10
|
+
end
|
11
|
+
|
12
|
+
def speeches
|
13
|
+
@raw_record.dig("speechRecord").map do |record|
|
14
|
+
recordData = { "recordData" => { "speechRecord" => record } }
|
15
|
+
Kokkai::Speech.new(recordData)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
data/lib/kokkai/parser.rb
CHANGED
@@ -1,10 +1,23 @@
|
|
1
1
|
require "kokkai/data"
|
2
|
+
require "kokkai/error"
|
2
3
|
module Kokkai
|
3
4
|
class Parser
|
4
5
|
attr_reader :raw_data, :data
|
5
6
|
|
6
|
-
def initialize(raw_data)
|
7
|
-
|
7
|
+
def initialize(raw_data, raw_status)
|
8
|
+
if raw_status == 200
|
9
|
+
@data = Data.new(raw_data.dig("data"))
|
10
|
+
else
|
11
|
+
error = error(raw_data, raw_status)
|
12
|
+
raise(error)
|
13
|
+
end
|
8
14
|
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def error(raw_data, raw_status)
|
19
|
+
klass = Kokkai::Error::ERRORS[raw_status]
|
20
|
+
klass.from_response(raw_data)
|
21
|
+
end
|
9
22
|
end
|
10
23
|
end
|
data/lib/kokkai/response.rb
CHANGED
data/lib/kokkai/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kokkai
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kimihito
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-06-
|
11
|
+
date: 2018-06-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -200,6 +200,7 @@ extensions: []
|
|
200
200
|
extra_rdoc_files: []
|
201
201
|
files:
|
202
202
|
- ".gitignore"
|
203
|
+
- ".travis.yml"
|
203
204
|
- Gemfile
|
204
205
|
- Guardfile
|
205
206
|
- MIT-LICENSE
|
@@ -212,7 +213,8 @@ files:
|
|
212
213
|
- lib/kokkai/api_methods.rb
|
213
214
|
- lib/kokkai/client.rb
|
214
215
|
- lib/kokkai/data.rb
|
215
|
-
- lib/kokkai/
|
216
|
+
- lib/kokkai/error.rb
|
217
|
+
- lib/kokkai/meeting.rb
|
216
218
|
- lib/kokkai/parser.rb
|
217
219
|
- lib/kokkai/record.rb
|
218
220
|
- lib/kokkai/response.rb
|
data/lib/kokkai/errors.rb
DELETED