pixela 1.3.1 → 1.4.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
  SHA256:
3
- metadata.gz: f9efdafcfea7a90985336604bc68755a79ca200ad48f0682ce5a274f6bb23238
4
- data.tar.gz: 6eb16f9eef42f1fc9f3983759b4819776ce18acba486680f4e620892097c5b7c
3
+ metadata.gz: 375d6ec8ab2c9c4be2747ba45a7c820ced86af17de33af609d9dd1113838b029
4
+ data.tar.gz: daf59f70e4899e6bb62dd3ea3f2f1e8406d9de8172b47e22b90a462d1cceee2e
5
5
  SHA512:
6
- metadata.gz: 8727d06117b6ca73c52ce02afc0231f44582a7a7a7c9c70f943036d59041b71497023076191cc08a320fe9cfa0037336c99ade3aa2e9bb1353d49afef46baf4c
7
- data.tar.gz: d7348691f57c02d3d4fdfb55157d1f637a802df67fd39719f984e96db9005e0c6281b795848e0a7417e4e9c15c24754bfc8a2f7a98065b7f538b7fac31a804a3
6
+ metadata.gz: 44f9c7ff48301f987d0978320fe637b4881680f9c18afecd5034ca475c1207fd23a11113f21588ad596f0e6018f213bfc70902b4d91043c144ba87bb07f367ad
7
+ data.tar.gz: ac91d230a786cba5a1a3599fa9cb4ade64a2965dd1c3086be6a57ea9997c02af8937363e246da7d14e9518fa5ead6591767f533ed23f6b32da56562145801349
@@ -15,7 +15,7 @@ before_script:
15
15
  - chmod +x ./cc-test-reporter
16
16
  - ./cc-test-reporter before-build
17
17
  script:
18
- - bundle exec rspec
18
+ - RUBYOPT=$RSPEC_RUBYOPT bundle exec rspec
19
19
  after_script:
20
20
  - if [ "$PIXELA_WEBHOOK_URL" != "" ]; then curl -X POST $PIXELA_WEBHOOK_URL -H 'Content-Length:0'; fi
21
21
  - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
@@ -31,9 +31,9 @@ matrix:
31
31
  - rvm: ruby-head
32
32
  include:
33
33
  - rvm: 2.6
34
- env: RUBYOPT="--jit"
34
+ env: RSPEC_RUBYOPT="--jit"
35
35
  - rvm: ruby-head
36
- env: RUBYOPT="--jit"
36
+ env: RSPEC_RUBYOPT="--jit"
37
37
  sudo: false
38
38
  env:
39
39
  global:
@@ -1,5 +1,12 @@
1
1
  ## Unreleased
