analytics-psw 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/analytics-psw.rb +146 -148
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e7b734790fb9ee2506c504372e73f1519b55562a
4
- data.tar.gz: d4ac1d25f848cc6b62e54c9178b6a819922f43cb
3
+ metadata.gz: 6b6e9f607285d3b857b09d8184d0574ec5342da1
4
+ data.tar.gz: e6836265df1b2cf10d85ae9882a41807071179d2
5
5
  SHA512:
6
- metadata.gz: 1fa836545d19823c98705bf00fef78859ef1e42b838940b6c0105eaa617588785c1c9114d33693b559c22a024927200d8ceab0fa5651da7bcd2123dd10c754ef
7
- data.tar.gz: 48a8204692a574822b975855bb13174e7924f4f45175ebe73777e39fdf30ed3fb1b1e2fff214208a6cc59006ba9bd68e69fc9b11e931baa0fe92f291d2030d15
6
+ metadata.gz: a7046c2495b68a33f354575f2c14fac7e48812355dabb92b07119bca74a3bf02a3dbcdb03414d8deadc0b263a07f34d3ad512cd710d9e3d497d19523890b1a8c
7
+ data.tar.gz: 1472c13dc9ed25b8799b50f0a4087a48d4bb1dc88c2506d56ed0a003d83f69924b34d53bf115d044cf106b4c6d3b8ef370df771a3f045bc03612787bb129e03b
data/lib/analytics-psw.rb CHANGED
@@ -1,149 +1,147 @@
1
- require 'faraday'
2
- require 'json'
3
-
4
- class AnalyticsPSW
5
-
6
- VERSION = "0.1.0"
7
- API_VERSION = "v#{VERSION}"
8
- API_URL = "/api/#{API_VERSION}/services"
9
- JSON_CONTENT_TYPE = 'application/json'
10
-
11
- attr_accessor :service_location
12
-
13
- def initialize(opts = {})
14
- set_vars_from_opts(opts)
15
- @conn = faraday_connection
16
- service = find_or_create_service(@service_name)
17
- @service_location = service["location"] if service
18
- find_or_create_event_types(@event_types) if @event_types
19
- find_or_create_dimensions(@dimensions) if @dimensions
20
- end
21
-
22
- def record_event(event_type, metadata = {})
23
- metadata[:event_type] = event_type
24
- resp = post_json("#{@service_location}/events", "event", metadata)
25
- parse_json_response(resp)
26
- end
27
-
28
- def query_analytics(query_parameters)
29
- resp = get_with_hash("#{@service_location}/reports/query.json", query_parameters)
30
- raise "Problem with your query. Please check the required parameters and try again" if resp.status == 400
31
- parse_json_response(resp)
32
- end
33
-
34
- def create_event_type(name, description = "")
35
- metadata = create_metadata({:name => name, :description => description})
36
- resp = post_json("#{@service_location}/event_types", "event_type", metadata)
37
- parse_json_response(resp)
38
- end
39
-
40
- def create_dimension(name, data_type, units = "", description = "")
41
- metadata = create_metadata({:name => name, :description => description, :data_type => data_type, :units => units})
42
- resp = post_json("#{@service_location}/dimensions", "dimension", metadata)
43
- parse_json_response(resp)
44
- end
45
-
46
- private
47
-
48
- def set_vars_from_opts(opts)
49
- @server_url = opts['server_url']
50
- @service_name = opts['service'].strip if opts['service']
51
- raise "Please ensure you have provided the appropriate server url and service name" unless @server_url && @service_name && @service_name != ""
52
- @server_url = @server_url.chomp("/")
53
- @proxy = opts['proxy']
54
- @proxy = "" if @server_url.start_with?("http://127.0.0.1") or @server_url.start_with?("http://localhost")
55
- @event_types = opts['event_types']
56
- @dimensions = opts['dimensions']
57
- end
58
-
59
- def post_json(url, object_type, metadata)
60
- json_object = create_json_object(object_type, metadata)
61
- @conn.post do |req|
62
- req.url url
63
- req.headers['Content-Type'] = JSON_CONTENT_TYPE
64
- req.body = json_object
65
- end
66
- end
67
-
68
- def get_with_hash(url, hash_object = {})
69
- @conn.get url, hash_object
70
- end
71
-
72
- def create_json_object(object_type, metadata = {})
73
- json_object= {object_type => metadata}
74
- json_object.to_json
75
- end
76
-
77
- def create_metadata(hashmap)
78
- metadata = {}
79
- hashmap.each do |key, value|
80
- metadata[key] = value unless value == ""
81
- end
82
- metadata
83
- end
84
-
85
- def find_or_create_event_types(event_types)
86
- all_event_types = JSON.parse(get_with_hash("#{@service_location}/event_types.json").body)
87
- all_event_types["event_types"].each do |event_type|
88
- event_types.delete(event_type["name"]) if event_types.include?(event_type["name"])
89
- end
90
- event_types.each do |event_type|
91
- create_event_type(event_type)
92
- end
93
- event_types
94
- end
95
-
96
- def find_or_create_dimensions(dimensions)
97
- all_dimensions = get_all_dimensions
98
- dimensions.each do |dimension|
99
- dimension.each do |name, data_type|
100
- create_dimension(name, data_type) unless all_dimensions.include?(name)
101
- end
102
- end
103
- end
104
-
105
- def get_all_dimensions
106
- all_dimensions = []
107
- dimensions = JSON.parse(get_with_hash("#{@service_location}/dimensions.json").body)
108
- dimensions["dimensions"].each do |one_dimension|
109
- all_dimensions << one_dimension["name"]
110
- end
111
- all_dimensions
112
- end
113
-
114
- def find_or_create_service(service_name)
115
- service_location = find_service_location(service_name)
116
- if !service_location
117
- service_location = create_service(service_name)
118
- end
119
- service_location
120
- end
121
-
122
- def find_service_location(service_name)
123
- service_location = nil
124
- all_services = JSON.parse(get_with_hash("#{API_URL}.json").body)
125
- all_services["services"].each do |service|
126
- service_location = service if service["name"] == service_name
127
- end
128
- service_location
129
- end
130
-
131
- def create_service(name, description = "")
132
- metadata = create_metadata({:name => name, :description => description})
133
- post_json(API_URL, "service", metadata)
134
- end
135
-
136
- def parse_json_response(json_response)
137
- parsed_response = {}
138
- parsed_response['status'] = json_response.status if json_response.status
139
- parsed_response['body'] = json_response.body if json_response.body && json_response.body.strip != ""
140
- parsed_response['location'] = json_response.headers['location'] if json_response.headers && json_response.headers['location']
141
- parsed_response
142
- end
143
-
144
- def faraday_connection
145
- return Faraday.new(@server_url) if @proxy == nil
146
- Faraday.new(@server_url, {:proxy => {:uri => @proxy}})
147
- end
148
-
1
+ require "faraday"
2
+ require "json"
3
+
4
+ class AnalyticsPSW
5
+
6
+ API_URL = "/services"
7
+ JSON_CONTENT_TYPE = "application/json"
8
+
9
+ attr_accessor :service_location
10
+
11
+ def initialize(opts = {})
12
+ set_vars_from_opts(opts)
13
+ @conn = faraday_connection
14
+ service = find_or_create_service(@service_name)
15
+ @service_location = service["location"] if service
16
+ find_or_create_event_types(@event_types) if @event_types
17
+ find_or_create_dimensions(@dimensions) if @dimensions
18
+ end
19
+
20
+ def record_event(event_type, metadata = {})
21
+ metadata[:event_type] = event_type
22
+ resp = post_json("#{@service_location}/events", "event", metadata)
23
+ parse_json_response(resp)
24
+ end
25
+
26
+ def query_analytics(query_parameters)
27
+ resp = get_with_hash("#{@service_location}/reports/query.json", query_parameters)
28
+ raise "Problem with your query. Please check the required parameters and try again" if resp.status == 400
29
+ parse_json_response(resp)
30
+ end
31
+
32
+ def create_event_type(name, description = "")
33
+ metadata = create_metadata({:name => name, :description => description})
34
+ resp = post_json("#{@service_location}/event_types", "event_type", metadata)
35
+ parse_json_response(resp)
36
+ end
37
+
38
+ def create_dimension(name, data_type, units = "", description = "")
39
+ metadata = create_metadata({:name => name, :description => description, :data_type => data_type, :units => units})
40
+ resp = post_json("#{@service_location}/dimensions", "dimension", metadata)
41
+ parse_json_response(resp)
42
+ end
43
+
44
+ private
45
+
46
+ def set_vars_from_opts(opts)
47
+ @server_url = opts["server_url"]
48
+ @service_name = opts["service"].strip if opts["service"]
49
+ raise "Please ensure you have provided the appropriate server url and service name" unless @server_url && @service_name && @service_name != ""
50
+ @server_url = @server_url.chomp("/")
51
+ @proxy = opts["proxy"]
52
+ @proxy = "" if @server_url.start_with?("http://127.0.0.1") or @server_url.start_with?("http://localhost")
53
+ @event_types = opts["event_types"]
54
+ @dimensions = opts["dimensions"]
55
+ end
56
+
57
+ def post_json(url, object_type, metadata)
58
+ json_object = create_json_object(object_type, metadata)
59
+ @conn.post do |req|
60
+ req.url url
61
+ req.headers["Content-Type"] = JSON_CONTENT_TYPE
62
+ req.body = json_object
63
+ end
64
+ end
65
+
66
+ def get_with_hash(url, hash_object = {})
67
+ @conn.get url, hash_object
68
+ end
69
+
70
+ def create_json_object(object_type, metadata = {})
71
+ json_object= {object_type => metadata}
72
+ json_object.to_json
73
+ end
74
+
75
+ def create_metadata(hashmap)
76
+ metadata = {}
77
+ hashmap.each do |key, value|
78
+ metadata[key] = value unless value == ""
79
+ end
80
+ metadata
81
+ end
82
+
83
+ def find_or_create_event_types(event_types)
84
+ all_event_types = JSON.parse(get_with_hash("#{@service_location}/event_types.json").body)
85
+ all_event_types["event_types"].each do |event_type|
86
+ event_types.delete(event_type["name"]) if event_types.include?(event_type["name"])
87
+ end
88
+ event_types.each do |event_type|
89
+ create_event_type(event_type)
90
+ end
91
+ event_types
92
+ end
93
+
94
+ def find_or_create_dimensions(dimensions)
95
+ all_dimensions = get_all_dimensions
96
+ dimensions.each do |dimension|
97
+ dimension.each do |name, data_type|
98
+ create_dimension(name, data_type) unless all_dimensions.include?(name)
99
+ end
100
+ end
101
+ end
102
+
103
+ def get_all_dimensions
104
+ all_dimensions = []
105
+ dimensions = JSON.parse(get_with_hash("#{@service_location}/dimensions.json").body)
106
+ dimensions["dimensions"].each do |one_dimension|
107
+ all_dimensions << one_dimension["name"]
108
+ end
109
+ all_dimensions
110
+ end
111
+
112
+ def find_or_create_service(service_name)
113
+ service_location = find_service_location(service_name)
114
+ if !service_location
115
+ service_location = create_service(service_name)
116
+ end
117
+ service_location
118
+ end
119
+
120
+ def find_service_location(service_name)
121
+ service_location = nil
122
+ all_services = JSON.parse(get_with_hash("#{API_URL}.json").body)
123
+ all_services["services"].each do |service|
124
+ service_location = service if service["name"] == service_name
125
+ end
126
+ service_location
127
+ end
128
+
129
+ def create_service(name, description = "")
130
+ metadata = create_metadata({:name => name, :description => description})
131
+ post_json(API_URL, "service", metadata)
132
+ end
133
+
134
+ def parse_json_response(json_response)
135
+ parsed_response = {}
136
+ parsed_response["status"] = json_response.status if json_response.status
137
+ parsed_response["body"] = json_response.body if json_response.body && json_response.body.strip != ""
138
+ parsed_response["location"] = json_response.headers["location"] if json_response.headers && json_response.headers["location"]
139
+ parsed_response
140
+ end
141
+
142
+ def faraday_connection
143
+ return Faraday.new(@server_url) if @proxy == nil
144
+ Faraday.new(@server_url, {:proxy => {:uri => @proxy}})
145
+ end
146
+
149
147
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: analytics-psw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jordan Keyes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-31 00:00:00.000000000 Z
11
+ date: 2014-02-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -109,7 +109,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  version: '0'
110
110
  requirements: []
111
111
  rubyforge_project:
112
- rubygems_version: 2.1.11
112
+ rubygems_version: 2.0.14
113
113
  signing_key:
114
114
  specification_version: 4
115
115
  summary: Perceptive Cloud Platform Analytics Service Wrapper