ragoon 0.4.3 → 0.5.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: 5919ed1eea5b9a8f42e4de51236b14501c6e5009
4
- data.tar.gz: 2368c04238ee38a73f96fae9b003408fec7107d0
3
+ metadata.gz: e1bd17aa5999417317d8d7122fe928d727075fcc
4
+ data.tar.gz: 8ec9bb5f18cf400f187e90de4206d80bb19e0dfe
5
5
  SHA512:
6
- metadata.gz: 6f55301e8d44fe0952dc57fae2ea3cc02d9efb7d9bfdeb5a1e85981e5414d99ad5c9b77f92773254770021adce14f82f8b2e856086aa2d6b4dbf030f478d518a
7
- data.tar.gz: cab618d10280ad6cade502e2191a720838196396c1cc242dc6d689fcbcaf1cd5da96ee165a0a46f08173c7bbd02c6068d8d9def7c177517d5f6942f3d3e3e01e
6
+ metadata.gz: 5be2f9fb7274272a3998b672d56767bc9828e57230d557c56847500721b5a4c4d6683462361c12dba864d868bc3a81d3f3c2fd69d630141d272d62a90703cb15
7
+ data.tar.gz: e42d97e88f1c07bdc4910b126ac0fb24f9fe6a75052cea53d41a1d5d85c1a25f6264a8698e9efeb4cf54918b2e08648064ebd0abb642a396a2c51dde0dd1ab14
@@ -1,4 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.3.0
4
- - 2.2.3
4
+ - 2.2.4
data/README.md CHANGED
@@ -12,7 +12,7 @@ Ragoon is simple Garoon 3 API Client.
12
12
 
13
13
  ```
14
14
  service = Ragoon::Services::Schedule.new
15
- events = service.schedule_get_event
15
+ events = service.schedule_get_events
16
16
 
17
17
  => [
18
18
  {:id=>"1334236", :url=>"https://example.co.jp/cgi-bin/cbgrn/grn.cgi/schedule/view?event=1334236", :title=>"ログ収集システムについて", :start_at=>"2016-01-15 13:30:00 +0900", :end_at=>"2016-01-15 14:00
@@ -20,6 +20,19 @@ events = service.schedule_get_event
20
20
  {:id=>"1336040", :url=>"https://example.co.jp/cgi-bin/cbgrn/grn.cgi/schedule/view?event=1336040", :title=>"スプリントMTG", :start_at=>"2016-01-15 14:00:00 +0900", :end_at=>"2016-01-15 15:00:00
21
21
  +0900", :plan=>"社内MTG", :facilities=>["会議室 13-e","会議室 13-f"], :private=>false, :allday=>false},
22
22
  ]
23
+
24
+ service.schedule_add_event(
25
+ title: 'プロジェクトキックオフ',
26
+ description: '新規プロジェクト概要説明',
27
+ start_at: Time.new(2016, 1, 15, 13, 0),
28
+ end_at: Time.new(2016, 1, 15, 13, 30),
29
+ plan: '社内MTG',
30
+ users: [1],
31
+ private: false,
32
+ allday: false
33
+ )
34
+
35
+ => {:id=>"1338211", :url=>"https://example.co.jp/cgi-bin/cbgrn/grn.cgi/schedule/view?event=1338211", :title=>"プロジェクトキックオフ", :start_at=>"2016-01-15 13:00:00 +0900", :end_at=>"2016-01-15 13:30:00+0900", :plan=>"社内MTG", :facilities=>[], :users=>[{:id => 1, :name => "田中 太郎"}], :private=>false, :allday=>false}
23
36
  ```
24
37
 
25
38
  ### Notification
@@ -18,19 +18,91 @@ class Ragoon::Services::Schedule < Ragoon::Services
18
18
 
19
19
  events = client.result_set.xpath('//schedule_event').
20
20
  find_all { |ev| ev[:event_type] != 'banner' }.map do |event|
