pixela 1.4.1 → 2.2.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: 53c7211a5d3d1d0b5bc7f843ab52ba13976b0f6a18f1243f338d8adc8110406a
4
- data.tar.gz: ef86b1344cce92f3a1291f3b37c21a9ab695270f8f0abeda85c44d3afbe8b24d
3
+ metadata.gz: 9c101809b9328378863924ee2adc9aef94dd543cf93db7dc4f21e4916a02f5af
4
+ data.tar.gz: 89f280b63c454a27d90ef20762c3f6ccd0c7b2b724097bb9bdd762268e08b257
5
5
  SHA512:
6
- metadata.gz: d3f7450e3005b50b3ccb5408d2cd11dd3b1ca12b501f34997df5aed45d2fc4bd9529487e77d24909ca9261371c1c4442856e8bfcb6394c9ce3e83035b4da9709
7
- data.tar.gz: 311768323e48e9ffe019bd06cc4a33922ad31b2d41efb399b84afef2cc0193e9d52c3870ecdb4983039b4a5c94cf427be1b9245edc9b2f76086f1f6f528194f7
6
+ metadata.gz: bfb71e70e9d65a5da0c60104dfbab46dbface426054adaf93cebb6e74104091c67994afe7268b2ad03c39fa0ba3218be758f8e6152bea468d81af0be29d4531b
7
+ data.tar.gz: 82845eee4380ffc77297f441a6acd5c37604a24d7f9522a52abb3b5d22e4b4cb847f2bad4429159c8768344878e31d443e0d5429b8cebc192d114319c8b24444
@@ -29,14 +29,12 @@ jobs:
29
29
 
30
30
  matrix:
31
31
  ruby:
32
- - ruby:2.3
33
32
  - ruby:2.4
34
33
  - ruby:2.5
35
34
  - ruby:2.6
36
35
  - ruby:2.7
37
36
  - rubylang/ruby:master-nightly-bionic
38
37
  gemfile:
39
- - faraday_0.gemfile
40
38
  - faraday_1.gemfile
41
39
  include:
42
40
  - ruby: rubylang/ruby:master-nightly-bionic
@@ -94,7 +92,7 @@ jobs:
94
92
  continue-on-error: true
95
93
 
96
94
  - name: Slack Notification (not success)
97
- uses: homoluctus/slatify@master
95
+ uses: lazy-actions/slatify@master
98
96
  if: "! success()"
99
97
  continue-on-error: true
100
98
  with:
@@ -112,7 +110,7 @@ jobs:
112
110
 
113
111
  steps:
114
112
  - name: Slack Notification (success)
115
- uses: homoluctus/slatify@master
113
+ uses: lazy-actions/slatify@master
116
114
  if: always()
117
115
  continue-on-error: true
118
116
  with:
@@ -1,5 +1,48 @@
1
1
  ## Unreleased
