ragoon 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/README.md +14 -1
- data/lib/ragoon/services/schedule.rb +93 -10
- data/lib/ragoon/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1bd17aa5999417317d8d7122fe928d727075fcc
|
4
|
+
data.tar.gz: 8ec9bb5f18cf400f187e90de4206d80bb19e0dfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5be2f9fb7274272a3998b672d56767bc9828e57230d557c56847500721b5a4c4d6683462361c12dba864d868bc3a81d3f3c2fd69d630141d272d62a90703cb15
|
7
|
+
data.tar.gz: e42d97e88f1c07bdc4910b126ac0fb24f9fe6a75052cea53d41a1d5d85c1a25f6264a8698e9efeb4cf54918b2e08648064ebd0abb642a396a2c51dde0dd1ab14
|
data/.travis.yml
CHANGED
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.
|
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
|
-
|
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
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
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
|
data/lib/ragoon/version.rb
CHANGED
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
|
+
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-
|
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.
|
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.
|