21
- period = start_and_end(event)
21
+ parse_event(event)
22
+ end
23
+ end
24
+
25
+ def schedule_add_event(options = {})
26
+ action_name = 'ScheduleAddEvents'
27
+
28
+ options = default_options(action_name).merge(options)
29
+
30
+ body_node = Ragoon::XML.create_node(action_name)
31
+ parameter_node = Ragoon::XML.create_node('parameters')
32
+ body_node.add_child(parameter_node)
33
+
34
+ schedule_event_node = Ragoon::XML.create_node(
35
+ 'schedule_event',
22
36
  {
23
- id: event[:id],
24
- url: event_url(event[:id]),
25
- title: event[:detail],
26
- start_at: period[:start_at],
27
- end_at: period[:end_at],
28
- plan: event[:plan],
29
- facilities: facility_names(event),
30
- private: !(event[:public_type] == 'public'),
31
- allday: event[:allday] == 'true',
37
+ xmlns: '',
38
+ id: 'dummy',
39
+ version: 'dummy',
40
+ event_type: 'normal',
41
+ plan: options[:plan],
42
+ detail: options[:title],
43
+ description: options[:description],
44
+ public_type: (options[:private] ? 'private' : 'public')
32
45
  }
46
+ )
47
+ parameter_node.add_child(schedule_event_node)
48
+
49
+ members_node = Ragoon::XML.create_node(
50
+ 'members',
51
+ xmlns: 'http://schemas.cybozu.co.jp/schedule/2008'
52
+ )
53
+ schedule_event_node.add_child(members_node)
54
+ if options[:users]
55
+ options[:users].each do |user|
56
+ member_node = Ragoon::XML.create_node('member')
57
+ user_node = Ragoon::XML.create_node('user', id: user.to_i)
58
+ member_node.add_child(user_node)
59
+ members_node.add_child(member_node)
60
+ end
33
61
  end
62
+
63
+ when_node = Ragoon::XML.create_node(
64
+ 'when',
65
+ xmlns: 'http://schemas.cybozu.co.jp/schedule/2008'
66
+ )
67
+ date_node =
68
+ if options[:allday]
69
+ Ragoon::XML.create_node(
70
+ 'date',
71
+ start: options[:start_at].strftime('%F'),
72
+ end: options[:end_at].strftime('%F')
73
+ )
74
+ else
75
+ Ragoon::XML.create_node(
76
+ 'datetime',
77
+ start: options[:start_at].utc.strftime('%FT%T'),
78
+ end: options[:end_at].utc.strftime('%FT%T')
79
+ )
80
+ end
81
+ when_node.add_child(date_node)
82
+ schedule_event_node.add_child(when_node)
83
+
84
+ client.request(action_name, body_node)
85
+
86
+ events = client.result_set.xpath('//schedule_event').
87
+ find_all { |ev| ev[:event_type] != 'banner' }.map { |event|
88
+ parse_event(event)
89
+ }.first
90
+ end
91
+
92
+ def parse_event(event)
93
+ period = start_and_end(event)
94
+ {
95
+ id: event[:id],
96
+ url: event_url(event[:id]),
97
+ title: event[:detail],
98
+ start_at: period[:start_at],
99
+ end_at: period[:end_at],
100
+ plan: event[:plan],
101
+ facilities: facility_names(event),
102
+ users: users_info(event),
103
+ private: !(event[:public_type] == 'public'),
104
+ allday: event[:allday] == 'true',
105
+ }
34
106
  end
35
107
 
36
108
  def event_url(id)
@@ -43,6 +115,17 @@ class Ragoon::Services::Schedule < Ragoon::Services
43
115
  compact.map { |n| n[:name] }
44
116
  end
45
117
 
118
+ def users_info(event)
119
+ event.xpath('ev:members', ev: "http://schemas.cybozu.co.jp/schedule/2008").
120
+ children.map { |c| c.xpath('ev:user', ev: "http://schemas.cybozu.co.jp/schedule/2008").first }.
121
+ compact.map do |n|
122
+ {
123
+ id: n[:id].to_i,
124
+ name: n[:name].to_s,
125
+ }
126
+ end
127
+ end
128
+
46
129
  def start_and_end(event)
47
130
  start_at = nil
48
131
  end_at = nil
@@ -1,3 +1,3 @@
1
1
  module Ragoon
2
- VERSION = '0.4.3'
2
+ VERSION = '0.5.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.4.3
4
+ version: 0.5.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: 2016-01-30 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -138,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  version: '0'
139
139
  requirements: []
140
140
  rubyforge_project:
141
- rubygems_version: 2.5.1
141
+ rubygems_version: 2.6.1
142
142
  signing_key:
143
143
  specification_version: 4
144
144
  summary: Ragoon is a simple Garoon 3 API client.