xcal-parktronic 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZGJhY2FjMDA3YzIwYWY2ZGVjN2IwNTliNmJjMWNjZTZjYmU3NGU0Nw==
5
- data.tar.gz: !binary |-
6
- NmE2MzU3Mzk2NWJiZjk2ZTkxOWRhYzk4ZWE4OWM0NmM4MWVlNTE0Zg==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ZDAxMzYyMTk1ZDM0MTg3MzkwNDVjNjg4YjMwYTA0M2UzNzhkZWJkM2Q1MTVj
10
- ZWExNWZmNmZkYWU0YzJiNmYyZTI3ODk5ZjViOTE1YzI3OTFlNDkxY2RlOWM0
11
- Mzg0YmJlZGRkYWE5YjkyMzZmNmRjNzE1YzBlYWZmMDY1YjJlZGU=
12
- data.tar.gz: !binary |-
13
- NjU4MTI5YTliN2RiM2QzZGQxZTVmMDg0MzE3M2JmNDc1NDFlMWRkMDkyNDk5
14
- NTIxYzdhMDVlZmMyMWYyNTJiOWVkOTE1NDM2Y2U5YmY4ZGI2MjA3YzkwYTU0
15
- YjFkZjY2ODFkZWVjYjE4MDViNDc4ODQyYjMzMzBmZDlkNzg5ODU=
2
+ SHA1:
3
+ metadata.gz: 898fd311009a1d5e486cddc2a8f45c63c421b51b
4
+ data.tar.gz: 2b9f9b5938830b48e60e394ff8e94103f616598a
5
+ SHA512:
6
+ metadata.gz: 9c8f772186c54d466ab10ff635726385e038690a4489fb9b6f62f7f9337c26780dc9a57e33ad5cc57570619a6dbd8184508f148ba47af3cb514e07db380d1b67
7
+ data.tar.gz: ba689c71cf39006e4b536b8675abd357ab092d7a3e75ca45b6e2980247f81e3b6fcc180691484c6e47bc10218bbaf9cfaff6abe3b2c4eb89c84e5510b83ba01f
data/Gemfile CHANGED
@@ -2,3 +2,4 @@ source 'http://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in xcal-parktronic.gemspec
4
4
  gemspec
5
+ gem 'dalli'
data/README.md CHANGED
@@ -27,26 +27,28 @@ http://rubydoc.info/gems/xcal-parktronic/frames
27
27
 
28
28
  ## Usage
29
29
 
30
- # Initialization:
30
+ ### Initialization:
31
31
 
32
32
  ```ruby
33
+ api = ParkClient.new(access_token: 'your_access_token', endpoint: 'http://api_host')
33
34
  api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api_host')
35
+ api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api_host', memcached_host: 'localhost:11211')
34
36
  ```
35
37
 
36
- # Alarms:
38
+ ### Alarms:
37
39
  ```ruby
38
40
  api.alarms
39
41
  api.alarm_tags(1)
40
42
  api.search_alarm(name: 'test', tagged_with: 'test', time_range: 24, originating_system: 'Splunk', page: 1, per_page: 20)
41
43
  ```
42
44
 
43
- # Outages:
45
+ ### Outages:
44
46
  ```ruby
45
47
  api.outages
46
48
  api.outages(page: 2, per_page: 5)
47
49
  ```
48
50
 
49
- # Stack changes
51
+ ### Stack changes
50
52
  ```ruby
51
53
  api.stack_changes
52
54
  api.stack_changes(page: 2, per_page: 5)
@@ -54,21 +56,21 @@ api.stack_changes(page: 2, per_page: 5, element: 'XBO')
54
56
  api.stack_changes(time_range: {time_offset: -1, start_date: 0, start_time: 1440, end_time: 0}, element: 'XBO')
55
57
  ```
56
58
 
57
- # Events history
59
+ ### Events history
58
60
  ```ruby
59
61
  api.events_history
60
62
  api.events_history(page: 2, per_page: 5)
61
63
  api.events_history(host_impacted: 'xre-host-1', service_impacted: 'xre')
62
64
  ```
63
65
 
