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