ragoon 0.1.2 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9888c1b733deb0d5b837c785d7bb8425e74e4760
4
- data.tar.gz: 7af19d7304ae81c1e32e3dbe8363b4b8f1190dde
3
+ metadata.gz: 12fc8358cceea9d28479abb355d9e6a3d9afdec3
4
+ data.tar.gz: e8f40376e28e84674a9357375cbf609e51f1a4d3
5
5
  SHA512:
6
- metadata.gz: 37417a77b11b64352ee476fb99ff354e8534d0b3fde04520816bb9005a02ffd5db2352996e5f03fd51142c4561cf3e53ea87bb69886a698a1e2eb7ba3bec4d4e
7
- data.tar.gz: 63a4c4aae0fa8e0daeaf2cca33b268e09c119212176dc7e6853f94bafcd19494043640f78226b31d6c888168ac03d37464fd5b02441cbffe89ecbd99822d8573
6
+ metadata.gz: a150442661ae09d84b356ba2ccb028009f6c8a19cfc9996f05183eefb539164493ec02a04111272c5a7dedd8f1b2a06265e0e46711c0f9179d882553ecc30889
7
+ data.tar.gz: 3454e259bd635c2b3502be38c88d2c3d3a3f0b84333e0b38e3eb9e74c3c4161bbb916ad5c5985471ee49eaf9b8f559a4c2ba47ee7c9054ed0495af53d847ab0b
data/lib/ragoon.rb CHANGED
@@ -3,6 +3,7 @@ require 'ragoon/xml'
3
3
  require 'ragoon/client'
4
4
  require 'ragoon/services'
5
5
  require 'ragoon/services/schedule'
6
+ require 'ragoon/services/notification'
6
7
 
7
8
  require 'nokogiri'
8
9
  require 'rest-client'
data/lib/ragoon/client.rb CHANGED
@@ -14,4 +14,8 @@ class Ragoon::Client
14
14
  def result_set
15
15
  @result_set ||= Nokogiri::XML.parse(response.body)
16
16
  end
17
+
18
+ def reset
19
+ @result_set = nil
20
+ end
17
21
  end
@@ -1,6 +1,7 @@
1
1
  class Ragoon::Services
2
2
  SERVICE_LOCATIONS = {
3
- schedule: '/cbpapi/schedule/api?',
3
+ schedule: '/cbpapi/schedule/api?',
4
+ notification: '/cbpapi/notification/api?',
4
5
  }.freeze
5
6
 
6
7
  attr_reader :client, :action_type
@@ -14,4 +15,11 @@ class Ragoon::Services
14
15
  endpoint = URI(Ragoon.garoon_endpoint)
15
16
  "#{endpoint.scheme}://#{endpoint.host}#{endpoint.path}#{SERVICE_LOCATIONS[action_type]}"
16
17
  end
18
+
19
+ def self.start_and_end(date = Date.today)
20
+ {
21
+ start: Time.local(date.year, date.month, date.day, 0).utc,
22
+ end: Time.local(date.year, date.month, date.day + 1, 0).utc,
23
+ }
24
+ end
17
25
  end
@@ -0,0 +1,85 @@
1
+ class Ragoon::Services::Notification < Ragoon::Services
2
+ RETRIEVE_OPTIONS = {
3
+ date: Date.today,
4
+ module_ids: %w[grn.schedule grn.workflow],
5
+ }.freeze
6
+
7
+ def retrieve(options = {})
8
+ options = RETRIEVE_OPTIONS.dup.merge(options)
9
+ results = options[:module_ids].each_with_object({}) do |module_id, result|
10
+ result[module_id] = notification_get_notification_versions(module_id, options[:date])
11
+ client.reset
12
+ end
13
+
14
+ items = results.each_with_object([]) do |(module_id, notifications), result|
15
+ notifications.xpath('//notification_item').each do |notification|
16
+ result.push(
17
+ {
18
+ module_id: module_id,
19
+ item: notification.xpath('notification_id').first[:item]
20
+ }
21
+ )
22
+ end
23
+ end
24
+
25
+ notifications = notification_get_notifications_by_id(items)
26
+ keys = notifications.xpath('//notification').first.attributes.keys.map(&:to_sym)
27
+
28
+ notifications.xpath('//notification').each_with_object([]) do |notification, result|
29
+ result.push(
30
+ keys.each_with_object({}) { |key, hash| hash[key] = notification[key] }
31
+ )
32
+ end
33
+ end
34
+
35
+ def notification_get_notification_versions(module_id, date)
36
+ action_name = 'NotificationGetNotificationVersions'
37
+ body_node = Ragoon::XML.create_node(action_name)
38
+ target_date = Ragoon::Services.start_and_end(date)
39
+
40
+ parameter_node = Ragoon::XML.create_node(
41
+ 'parameters',
42
+ start: target_date[:start].strftime('%FT%T'),
43
+ end: target_date[:end].strftime('%FT%T'),
44
+ module_id: module_id,
45
+ )
46
+
47
+ body_node.add_child(parameter_node)
48
+
49
+ client.request(action_name, body_node)
50
+ client.result_set
51
+ end
52
+
53
+ def notification_get_notifications_by_id(notification_items)
54
+ action_name = 'NotificationGetNotificationsById'
55
+ body_node = Ragoon::XML.create_node(action_name)
56
+ today = Ragoon::Services.start_and_end
57
+
58
+ parameter_node = Ragoon::XML.create_node('parameters')
59
+
60
+ notification_items.each do |notification_item|
61
+ parameter_node.add_child(
62
+ Ragoon::XML.create_node(
63
+ 'notification_id',
64
+ module_id: notification_item[:module_id],
65
+ item: notification_item[:item],
66
+ )
67
+ )
68
+ end
69
+
70
+ body_node.add_child(parameter_node)
71
+
72
+ client.request(action_name, body_node)
73
+ client.result_set
74
+ end
75
+
76
+
77
+ def default_options(action_name)
78
+ case action_name
79
+ when 'ScheduleGetEvents'
80
+ Ragoon::Services.start_and_end
81
+ else
82
+ {}
83
+ end
84
+ end
85
+ end
@@ -47,11 +47,7 @@ class Ragoon::Services::Schedule < Ragoon::Services
47
47
  def default_options(action_name)
48
48
  case action_name
49
49
  when 'ScheduleGetEvents'
50
- today = Date.today
51
- {
52
- start: Time.local(today.year, today.month, today.day, 0).utc,
53
- end: Time.local(today.year, today.month, today.day + 1, 0).utc,
54
- }
50
+ Ragoon::Services.start_and_end
55
51
  else
56
52
  {}
57
53
  end
@@ -1,3 +1,3 @@
1
1
  module Ragoon
2
- VERSION = '0.1.2'
2
+ VERSION = '0.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ragoon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - SHIOYA, Hiromu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-22 00:00:00.000000000 Z
11
+ date: 2015-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -99,6 +99,7 @@ files:
99
99
  - lib/ragoon.rb
100
100
  - lib/ragoon/client.rb
101
101
  - lib/ragoon/services.rb
102
+ - lib/ragoon/services/notification.rb
102
103
  - lib/ragoon/services/schedule.rb
103
104
  - lib/ragoon/version.rb
104
105
  - lib/ragoon/xml.rb
@@ -123,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
123
124
  version: '0'
124
125
  requirements: []
125
126
  rubyforge_project:
126
- rubygems_version: 2.4.8
127
+ rubygems_version: 2.4.5.1
127
128
  signing_key:
128
129
  specification_version: 4
129
130
  summary: Ragoon is a simple Garoon 3 API client.