64
- # Command notifications (remote commands)
66
+ ### Command notifications (remote commands)
65
67
  ```ruby
66
68
  api.command_notifications
67
69
  api.command_notifications(page: 1, per_page: 2)
68
70
  api.update_command_notification(10)
69
71
  ```
70
72
 
71
- # Events
73
+ ### Events
72
74
  ```ruby
73
75
  api.add_event
74
76
  api.update_event
@@ -77,7 +79,7 @@ api.alarm(3).get_all_events
77
79
  api.alarm(3).post_event(data)
78
80
  ```
79
81
 
80
- # Alarm Actions
82
+ ### Alarm Actions
81
83
  ```ruby
82
84
  api.alarm(3).get_alarm_actions
83
85
  api.alarm(3).get_alarm_action(alarm_action_id)
@@ -86,7 +88,7 @@ api.alarm(3).update_alarm_action
86
88
  api.alarm(3).set_position
87
89
  ```
88
90
 
89
- # Custom Queries
91
+ ### Custom Queries
90
92
  ```ruby
91
93
  api.get_custom_queries
92
94
  api.post_custom_query
@@ -30,3 +30,7 @@ require 'xcal/parktronic/exceptions'
30
30
  # response and client
31
31
  require 'xcal/parktronic/generic_response'
32
32
  require 'xcal/parktronic/api_client'
33
+
34
+ # shortcut
35
+ ParkClient = Xcal::Parktronic::ApiClient
36
+
@@ -11,6 +11,8 @@ module Xcal
11
11
  # * +endpoint+ - OIV endpoint
12
12
  # * +proxy+ - enables proxy if proxy url is passed
13
13
  # * +access_token+ - access key to application
14
+ # * +memcached_host+ - memcached host:port if you want enable caching
15
+ # * +memcached_ttl+ - cache time to live (seconds), 60 seconds by default
14
16
  # * +version+ - api version. defaults to v1
15
17
  # ==== Examples
16
18
  # api = Xcal::Parktronic::ApiClient.new(access_token: 'your_access_token', endpoint: 'http://api-host.com')
@@ -19,6 +21,11 @@ module Xcal
19
21
  @args.default_proc = proc{|h, k| h.key?(k.to_s) ? h[k.to_s] : nil}
20
22
  end
21
23
 
24
+ def cache
25
+ return nil if @args[:memcached_host].nil?
26
+ @cache ||= Dalli::Client.new(@args[:memcached_host], :expires_in => (@args[:memcached_ttl] || 60), :namespace => "xcal_parktronic", :compress => true)
27
+ end
28
+
22
29
  def host
23
30
  uri.host
24
31
  end
@@ -57,6 +64,18 @@ module Xcal
57
64
 
58
65
  @http
59
66
  end
67
+
68
+ def get_response(url)
69
+ # Try to find response in cache
70
+ cache_key = Digest::SHA1.hexdigest(url)
71
+ return cache.get(cache_key) if cache && !cache.get(cache_key).nil?
72
+
73
+ # Get response and save to cache (if cacing enabled)
74
+ responce = http.get url
75
+ cache.set(cache_key, responce) if cache
76
+
77
+ responce
78
+ end
60
79
  end
61
80
 
62
81
  end
@@ -17,16 +17,12 @@ module Xcal
17
17
  # api.alarms(page: 2, per_page: 5)
18
18
  def get_paged_alarms(args = {})
19
19
  args.merge!(:access_token => access_token)
20
- response = http.get("/#{api_version}/alarms?#{URI.encode_www_form(args)}")
20
+ response = get_response("/#{api_version}/alarms?#{URI.encode_www_form(args)}")
21
21
 
22
22
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
23
- if response.code == '200'
24
- generic_response.alarms.map { |alarm| Xcal::Parktronic::GenericResponse.new(alarm.alarm, self) }
25
- else
26
- generic_response
27
- end
28
23
 
29
- # TODO Add caching
24
+ response.code == '200' && generic_response.has_key?(:alarms) ?
25
+ generic_response.alarms.map { |alarm| Xcal::Parktronic::GenericResponse.new(alarm.alarm, self) } : generic_response
30
26
  end
31
27
  alias :alarms :get_paged_alarms
32
28
 
@@ -38,12 +34,10 @@ module Xcal
38
34
  # ==== Examples
39
35
  # api.get_alarm(2)
40
36
  def get_alarm(id)
41
- response = http.get("/#{api_version}/alarms/#{id}?access_token=#{access_token}")
37
+ response = get_response("/#{api_version}/alarms/#{id}?access_token=#{access_token}")
42
38
 
43
39
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
44
40
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.alarm, self) : generic_response
45
-
46
- # TODO Add caching
47
41
  end
48
42
  alias :alarm :get_alarm
49
43
 
@@ -102,7 +96,7 @@ module Xcal
102
96
  # api.get_alarm_tags(2)
103
97
  # api.alarm_tags(2)
104
98
  def get_alarm_tags(id)
105
- response = http.get("/#{api_version}/alarms/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
99
+ response = get_response("/#{api_version}/alarms/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
106
100
 
107
101
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, self)
108
102
  response.code == '200' && generic_response.has_key?(:tags) ? generic_response.tags.map(&:tag) : generic_response
@@ -118,13 +112,15 @@ module Xcal
118
112
  # * +originating_system+ string or array, originating system name(s), blank by default (example: 'Op5_Nagios' or 'Op5_Nagios Splunk' or ['Op5_Nagios', 'Splunk'])
119
113
  # * +page+ integer, page number, defaults to 1
120
114
  # * +per_page+ integer, per page value, defaults to 100
115
+ # * +where+ 'where' hash of conditions for searching
116
+ # * +extends+ array, may include: latest_event, latest_unclosed_event, with_unclosed_events, with_most_recent_events, top_alarms, select_brouha_open
121
117
  #
122
118
  # ==== Examples
123
119
  # api.search_alarm(name: 'test alarm')
124
120
  # api.search_alarm(tagged_with: 'test alarm', time_range: 120)
125
-
121
+ # api.search_alarm(where: {impact_level: 'Unknown', originating_system: 'test'}, time_range: 120)
122
+ # api.search_alarm(extends: ['latest_event', 'with_most_recent_events'], time_range: 120)
126
123
  def search_alarm(args = {})
127
- custom_extends = [ 'latest_event', 'latest_unclosed_event' ]
128
124
  custom_scopes = { with_most_recent_events: [] }
129
125
 
130
126
  #Filter
@@ -142,12 +138,13 @@ module Xcal
142
138
  # Params for request
143
139
  scopes = URI.escape(custom_scopes.to_json)
144
140
  search = URI.escape({name: args.fetch(:name, '')}.to_json)
145
- extends = URI.escape(args.fetch(:extends, custom_extends).to_json)
141
+ extends = URI.escape(args.fetch(:extends, []).to_json)
146
142
  filter = URI.escape(args.fetch(:filter, filter).to_json)
143
+ where = URI.escape(args.fetch(:where, '').to_json)
147
144
  page = args.fetch(:page, 1)
148
145
  per_page = args.fetch(:per_page, 100)
149
146
 
150
- response = http.get("/#{api_version}/alarms/search?page=#{page}&per_page=#{per_page}&scopes=#{scopes}&search=#{search}&extends=#{extends}&filter=#{filter}&access_token=#{access_token}")
147
+ response = get_response("/#{api_version}/alarms/search?page=#{page}&per_page=#{per_page}&scopes=#{scopes}&search=#{search}&extends=#{extends}&filter=#{filter}&where=#{where}&access_token=#{access_token}")
151
148
 
152
149
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
153
150
  response.code == '200' && generic_response.has_key?(:alarms) ? generic_response.alarms.map(&:alarm) : generic_response
@@ -15,7 +15,7 @@ module Xcal
15
15
  # api.command_notifications
16
16
  def get_paged_command_notifications(args = {})
17
17
  args.merge!(access_token: access_token)
18
- response = http.get("/#{api_version}/command_notifications?#{URI.encode_www_form(args)}")
18
+ response = get_response("/#{api_version}/command_notifications?#{URI.encode_www_form(args)}")
19
19
 
20
20
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
21
21
  if response.code == '200' && generic_response.has_key?(:remote_commands)
@@ -23,8 +23,6 @@ module Xcal
23
23
  else
24
24
  generic_response
25
25
  end
26
-
27
- # TODO Add caching
28
26
  end
29
27
  alias :command_notifications :get_paged_command_notifications
30
28
 
@@ -10,7 +10,7 @@ module Xcal
10
10
  # api.get_custom_queries
11
11
  # api.custom_queries
12
12
  def get_custom_queries
13
- response = http.get("/#{api_version}/custom_queries?#{URI.encode_www_form(:access_token => access_token)}")
13
+ response = get_response("/#{api_version}/custom_queries?#{URI.encode_www_form(:access_token => access_token)}")
14
14
 
15
15
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
16
16
  if response.code == '200'
@@ -18,8 +18,6 @@ module Xcal
18
18
  else
19
19
  generic_response
20
20
  end
21
-
22
- # TODO Add caching
23
21
  end
24
22
  alias :custom_queries :get_custom_queries
25
23
 
@@ -67,7 +65,7 @@ module Xcal
67
65
  # ==== Examples
68
66
  # api.find_custom_query(3, 'ChartSeries')
69
67
  def find_custom_query(referencable_id, referencable_type)
70
- response = http.get("/#{api_version}/custom_queries/find/#{referencable_id}/#{referencable_type}?#{URI.encode_www_form(:access_token => access_token)}")
68
+ response = get_response("/#{api_version}/custom_queries/find/#{referencable_id}/#{referencable_type}?#{URI.encode_www_form(:access_token => access_token)}")
71
69
 
72
70
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
73
71
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.custom_query, self) : generic_response
@@ -17,7 +17,7 @@ module Xcal
17
17
  # api.events_history(host_impacted: 'google.com', service_impacted: 'http')
18
18
  def get_paged_event_history_items(args = {})
19
19
  args.merge!(access_token: access_token)
20
- response = http.get("/#{api_version}/events_history?#{URI.encode_www_form(args)}")
20
+ response = get_response("/#{api_version}/events_history?#{URI.encode_www_form(args)}")
21
21
 
22
22
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
23
23
  if response.code == '200' && generic_response.has_key?(:event_history_items)
@@ -25,8 +25,6 @@ module Xcal
25
25
  else
26
26
  generic_response
27
27
  end
28
-
29
- # TODO Add caching
30
28
  end
31
29
  alias :events_history :get_paged_event_history_items
32
30
  end
@@ -13,12 +13,10 @@ module Xcal
13
13
  # api.get_event(1)
14
14
  # api.event(1)
15
15
  def get_event(id)
16
- response = http.get("/#{api_version}/events/#{id}?access_token=#{access_token}")
16
+ response = get_response("/#{api_version}/events/#{id}?access_token=#{access_token}")
17
17
 
18
18
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
19
19
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.event, self) : generic_response
20
-
21
- # TODO Add caching
22
20
  end
23
21
  alias :event :get_event
24
22
 
@@ -53,7 +51,7 @@ module Xcal
53
51
  # api.get_event_tags(2)
54
52
  # api.event_tags(2)
55
53
  def get_event_tags(id)
56
- response = http.get("/#{api_version}/events/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
54
+ response = get_response("/#{api_version}/events/#{id}/tags?#{URI.encode_www_form(access_token: access_token)}")
57
55
 
58
56
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, self)
59
57
  response.code == '200' && generic_response.has_key?(:tags) ? generic_response.tags.map(&:tag) : generic_response
@@ -16,7 +16,7 @@ module Xcal
16
16
  # api.metrics(page: 2, per_page: 5)
17
17
  def get_paged_metrics(args = {})
18
18
  args.merge!(:access_token => access_token)
19
- response = http.get("/#{api_version}/metrics?#{URI.encode_www_form(args)}")
19
+ response = get_response("/#{api_version}/metrics?#{URI.encode_www_form(args)}")
20
20
 
21
21
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
22
22
  if response.code == '200'
@@ -24,8 +24,6 @@ module Xcal
24
24
  else
25
25
  generic_response
26
26
  end
27
-
28
- # TODO Add caching
29
27
  end
30
28
  alias :metrics :get_paged_metrics
31
29
 
@@ -38,42 +36,28 @@ module Xcal
38
36
  # ==== Examples
39
37
  # api.get_metric(2)
40
38
  def get_metric(id)
41
- response = http.get("/#{api_version}/metrics/#{id}?access_token=#{access_token}")
39
+ response = get_response("/#{api_version}/metrics/#{id}?access_token=#{access_token}")
42
40
 
43
41
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
44
42
  response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
45
-
46
- # TODO Add caching
47
43
  end
48
44
  alias :metric :get_metric
49
45
 
50
- # Posts new metric
51
- #
52
- # Alarm argument should be a hash of Alarm + Events data.
46
+ # Fetches metric with specific name
53
47
  #
54
- # Example of metric data:
55
- #
56
- # +metric+ :
57
- # {
58
- # :name => 'metric name',
59
- # :originating_system => 'Source System',
60
- # :impact_level => 'low',
61
- # :tag_list => %w(taga tagb)
62
- # }
63
- #
64
- # Example of events array:
65
- # +events+ :
66
- # [
67
- # {
68
- # :subject => 'EventSubj',
69
- # :description => 'EventDesc',
70
- # :host_impacted => 'host',
71
- # :initiated_at => '2013-11-22T01:00:24Z',
72
- # :service_impacted => 'EventSvc',
73
- # :incident_status => 'CRITICAL'
74
- # }
75
- # ]
48
+ # ==== Parameters
49
+ # * +name+ metric name
76
50
  #
51
+ # ==== Examples
52
+ # api.get_metric_by_name('Errors Summary')
53
+ def get_metric_by_name(name)
54
+ response = get_response("/#{api_version}/metrics/by_name?#{URI.encode_www_form(access_token: access_token, name: name)}")
55
+
56
+ generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
57
+ response.code == '200' ? Xcal::Parktronic::GenericResponse.new(generic_response.metric, self) : generic_response
58
+ end
59
+ alias :metric_by_name :get_metric_by_name
60
+
77
61
 
78
62
  # Posts new metric
79
63
  #
@@ -84,11 +68,10 @@ module Xcal
84
68
  #
85
69
  # ==== Examples
86
70
  # metric_params = { name: 'metric name', description: 'metric description', created_at: Time.now }
87
- # metric_value_1 = { value: 2, timestamp: (Time.now - 240)}
88
- # metric_value_2 = { value: 4, timestamp: (Time.now - 120)}
71
+ # metric_value_1 = { value: 2, custom_timestamp: (Time.now - 240)}
72
+ # metric_value_2 = { value: 4, custom_timestamp: (Time.now - 120)}
89
73
  # device_error_1 = { timestamp: (Time.now() - 120), value: 5}
90
74
  # api.post_metric( metric: metric_params, metric_values: [metric_value_1, metric_value_2], device_error: [device_error_1] )
91
- # TODO check this method!
92
75
  def post_metric(args = {})
93
76
  request = Net::HTTP::Post.new("/#{api_version}/metrics", 'Content-Type' => 'application/json')
94
77
  request.body = { access_token: access_token, metric: args[:metric], metric_values: args[:metric_values], device_errors: [args[:device_errors]] }.to_json
@@ -11,7 +11,7 @@ module Xcal
11
11
  # Call example:
12
12
  # alarm(3).get_alarm_actions
13
13
  def get_alarm_actions
14
- response = client.http.get("/#{client.api_version}/alarms/#{id}/alarm_actions?#{URI.encode_www_form(access_token: client.access_token)}")
14
+ response = client.get_response("/#{client.api_version}/alarms/#{id}/alarm_actions?#{URI.encode_www_form(access_token: client.access_token)}")
15
15
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
16
16
 
17
17
  if response.code == '200' && generic_response.has_key?(:alarm_actions)
@@ -26,17 +26,14 @@ module Xcal
26
26
  # Accepted attributes:
27
27
  # +id+ alarm_action ID
28
28
  def get_alarm_action(alarm_action_id)
29
- response = client.http.get("/#{client.api_version}/alarms/#{id}/alarm_actions/#{alarm_action_id}?access_token=#{client.access_token}")
29
+ response = client.get_response("/#{client.api_version}/alarms/#{id}/alarm_actions/#{alarm_action_id}?access_token=#{client.access_token}")
30
30
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
31
31
 
32
32
  if response.code == '200' && generic_response.has_key?(:alarm_action)
33
33
  generic_response.alarm_action
34
34
  else
35
- #TODO think, maybe return false or nil or 'Record not found?'
36
35
  generic_response
37
36
  end
38
-
39
- # TODO Add caching
40
37
  end
41
38
 
42
39
  # Posts new alarm
@@ -16,7 +16,7 @@ module Xcal
16
16
  # +per_page+ per page value, defaults to 100
17
17
  def get_paged_device_errors(args = {})
18
18
  args.merge!(:access_token => client.access_token)
19
- response = client.http.get("/#{client.api_version}/metrics/#{id}/device_errors?#{URI.encode_www_form(args)}")
19
+ response = client.get_response("/#{client.api_version}/metrics/#{id}/device_errors?#{URI.encode_www_form(args)}")
20
20
 
21
21
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
22
22
  if response.code == '200' && generic_response.has_key?(:device_errors)
@@ -16,7 +16,7 @@ module Xcal
16
16
  # +per_page+ per page value, defaults to 100
17
17
  def get_paged_events(args = {})
18
18
  args.merge!(:access_token => client.access_token)
19
- response = client.http.get("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(args)}")
19
+ response = client.get_response("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(args)}")
20
20
 
21
21
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
22
22
  response.code == '200' && generic_response.has_key?(:events) ? generic_response.events.map(&:event) : generic_response
@@ -29,7 +29,7 @@ module Xcal
29
29
  # Call example:
30
30
  # alarm(id).get_all_events
31
31
  def get_all_events
32
- response = client.http.get("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(access_token: client.access_token)}")
32
+ response = client.get_response("/#{client.api_version}/alarms/#{id}/events?#{URI.encode_www_form(access_token: client.access_token)}")
33
33
 
34
34
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
35
35
  response.code == '200' && generic_response.has_key?(:events) ? generic_response.events.map(&:event) : generic_response
@@ -16,7 +16,7 @@ module Xcal
16
16
  # +per_page+ per page value, defaults to 100
17
17
  def get_paged_metric_values(args = {})
18
18
  args.merge!(:access_token => client.access_token)
19
- response = client.http.get("/#{client.api_version}/metrics/#{id}/metric_values?#{URI.encode_www_form(args)}")
19
+ response = client.get_response("/#{client.api_version}/metrics/#{id}/metric_values?#{URI.encode_www_form(args)}")
20
20
 
21
21
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body, client)
22
22
  if response.code == '200' && generic_response.has_key?(:metric_values)
@@ -15,7 +15,7 @@ module Xcal
15
15
  # api.outages
16
16
  def get_paged_outages(args = {})
17
17
  args.merge!(access_token: access_token)
18
- response = http.get("/#{api_version}/outages?#{URI.encode_www_form(args)}")
18
+ response = get_response("/#{api_version}/outages?#{URI.encode_www_form(args)}")
19
19
 
20
20
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
21
21
  if response.code == '200' && generic_response.has_key?(:high_impact_incidents)
@@ -23,8 +23,6 @@ module Xcal
23
23
  else
24
24
  generic_response
25
25
  end
26
-
27
- # TODO Add caching
28
26
  end
29
27
  alias :outages :get_paged_outages
30
28
  end
@@ -15,10 +15,11 @@ module Xcal
15
15
  # ==== Examples
16
16
  # api.get_paged_stack_changes
17
17
  # api.stack_changes(element: 'TEST', page: 1, per_page: 5)
18
- # TODO FIX time_range param, need pass it as json
19
18
  def get_paged_stack_changes(args = {})
20
19
  args.merge!(access_token: access_token)
21
- response = http.get("/#{api_version}/stack_changes?#{URI.encode_www_form(args)}")
20
+ args[:time_range] = args[:time_range].to_json if args[:time_range]
21
+
22
+ response = get_response("/#{api_version}/stack_changes?#{URI.encode_www_form(args)}")
22
23
 
23
24
  generic_response = Xcal::Parktronic::GenericResponse.new(response.body)
24
25
  if response.code == '200' && generic_response.has_key?(:stack_changes)
@@ -26,8 +27,6 @@ module Xcal
26
27
  else
27
28
  generic_response
28
29
  end
29
-
30
- # TODO Add caching
31
30
  end
32
31
  alias :stack_changes :get_paged_stack_changes
33
32
 
@@ -1,5 +1,5 @@
1
1
  module Xcal
2
2
  module Parktronic
3
- VERSION = '1.0.0'
3
+ VERSION = '1.0.1'
4
4
  end
5
5
  end
@@ -30,6 +30,13 @@ describe Xcal::Parktronic::ApiClient do
30
30
 
31
31
  expect(metric.id.to_s).to eql('7')
32
32
  end
33
+
34
+ it 'should find metric by name' do
35
+ metric = nil
36
+ expect { metric = api_http_client.get_metric_by_name('Metric Name') }.not_to raise_error
37
+
38
+ expect(metric.id.to_s).to eql('7')
39
+ end
33
40
  end
34
41
 
35
42
  context 'posting' do
@@ -89,4 +96,4 @@ describe Xcal::Parktronic::ApiClient do
89
96
  end
90
97
 
91
98
  end
92
- end
99
+ end
@@ -6,6 +6,7 @@ describe Xcal::Parktronic::ApiClient do
6
6
  let(:api_invalid_client){ Xcal::Parktronic::ApiClient.new(endpoint: 'http://api.mock') }
7
7
 
8
8
  context 'alarms route' do
9
+
9
10
  describe '#get_alarm_actions' do
10
11
  it 'should return alarm_actions for alarm' do
11
12
  expect{ api_http_client.get_alarm(2).get_alarm_actions}.not_to raise_error
@@ -6,6 +6,7 @@ describe Xcal::Parktronic::ApiClient do
6
6
  let(:api_invalid_client){ Xcal::Parktronic::ApiClient.new(endpoint: 'http://api.mock') }
7
7
 
8
8
  context 'alarms route' do
9
+
9
10
  describe '#get_all_events' do
10
11
  it 'should return events for alarm' do
11
12
  expect{ api_http_client.alarm(2).get_all_events }.not_to raise_error
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.required_ruby_version = '>=1.9.2'
22
22
 
23
23
  spec.add_dependency 'hashie'
24
+ spec.add_dependency 'dalli'
24
25
 
25
26
  spec.add_development_dependency 'bundler', '~> 1.3'
26
27
  spec.add_development_dependency 'rb-readline'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xcal-parktronic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vitaliy Omelchenko
@@ -10,104 +10,118 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2014-01-29 00:00:00.000000000 Z
13
+ date: 2014-08-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: hashie
17
17
  requirement: !ruby/object:Gem::Requirement
18
18
  requirements:
19
- - - ! '>='
19
+ - - ">="
20
20
  - !ruby/object:Gem::Version
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
- - - ! '>='
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '0'
29
+ - !ruby/object:Gem::Dependency
30
+ name: dalli
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
27
41
  - !ruby/object:Gem::Version
28
42
  version: '0'
29
43
  - !ruby/object:Gem::Dependency
30
44
  name: bundler
31
45
  requirement: !ruby/object:Gem::Requirement
32
46
  requirements:
33
- - - ~>
47
+ - - "~>"
34
48
  - !ruby/object:Gem::Version
35
49
  version: '1.3'
36
50
  type: :development
37
51
  prerelease: false
38
52
  version_requirements: !ruby/object:Gem::Requirement
39
53
  requirements:
40
- - - ~>
54
+ - - "~>"
41
55
  - !ruby/object:Gem::Version
42
56
  version: '1.3'
43
57
  - !ruby/object:Gem::Dependency
44
58
  name: rb-readline
45
59
  requirement: !ruby/object:Gem::Requirement
46
60
  requirements:
47
- - - ! '>='
61
+ - - ">="
48
62
  - !ruby/object:Gem::Version
49
63
  version: '0'
50
64
  type: :development
51
65
  prerelease: false
52
66
  version_requirements: !ruby/object:Gem::Requirement
53
67
  requirements:
54
- - - ! '>='
68
+ - - ">="
55
69
  - !ruby/object:Gem::Version
56
70
  version: '0'
57
71
  - !ruby/object:Gem::Dependency
58
72
  name: rake
59
73
  requirement: !ruby/object:Gem::Requirement
60
74
  requirements:
61
- - - ! '>='
75
+ - - ">="
62
76
  - !ruby/object:Gem::Version
63
77
  version: '0'
64
78
  type: :development
65
79
  prerelease: false
66
80
  version_requirements: !ruby/object:Gem::Requirement
67
81
  requirements:
68
- - - ! '>='
82
+ - - ">="
69
83
  - !ruby/object:Gem::Version
70
84
  version: '0'
71
85
  - !ruby/object:Gem::Dependency
72
86
  name: rspec
73
87
  requirement: !ruby/object:Gem::Requirement
74
88
  requirements:
75
- - - ! '>='
89
+ - - ">="
76
90
  - !ruby/object:Gem::Version
77
91
  version: '0'
78
92
  type: :development
79
93
  prerelease: false
80
94
  version_requirements: !ruby/object:Gem::Requirement
81
95
  requirements:
82
- - - ! '>='
96
+ - - ">="
83
97
  - !ruby/object:Gem::Version
84
98
  version: '0'
85
99
  - !ruby/object:Gem::Dependency
86
100
  name: webmock
87
101
  requirement: !ruby/object:Gem::Requirement
88
102
  requirements:
89
- - - ! '>='
103
+ - - ">="
90
104
  - !ruby/object:Gem::Version
91
105
  version: '0'
92
106
  type: :development
93
107
  prerelease: false
94
108
  version_requirements: !ruby/object:Gem::Requirement
95
109
  requirements:
96
- - - ! '>='
110
+ - - ">="
97
111
  - !ruby/object:Gem::Version
98
112
  version: '0'
99
113
  - !ruby/object:Gem::Dependency
100
114
  name: sinatra
101
115
  requirement: !ruby/object:Gem::Requirement
102
116
  requirements:
103
- - - ! '>='
117
+ - - ">="
104
118
  - !ruby/object:Gem::Version
105
119
  version: '0'
106
120
  type: :development
107
121
  prerelease: false
108
122
  version_requirements: !ruby/object:Gem::Requirement
109
123
  requirements:
110
- - - ! '>='
124
+ - - ">="
111
125
  - !ruby/object:Gem::Version
112
126
  version: '0'
113
127
  description: OIV API gem
@@ -117,8 +131,8 @@ executables: []
117
131
  extensions: []
118
132
  extra_rdoc_files: []
119
133
  files:
120
- - .gitignore
121
- - .travis.yml
134
+ - ".gitignore"
135
+ - ".travis.yml"
122
136
  - Gemfile
123
137
  - LICENSE.txt
124
138
  - README.md
@@ -193,17 +207,17 @@ require_paths:
193
207
  - lib
194
208
  required_ruby_version: !ruby/object:Gem::Requirement
195
209
  requirements:
196
- - - ! '>='
210
+ - - ">="
197
211
  - !ruby/object:Gem::Version
198
212
  version: 1.9.2
199
213
  required_rubygems_version: !ruby/object:Gem::Requirement
200
214
  requirements:
201
- - - ! '>='
215
+ - - ">="
202
216
  - !ruby/object:Gem::Version
203
217
  version: '0'
204
218
  requirements: []
205
219
  rubyforge_project:
206
- rubygems_version: 2.0.3
220
+ rubygems_version: 2.2.2
207
221
  signing_key:
208
222
  specification_version: 4
209
223
  summary: Get easy access to the most OIV data