2
- [full changelog](http://github.com/sue445/pixela/compare/v1.3.1...master)
2
+ [full changelog](http://github.com/sue445/pixela/compare/v1.4.0...master)
3
+
4
+ ## v1.4.0
5
+ [full changelog](http://github.com/sue445/pixela/compare/v1.3.1...v1.4.0)
6
+
7
+ * Support Channel and Notification API
8
+ * https://github.com/sue445/pixela/pull/59
9
+ * https://github.com/a-know/Pixela/releases/tag/v1.13.0
3
10
 
4
11
  ## v1.3.1
5
12
  [full changelog](http://github.com/sue445/pixela/compare/v1.3.0...v1.3.1)
@@ -5,9 +5,11 @@ require "faraday_curl"
5
5
  require "date"
6
6
 
7
7
  module Pixela
8
+ autoload :Channel, "pixela/channel"
8
9
  autoload :Client, "pixela/client"
9
10
  autoload :Configuration, "pixela/configuration"
10
11
  autoload :Graph, "pixela/graph"
12
+ autoload :Notification, "pixela/notification"
11
13
  autoload :Pixel, "pixela/pixel"
12
14
  autoload :Response, "pixela/response"
13
15
  autoload :Webhook, "pixela/webhook"
@@ -0,0 +1,106 @@
1
+ module Pixela
2
+ class Channel
3
+ # @!attribute [r] client
4
+ # @return [Pixela::Client]
5
+ attr_reader :client
6
+
7
+ # @!attribute [r] id
8
+ # @return [String]
9
+ attr_reader :channel_id
10
+
11
+ # @param client [Pixela::Client]
12
+ # @param graph_id [String]
13
+ def initialize(client:, channel_id:)
14
+ @client = client
15
+ @channel_id = channel_id
16
+ end
17
+
18
+ # Create a new channel settings for notification.
19
+ #
20
+ # @param name [String]
21
+ # @param type [String]
22
+ # @param detail [Hash]
23
+ #
24
+ # @return [Pixela::Response]
25
+ #
26
+ # @raise [Pixela::PixelaError] API is failed
27
+ #
28
+ # @see https://docs.pixe.la/entry/post-channel
29
+ #
30
+ # @example
31
+ # client.channel("my-channel").create(name: "My slack channel", type: "slack", detail: {url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", userName: "Pixela Notification", channelName: "pixela-notify"})
32
+ def create(name:, type:, detail:)
33
+ client.create_channel(channel_id: channel_id, name: name, type: type, detail: detail)
34
+ end
35
+
36
+ # Create a new channel settings for slack notification.
37
+ #
38
+ # @param name [String]
39
+ # @param url [String]
40
+ # @param user_name [String]
41
+ # @param channel_name [String]
42
+ #
43
+ # @return [Pixela::Response]
44
+ #
45
+ # @raise [Pixela::PixelaError] API is failed
46
+ #
47
+ # @see https://docs.pixe.la/entry/post-channel
48
+ #
49
+ # @example
50
+ # client.channel("my-channel").create_with_slack(name: "My slack channel", url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", user_name: "Pixela Notification", channel_name: "pixela-notify")
51
+ def create_with_slack(name:, url:, user_name:, channel_name:)
52
+ client.create_slack_channel(channel_id: channel_id, name: name, url: url, user_name: user_name, channel_name: channel_name)
53
+ end
54
+
55
+ # Update predefined channel settings.
56
+ #
57
+ # @param name [String]
58
+ # @param type [String]
59
+ # @param detail [Hash]
60
+ #
61
+ # @return [Pixela::Response]
62
+ #
63
+ # @raise [Pixela::PixelaError] API is failed
64
+ #
65
+ # @see https://docs.pixe.la/entry/put-channel
66
+ #
67
+ # @example
68
+ # client.channel("my-channel").update(name: "My slack channel", type: "slack", detail: {url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", userName: "Pixela Notification", channelName: "pixela-notify"})
69
+ def update(name:, type:, detail:)
70
+ client.update_channel(channel_id: channel_id, name: name, type: type, detail: detail)
71
+ end
72
+
73
+ # Update predefined slack channel settings.
74
+ #
75
+ # @param name [String]
76
+ # @param url [String]
77
+ # @param user_name [String]
78
+ # @param channel_name [String]
79
+ #
80
+ # @return [Pixela::Response]
81
+ #
82
+ # @raise [Pixela::PixelaError] API is failed
83
+ #
84
+ # @see https://docs.pixe.la/entry/post-channel
85
+ #
86
+ # @example
87
+ # client.channel("my-channel").update_with_slack(name: "My slack channel", url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", user_name: "Pixela Notification", channel_name: "pixela-notify")
88
+ def update_with_slack(name:, url:, user_name:, channel_name:)
89
+ client.update_slack_channel(channel_id: channel_id, name: name, url: url, user_name: user_name, channel_name: channel_name)
90
+ end
91
+
92
+ # Delete predefined channel settings.
93
+ #
94
+ # @see https://docs.pixe.la/entry/delete-channel
95
+ #
96
+ # @return [Pixela::Response]
97
+ #
98
+ # @raise [Pixela::PixelaError] API is failed
99
+ #
100
+ # @example
101
+ # client.channel("my-channel").delete
102
+ def delete
103
+ client.delete_channel(channel_id: channel_id)
104
+ end
105
+ end
106
+ end
@@ -1,11 +1,15 @@
1
1
  module Pixela
2
2
  class Client
3
- autoload :GraphMethods, "pixela/client/graph_methods"
4
- autoload :PixelMethods, "pixela/client/pixel_methods"
5
- autoload :UserMethods, "pixela/client/user_methods"
6
- autoload :WebhookMethods, "pixela/client/webhook_methods"
7
-
3
+ autoload :ChannelMethods, "pixela/client/channel_methods"
4
+ autoload :GraphMethods, "pixela/client/graph_methods"
5
+ autoload :NotificationMethods, "pixela/client/notificaton_methods"
6
+ autoload :PixelMethods, "pixela/client/pixel_methods"
7
+ autoload :UserMethods, "pixela/client/user_methods"
8
+ autoload :WebhookMethods, "pixela/client/webhook_methods"
9
+
10
+ include ChannelMethods
8
11
  include GraphMethods
12
+ include NotificationMethods
9
13
  include PixelMethods
10
14
  include UserMethods
11
15
  include WebhookMethods
@@ -43,6 +47,13 @@ module Pixela
43
47
  Webhook.new(client: self, webhook_hash: webhook_hash)
44
48
  end
45
49
 
50
+ # @param channel_id [String]
51
+ #
52
+ # @return [Pixela::Channel]
53
+ def channel(channel_id)
54
+ Channel.new(client: self, channel_id: channel_id)
55
+ end
56
+
46
57
  private
47
58
 
48
59
  # @!attribute [r] token
@@ -0,0 +1,148 @@
1
+ module Pixela::Client::ChannelMethods
2
+ # Create a new channel settings for notification.
3
+ #
4
+ # @param channel_id [String]
5
+ # @param name [String]
6
+ # @param type [String]
7
+ # @param detail [Hash]
8
+ #
9
+ # @return [Pixela::Response]
10
+ #
11
+ # @raise [Pixela::PixelaError] API is failed
12
+ #
13
+ # @see https://docs.pixe.la/entry/post-channel
14
+ #
15
+ # @example
16
+ # client.create_channel(channel_id: "my-channel", name: "My slack channel", type: "slack", detail: {url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", userName: "Pixela Notification", channelName: "pixela-notify"})
17
+ def create_channel(channel_id:, name:, type:, detail:)
18
+ params = {
19
+ id: channel_id,
20
+ name: name,
21
+ type: type,
22
+ detail: detail,
23
+ }
24
+
25
+ with_error_handling do
26
+ connection.post("users/#{username}/channels", compact_hash(params)).body
27
+ end
28
+ end
29
+
30
+ # Create a new channel settings for slack notification.
31
+ #
32
+ # @param channel_id [String]
33
+ # @param name [String]
34
+ # @param url [String]
35
+ # @param user_name [String]
36
+ # @param channel_name [String]
37
+ #
38
+ # @return [Pixela::Response]
39
+ #
40
+ # @raise [Pixela::PixelaError] API is failed
41
+ #
42
+ # @see https://docs.pixe.la/entry/post-channel
43
+ #
44
+ # @example
45
+ # client.create_slack_channel(channel_id: "my-channel", name: "My slack channel", url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", user_name: "Pixela Notification", channel_name: "pixela-notify")
46
+ def create_slack_channel(channel_id:, name:, url:, user_name:, channel_name:)
47
+ create_channel(
48
+ channel_id: channel_id,
49
+ name: name,
50
+ type: "slack",
51
+ detail: {
52
+ url: url,
53
+ userName: user_name,
54
+ channelName: channel_name,
55
+ },
56
+ )
57
+ end
58
+
59
+ # Get all predefined channels.
60
+ #
61
+ # @see https://docs.pixe.la/entry/get-channels
62
+ #
63
+ # @return [Array<Pixela::Response>]
64
+ #
65
+ # @raise [Pixela::PixelaError] API is failed
66
+ #
67
+ # @example
68
+ # client.get_channels
69
+ def get_channels
70
+ with_error_handling do
71
+ connection.get("users/#{username}/channels").body.channels
72
+ end
73
+ end
74
+
75
+ # Update predefined channel settings.
76
+ #
77
+ # @param channel_id [String]
78
+ # @param name [String]
79
+ # @param type [String]
80
+ # @param detail [Hash]
81
+ #
82
+ # @return [Pixela::Response]
83
+ #
84
+ # @raise [Pixela::PixelaError] API is failed
85
+ #
86
+ # @see https://docs.pixe.la/entry/put-channel
87
+ #
88
+ # @example
89
+ # client.update_channel(channel_id: "my-channel", name: "My slack channel", type: "slack", detail: {url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", userName: "Pixela Notification", channelName: "pixela-notify"})
90
+ def update_channel(channel_id:, name:, type:, detail:)
91
+ params = {
92
+ name: name,
93
+ type: type,
94
+ detail: detail,
95
+ }
96
+
97
+ with_error_handling do
98
+ connection.put("users/#{username}/channels/#{channel_id}", compact_hash(params)).body
99
+ end
100
+ end
101
+
102
+ # Update predefined slack channel settings.
103
+ #
104
+ # @param channel_id [String]
105
+ # @param name [String]
106
+ # @param url [String]
107
+ # @param user_name [String]
108
+ # @param channel_name [String]
109
+ #
110
+ # @return [Pixela::Response]
111
+ #
112
+ # @raise [Pixela::PixelaError] API is failed
113
+ #
114
+ # @see https://docs.pixe.la/entry/post-channel
115
+ #
116
+ # @example
117
+ # client.update_slack_channel(channel_id: "my-channel", name: "My slack channel", url: "https://hooks.slack.com/services/T035DA4QD/B06LMAV40/xxxx", user_name: "Pixela Notification", channel_name: "pixela-notify")
118
+ def update_slack_channel(channel_id:, name:, url:, user_name:, channel_name:)
119
+ update_channel(
120
+ channel_id: channel_id,
121
+ name: name,
122
+ type: "slack",
123
+ detail: {
124
+ url: url,
125
+ userName: user_name,
126
+ channelName: channel_name,
127
+ },
128
+ )
129
+ end
130
+
131
+ # Delete predefined channel settings.
132
+ #
133
+ # @param channel_id [String]
134
+ #
135
+ # @see https://docs.pixe.la/entry/delete-channel
136
+ #
137
+ # @return [Pixela::Response]
138
+ #
139
+ # @raise [Pixela::PixelaError] API is failed
140
+ #
141
+ # @example
142
+ # client.delete_channel(channel_id: "my-channel")
143
+ def delete_channel(channel_id:)
144
+ with_error_handling do
145
+ connection.delete("users/#{username}/channels/#{channel_id}").body
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,103 @@
1
+ module Pixela::Client::NotificationMethods
2
+ # Create a notification rule.
3
+ #
4
+ # @param graph_id [String]
5
+ # @param notification_id [String]
6
+ # @param name [String]
7
+ # @param target [String]
8
+ # @param condition [String]
9
+ # @param threshold [String]
10
+ # @param channel_id [String]
11
+ #
12
+ # @return [Pixela::Response]
13
+ #
14
+ # @raise [Pixela::PixelaError] API is failed
15
+ #
16
+ # @see https://docs.pixe.la/entry/post-notification
17
+ #
18
+ # @example
19
+ # client.create_notification(graph_id: "test-graph", notification_id: "my-notification-rule", name: "my notification rule", target: "quantity", condition: ">", threshold: "5", channel_id: "my-channel")
20
+ def create_notification(graph_id:, notification_id:, name:, target:, condition:, threshold:, channel_id:)
21
+ params = {
22
+ id: notification_id,
23
+ name: name,
24
+ target: target,
25
+ condition: condition,
26
+ threshold: threshold,
27
+ channelID: channel_id,
28
+ }
29
+
30
+ with_error_handling do
31
+ connection.post("users/#{username}/graphs/#{graph_id}/notifications", compact_hash(params)).body
32
+ end
33
+ end
34
+
35
+ # Get all predefined notifications.
36
+ #
37
+ # @param graph_id [String]
38
+ #
39
+ # @return [Array<Pixela::Response>]
40
+ #
41
+ # @raise [Pixela::PixelaError] API is failed
42
+ #
43
+ # @see https://docs.pixe.la/entry/get-notifications
44
+ #
45
+ # @example
46
+ # client.get_notifications(graph_id: "test-graph")
47
+ def get_notifications(graph_id:)
48
+ with_error_handling do
49
+ connection.get("users/#{username}/graphs/#{graph_id}/notifications").body.notifications
50
+ end
51
+ end
52
+
53
+ # Update predefined notification rule.
54
+ #
55
+ # @param graph_id [String]
56
+ # @param notification_id [String]
57
+ # @param name [String]
58
+ # @param target [String]
59
+ # @param condition [String]
60
+ # @param threshold [String]
61
+ # @param channel_id [String]
62
+ #
63
+ # @return [Pixela::Response]
64
+ #
65
+ # @raise [Pixela::PixelaError] API is failed
66
+ #
67
+ # @see https://docs.pixe.la/entry/put-notification
68
+ #
69
+ # @example
70
+ # client.update_notification(graph_id: "test-graph", notification_id: "my-notification-rule", name: "my notification rule", target: "quantity", condition: ">", threshold: "5", channel_id: "my-channel")
71
+ def update_notification(graph_id:, notification_id:, name:, target:, condition:, threshold:, channel_id:)
72
+ params = {
73
+ name: name,
74
+ target: target,
75
+ condition: condition,
76
+ threshold: threshold,
77
+ channelID: channel_id,
78
+ }
79
+
80
+ with_error_handling do
81
+ connection.put("users/#{username}/graphs/#{graph_id}/notifications/#{notification_id}", compact_hash(params)).body
82
+ end
83
+ end
84
+
85
+ # Delete predefined notification settings.
86
+ #
87
+ # @param graph_id [String]
88
+ # @param notification_id [String]
89
+ #
90
+ # @return [Pixela::Response]
91
+ #
92
+ # @raise [Pixela::PixelaError] API is failed
93
+ #
94
+ # @see https://docs.pixe.la/entry/delete-notification
95
+ #
96
+ # @example
97
+ # client.delete_notification(graph_id: "test-graph", notification_id: "my-notification-rule")
98
+ def delete_notification(graph_id:, notification_id:)
99
+ with_error_handling do
100
+ connection.delete("users/#{username}/graphs/#{graph_id}/notifications/#{notification_id}").body
101
+ end
102
+ end
103
+ end
@@ -22,6 +22,13 @@ module Pixela
22
22
  Pixel.new(client: client, graph_id: graph_id, date: date)
23
23
  end
24
24
 
25
+ # @param notification_id [String]
26
+ #
27
+ # @return [Pixela::Notification]
28
+ def notification(notification_id)
29
+ Notification.new(client: client, graph_id: graph_id, notification_id: notification_id)
30
+ end
31
+
25
32
  # Create a new pixelation graph definition.
26
33
  #
27
34
  # @param name [String]
@@ -0,0 +1,80 @@
1
+ module Pixela
2
+ class Notification
3
+ # @!attribute [r] client
4
+ # @return [Pixela::Client]
5
+ attr_reader :client
6
+
7
+ # @!attribute [r] graph_id
8
+ # @return [String]
9
+ attr_reader :graph_id
10
+
11
+ # @!attribute [r] notification_id
12
+ # @return [String]
13
+ attr_reader :notification_id
14
+
15
+ # @param client [Pixela::Client]
16
+ # @param graph_id [String]
17
+ # @param notification_id [String]
18
+ def initialize(client:, graph_id:, notification_id:)
19
+ @client = client
20
+ @graph_id = graph_id
21
+ @notification_id = notification_id
22
+ end
23
+
24
+ # Create a notification rule.
25
+ #
26
+ # @param name [String]
27
+ # @param target [String]
28
+ # @param condition [String]
29
+ # @param threshold [String]
30
+ # @param channel_id [String]
31
+ #
32
+ # @return [Pixela::Response]
33
+ #
34
+ # @raise [Pixela::PixelaError] API is failed
35
+ #
36
+ # @see https://docs.pixe.la/entry/post-notification
37
+ #
38
+ # @example
39
+ # client.graph("test-graph").notification("my-notification-rule").create(name: "my notification rule", target: "quantity", condition: ">", threshold: "5", channel_id: "my-channel")
40
+ def create(name:, target:, condition:, threshold:, channel_id:)
41
+ client.create_notification(graph_id: graph_id, notification_id: notification_id, name: name, target: target, condition: condition, threshold: threshold, channel_id: channel_id)
42
+ end
43
+
44
+ # Update predefined notification rule.
45
+ #
46
+ # @param graph_id [String]
47
+ # @param notification_id [String]
48
+ # @param name [String]
49
+ # @param target [String]
50
+ # @param condition [String]
51
+ # @param threshold [String]
52
+ # @param channel_id [String]
53
+ #
54
+ # @return [Pixela::Response]
55
+ #
56
+ # @raise [Pixela::PixelaError] API is failed
57
+ #
58
+ # @see https://docs.pixe.la/entry/put-notification
59
+ #
60
+ # @example
61
+ # client.graph("test-graph").notification("my-notification-rule").update(name: "my notification rule", target: "quantity", condition: ">", threshold: "5", channel_id: "my-channel")
62
+ def update(name:, target:, condition:, threshold:, channel_id:)
63
+ client.update_notification(graph_id: graph_id, notification_id: notification_id, name: name, target: target, condition: condition, threshold: threshold, channel_id: channel_id)
64
+ end
65
+
66
+ # Delete predefined notification settings.
67
+ #
68
+ # @return [Pixela::Response]
69
+ #
70
+ # @raise [Pixela::PixelaError] API is failed
71
+ #
72
+ # @see https://docs.pixe.la/entry/delete-notification
73
+ #
74
+ # @example
75
+ # client.graph("test-graph").notification("my-notification-rule").delete
76
+ def delete
77
+ client.delete_notification(graph_id: graph_id, notification_id: notification_id)
78
+ end
79
+ end
80
+ end
@@ -1,3 +1,3 @@
1
1
  module Pixela
2
- VERSION = "1.3.1"
2
+ VERSION = "1.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixela
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-06-10 00:00:00.000000000 Z
11
+ date: 2019-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -241,13 +241,17 @@ files:
241
241
  - bin/console
242
242
  - bin/setup
243
243
  - lib/pixela.rb
244
+ - lib/pixela/channel.rb
244
245
  - lib/pixela/client.rb
246
+ - lib/pixela/client/channel_methods.rb
245
247
  - lib/pixela/client/graph_methods.rb
248
+ - lib/pixela/client/notificaton_methods.rb
246
249
  - lib/pixela/client/pixel_methods.rb
247
250
  - lib/pixela/client/user_methods.rb
248
251
  - lib/pixela/client/webhook_methods.rb
249
252
  - lib/pixela/configuration.rb
250
253
  - lib/pixela/graph.rb
254
+ - lib/pixela/notification.rb
251
255
  - lib/pixela/pixel.rb
252
256
  - lib/pixela/response.rb
253
257
  - lib/pixela/version.rb
@@ -275,7 +279,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
279
  - !ruby/object:Gem::Version
276
280
  version: '0'
277
281
  requirements: []
278
- rubygems_version: 3.0.1
282
+ rubygems_version: 3.0.6
279
283
  signing_key:
280
284
  specification_version: 4
281
285
  summary: Pixela API client for Ruby