2
- [full changelog](http://github.com/sue445/pixela/compare/v1.4.1...master)
2
+ [full changelog](http://github.com/sue445/pixela/compare/v2.2.0...master)
3
+
4
+ ## v2.2.0
5
+ [full changelog](http://github.com/sue445/pixela/compare/v2.1.0...v2.2.0)
6
+
7
+ * Add `Pixela::Client#get_graph_def` and `Pixela::Graph#def`
8
+ * https://github.com/sue445/pixela/pull/83
9
+ * https://github.com/a-know/Pixela/releases/tag/v1.21.0
10
+ * Add `Pixela::Client#get_pixels` and `Pixela::Graph#pixels`
11
+ * https://github.com/sue445/pixela/pull/84
12
+ * https://github.com/a-know/Pixela/releases/tag/v1.21.0
13
+
14
+ ## v2.1.0
15
+ [full changelog](http://github.com/sue445/pixela/compare/v2.0.0...v2.1.0)
16
+
17
+ * Add `Pixela::Client#update_profile`
18
+ * https://github.com/sue445/pixela/pull/81
19
+ * https://github.com/a-know/Pixela/releases/tag/v1.20.0
20
+
21
+ ## v2.0.0
22
+ [full changelog](http://github.com/sue445/pixela/compare/v1.5.0...v2.0.0)
23
+
24
+ ### :warning: Breaking changes :warning:
25
+ * Remove Channel and Notification
26
+ * https://github.com/sue445/pixela/pull/75
27
+ * https://github.com/a-know/Pixela/releases/tag/v1.19.0
28
+ * Drop support for faraday v0.x
29
+ * https://github.com/sue445/pixela/pull/77
30
+ * Drop support for ruby 2.3
31
+ * https://github.com/sue445/pixela/pull/78
32
+
33
+ ## v1.5.0
34
+ [full changelog](http://github.com/sue445/pixela/compare/v1.4.2...v1.5.0)
35
+
36
+ * Add `Pixela::Client#run_stopwatch` and `Pixela::Graph#run_stopwatch`
37
+ * https://github.com/sue445/pixela/pull/74
38
+ * https://github.com/a-know/Pixela/releases/tag/v1.18.0
39
+
40
+ ## v1.4.2
41
+ [full changelog](http://github.com/sue445/pixela/compare/v1.4.1...v1.4.2)
42
+
43
+ * Support `remind_by` of Notification
44
+ * https://github.com/sue445/pixela/pull/72
45
+ * https://github.com/a-know/Pixela/releases/tag/v1.17.0
3
46
 
4
47
  ## v1.4.1
5
48
  [full changelog](http://github.com/sue445/pixela/compare/v1.4.0...v1.4.1)
@@ -5,11 +5,9 @@ require "faraday_curl"
5
5
  require "date"
6
6
 
7
7
  module Pixela
8
- autoload :Channel, "pixela/channel"
9
8
  autoload :Client, "pixela/client"
10
9
  autoload :Configuration, "pixela/configuration"
11
10
  autoload :Graph, "pixela/graph"
12
- autoload :Notification, "pixela/notification"
13
11
  autoload :Pixel, "pixela/pixel"
14
12
  autoload :Response, "pixela/response"
15
13
  autoload :Webhook, "pixela/webhook"
@@ -1,20 +1,19 @@
1
1
  module Pixela
2
2
  class Client
3
- autoload :ChannelMethods, "pixela/client/channel_methods"
4
3
  autoload :GraphMethods, "pixela/client/graph_methods"
5
- autoload :NotificationMethods, "pixela/client/notificaton_methods"
6
4
  autoload :PixelMethods, "pixela/client/pixel_methods"
5
+ autoload :ProfileMethods, "pixela/client/profile_methods"
7
6
  autoload :UserMethods, "pixela/client/user_methods"
8
7
  autoload :WebhookMethods, "pixela/client/webhook_methods"
9
8
 
10
- include ChannelMethods
11
9
  include GraphMethods
12
- include NotificationMethods
13
10
  include PixelMethods
11
+ include ProfileMethods
14
12
  include UserMethods
15
13
  include WebhookMethods
16
14
 
17
15
  API_ENDPOINT = "https://pixe.la/v1"
16
+ TOP_ENDPOINT = "https://pixe.la"
18
17
 
19
18
  # @!attribute [r] username
20
19
  # @return [String]
@@ -47,13 +46,6 @@ module Pixela
47
46
  Webhook.new(client: self, webhook_hash: webhook_hash)
48
47
  end
49
48
 
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
-
57
49
  private
58
50
 
59
51
  # @!attribute [r] token
@@ -63,8 +55,8 @@ module Pixela
63
55
  # @param request_headers [Hash]
64
56
  #
65
57
  # @return [Faraday::Connection]
66
- def connection(request_headers = user_token_headers)
67
- Faraday.new(url: API_ENDPOINT, headers: request_headers) do |conn|
58
+ def connection(request_headers: user_token_headers, endpoint: API_ENDPOINT)
59
+ Faraday.new(url: endpoint, headers: request_headers) do |conn|
68
60
  conn.request :json
69
61
  conn.response :mashify, mash_class: Pixela::Response
70
62
  conn.response :json
@@ -81,7 +73,7 @@ module Pixela
81
73
 
82
74
  def with_error_handling
83
75
  yield
84
- rescue *faraday_errors => error
76
+ rescue Faraday::ClientError, Faraday::ServerError => error
85
77
  begin
86
78
  body = JSON.parse(error.response[:body])
87
79
  raise PixelaError, body["message"]
@@ -90,14 +82,6 @@ module Pixela
90
82
  end
91
83
  end
92
84
 
93
- def faraday_errors
94
- if Gem::Version.create(Faraday::VERSION) >= Gem::Version.create("1.0.0")
95
- return [Faraday::ClientError, Faraday::ServerError]
96
- end
97
-
98
- [Faraday::Error::ClientError]
99
- end
100
-
101
85
  def default_headers
102
86
  {
103
87
  "User-Agent" => "Pixela v#{Pixela::VERSION} (https://github.com/sue445/pixela)",
@@ -118,10 +102,5 @@ module Pixela
118
102
 
119
103
  date.strftime("%Y%m%d")
120
104
  end
121
-
122
- def compact_hash(hash)
123
- # NOTE: Hash#compact is available since MRI 2.4+
124
- hash.reject { |_, v| v.nil? }
125
- end
126
105
  end
127
106
  end
@@ -33,7 +33,7 @@ module Pixela::Client::GraphMethods
33
33
  }
34
34
 
35
35
  with_error_handling do
36
- connection.post("users/#{username}/graphs", compact_hash(params)).body
36
+ connection.post("users/#{username}/graphs", params.compact).body
37
37
  end
38
38
  end
39
39
 
@@ -126,7 +126,7 @@ module Pixela::Client::GraphMethods
126
126
  end
127
127
 
128
128
  with_error_handling do
129
- connection.put("users/#{username}/graphs/#{graph_id}", compact_hash(params)).body
129
+ connection.put("users/#{username}/graphs/#{graph_id}", params.compact).body
130
130
  end
131
131
  end
132
132
 
@@ -170,12 +170,38 @@ module Pixela::Client::GraphMethods
170
170
 
171
171
  res =
172
172
  with_error_handling do
173
- connection.get("users/#{username}/graphs/#{graph_id}/pixels", compact_hash(params)).body
173
+ connection.get("users/#{username}/graphs/#{graph_id}/pixels", params.compact).body
174
174
  end
175
175
 
176
176
  res.pixels.map { |ymd| Date.parse(ymd) }
177
177
  end
178
178
 
179
+ # Get a Date list of Pixel registered in the graph specified by graphID.
180
+ #
181
+ # @param graph_id [String]
182
+ # @param from [Date] Specify the start position of the period.
183
+ # @param to [Date] Specify the end position of the period.
184
+ #
185
+ # @return [Array<Hashie::Mash>]
186
+ #
187
+ # @raise [Pixela::PixelaError] API is failed
188
+ #
189
+ # @see https://docs.pixe.la/entry/get-graph-pixels
190
+ #
191
+ # @example
192
+ # client.get_pixels(graph_id: "test-graph", from: Date.new(2018, 1, 1), to: Date.new(2018, 12, 31))
193
+ def get_pixels(graph_id:, from: nil, to: nil)
194
+ params = {
195
+ from: to_ymd(from),
196
+ to: to_ymd(to),
197
+ withBody: true,
198
+ }
199
+
200
+ with_error_handling do
201
+ connection.get("users/#{username}/graphs/#{graph_id}/pixels", params.compact).body.pixels
202
+ end
203
+ end
204
+
179
205
  # Based on the registered information, get various statistics.
180
206
  #
181
207
  # @param graph_id [String]
@@ -193,4 +219,43 @@ module Pixela::Client::GraphMethods
193
219
  connection.get("users/#{username}/graphs/#{graph_id}/stats").body
194
220
  end
195
221
  end
222
+
223
+ # This will start and end the measurement of the time.
224
+ #
225
+ # @param graph_id [String]
226
+ #
227
+ # @return [Pixela::Response]
228
+ #
229
+ # @raise [Pixela::PixelaError] API is failed
230
+ #
231
+ # @see https://docs.pixe.la/entry/post-stopwatch
232
+ #
233
+ # @example
234
+ # client.run_stopwatch(graph_id: "test-graph")
235
+ def run_stopwatch(graph_id:)
236
+ with_error_handling do
237
+ connection.post("users/#{username}/graphs/#{graph_id}/stopwatch").body
238
+ end
239
+ end
240
+
241
+ alias_method :start_stopwatch, :run_stopwatch
242
+ alias_method :end_stopwatch, :run_stopwatch
243
+
244
+ # Get a predefined pixelation graph definition.
245
+ #
246
+ # @param graph_id [String]
247
+ #
248
+ # @return [Pixela::Response]
249
+ #
250
+ # @raise [Pixela::PixelaError] API is failed
251
+ #
252
+ # @see https://docs.pixe.la/entry/get-a-graph-def
253
+ #
254
+ # @example
255
+ # client.get_graph_def(graph_id: "test-graph")
256
+ def get_graph_def(graph_id:)
257
+ with_error_handling do
258
+ connection.get("users/#{username}/graphs/#{graph_id}/graph-def").body
259
+ end
260
+ end
196
261
  end
@@ -22,7 +22,7 @@ module Pixela::Client::PixelMethods
22
22
  }
23
23
 
24
24
  with_error_handling do
25
- connection.post("users/#{username}/graphs/#{graph_id}", compact_hash(params)).body
25
+ connection.post("users/#{username}/graphs/#{graph_id}", params.compact).body
26
26
  end
27
27
  end
28
28
 
@@ -80,7 +80,7 @@ module Pixela::Client::PixelMethods
80
80
  }
81
81
 
82
82
  with_error_handling do
83
- connection.put("users/#{username}/graphs/#{graph_id}/#{to_ymd(date)}", compact_hash(params)).body
83
+ connection.put("users/#{username}/graphs/#{graph_id}/#{to_ymd(date)}", params.compact).body
84
84
  end
85
85
  end
86
86
 
@@ -0,0 +1,40 @@
1
+ module Pixela::Client::ProfileMethods
2
+ # Updates the profile information for the user corresponding to username
3
+ #
4
+ # @param display_name [String]
5
+ # @param gravatar_icon_email [String]
6
+ # @param title [String]
7
+ # @param timezone [String]
8
+ # @param about_url [String]
9
+ # @param contribute_urls [Array<String>]
10
+ # @param pinned_graph_id [String]
11
+ #
12
+ # @return [Pixela::Response]
13
+ #
14
+ # @raise [Pixela::PixelaError] API is failed
15
+ #
16
+ # @see https://docs.pixe.la/entry/put-profile
17
+ #
18
+ # @example
19
+ # client.update_profile(display_name: "a-know", gravatar_icon_email: "user@example.com", title: "my title", timezone: "Asia/Tokyo", about_url: "https://home.a-know.me", contribute_urls: ["https://pixe.la/","https://github.com/a-know/pi","https://blog.a-know.me/archive/category/Pixela"])
20
+ def update_profile(display_name: nil, gravatar_icon_email: nil, title: nil, timezone: nil,
21
+ about_url: nil, contribute_urls: [], pinned_graph_id: nil)
22
+
23
+ params = {
24
+ displayName: display_name,
25
+ gravatarIconEmail: gravatar_icon_email,
26
+ title: title,
27
+ timezone: timezone,
28
+ aboutURL: about_url,
29
+ pinnedGraphID: pinned_graph_id
30
+ }
31
+
32
+ unless contribute_urls.empty?
33
+ params[:contributeURLs] = contribute_urls
34
+ end
35
+
36
+ with_error_handling do
37
+ connection(endpoint: Pixela::Client::TOP_ENDPOINT).put("@#{username}", params.compact).body
38
+ end
39
+ end
40
+ end
@@ -21,7 +21,7 @@ module Pixela::Client::UserMethods
21
21
  }
22
22
 
23
23
  with_error_handling do
24
- connection(default_headers).post("users", params).body
24
+ connection(request_headers: default_headers).post("users", params).body
25
25
  end
26
26
  end
27
27
 
@@ -53,7 +53,7 @@ module Pixela::Client::WebhookMethods
53
53
  # client.invoke_webhook(webhook_hash: "<webhookHash>")
54
54
  def invoke_webhook(webhook_hash:)
55
55
  with_error_handling do
56
- connection(default_headers).post("users/#{username}/webhooks/#{webhook_hash}").body
56
+ connection(request_headers: default_headers).post("users/#{username}/webhooks/#{webhook_hash}").body
57
57
  end
58
58
  end
59
59
 
@@ -22,13 +22,6 @@ 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
-
32
25
  # Create a new pixelation graph definition.
33
26
  #
34
27
  # @param name [String]
@@ -156,6 +149,23 @@ module Pixela
156
149
  client.get_pixel_dates(graph_id: graph_id, from: from, to: to)
157
150
  end
158
151
 
152
+ # Get a Date list of Pixel registered in the graph specified by graphID.
153
+ #
154
+ # @param from [Date] Specify the start position of the period.
155
+ # @param to [Date] Specify the end position of the period.
156
+ #
157
+ # @return [Array<Hashie::Mash>]
158
+ #
159
+ # @raise [Pixela::PixelaError] API is failed
160
+ #
161
+ # @see https://docs.pixe.la/entry/get-graph-pixels
162
+ #
163
+ # @example
164
+ # client.graph("test-graph").pixels(from: Date.new(2018, 1, 1), to: Date.new(2018, 12, 31))
165
+ def pixels(from: nil, to: nil)
166
+ client.get_pixels(graph_id: graph_id, from: from, to: to)
167
+ end
168
+
159
169
  # Based on the registered information, get various statistics.
160
170
  #
161
171
  # @return [Pixela::Response]
@@ -169,5 +179,38 @@ module Pixela
169
179
  def stats
170
180
  client.get_graph_stats(graph_id: graph_id)
171
181
  end
182
+
183
+ # This will start and end the measurement of the time.
184
+ #
185
+ # @return [Pixela::Response]
186
+ #
187
+ # @raise [Pixela::PixelaError] API is failed
188
+ #
189
+ # @see https://docs.pixe.la/entry/post-stopwatch
190
+ #
191
+ # @example
192
+ # client.graph("test-graph").run_stopwatch
193
+ def run_stopwatch
194
+ client.run_stopwatch(graph_id: graph_id)
195
+ end
196
+
197
+ alias_method :start_stopwatch, :run_stopwatch
198
+ alias_method :end_stopwatch, :run_stopwatch
199
+
200
+ # Get a predefined pixelation graph definition.
201
+ #
202
+ # @return [Pixela::Response]
203
+ #
204
+ # @raise [Pixela::PixelaError] API is failed
205
+ #
206
+ # @see https://docs.pixe.la/entry/get-a-graph-def
207
+ #
208
+ # @example
209
+ # client.graph("test-graph").def
210
+ def def
211
+ client.get_graph_def(graph_id: graph_id)
212
+ end
213
+
214
+ alias_method :definition, :def
172
215
  end
173
216
  end
@@ -1,3 +1,3 @@
1
1
  module Pixela
2
- VERSION = "1.4.1"
2
+ VERSION = "2.2.0"
3
3
  end
@@ -34,9 +34,9 @@ Gem::Specification.new do |spec|
34
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
35
35
  spec.require_paths = ["lib"]
36
36
 
37
- spec.required_ruby_version = ">= 2.3.0"
37
+ spec.required_ruby_version = ">= 2.4.0"
38
38
 
39
- spec.add_dependency "faraday"
39
+ spec.add_dependency "faraday", ">= 1.0.0"
40
40
  spec.add_dependency "faraday_curl"
41
41
  spec.add_dependency "faraday_middleware"
42
42
  spec.add_dependency "hashie"
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.4.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - sue445
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-03-21 00:00:00.000000000 Z
11
+ date: 2020-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: faraday_curl
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -240,20 +240,16 @@ files:
240
240
  - Rakefile
241
241
  - bin/console
242
242
  - bin/setup
243
- - gemfiles/faraday_0.gemfile
244
243
  - gemfiles/faraday_1.gemfile
245
244
  - lib/pixela.rb
246
- - lib/pixela/channel.rb
247
245
  - lib/pixela/client.rb
248
- - lib/pixela/client/channel_methods.rb
249
246
  - lib/pixela/client/graph_methods.rb
250
- - lib/pixela/client/notificaton_methods.rb
251
247
  - lib/pixela/client/pixel_methods.rb
248
+ - lib/pixela/client/profile_methods.rb
252
249
  - lib/pixela/client/user_methods.rb
253
250
  - lib/pixela/client/webhook_methods.rb
254
251
  - lib/pixela/configuration.rb
255
252
  - lib/pixela/graph.rb
256
- - lib/pixela/notification.rb
257
253
  - lib/pixela/pixel.rb
258
254
  - lib/pixela/response.rb
259
255
  - lib/pixela/version.rb
@@ -274,7 +270,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
270
  requirements:
275
271
  - - ">="
276
272
  - !ruby/object:Gem::Version
277
- version: 2.3.0
273
+ version: 2.4.0
278
274
  required_rubygems_version: !ruby/object:Gem::Requirement
279
275
  requirements:
280
276
  - - ">="
@@ -1,8 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
-
5
- # Specify your gem's dependencies in pixela.gemspec
6
- gemspec path: "../"
7
-
8
- gem "faraday", "~> 0.17"
@@ -1,106 +0,0 @@
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,148 +0,0 @@
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
@@ -1,103 +0,0 @@
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
@@ -1,80 +0,0 @@
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