analytics-psw 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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