analytics-psw 0.1.1 → 0.1.2
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.
- checksums.yaml +4 -4
- data/lib/analytics-psw.rb +156 -146
- metadata +13 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9690e2147d8783257c8dac2434b4aaeefc43e685
|
|
4
|
+
data.tar.gz: ac1356c8a0a8eda726162ee4140d48a3a143c570
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4910eea5494ffd59db4dbb55df02172ed2b8fc366116d576b60fda4de474401be469cafb189fe4a6b4c9094bb176b6b2605bd5a727d727e126d64e6faec9bc63
|
|
7
|
+
data.tar.gz: 14776571c8758a048240c65d56025638ee1807a67e73d035eb99de42cd4c885cc003dd2b360c1a7706d0fd82768e66f4fd1d97e65aee603a48741ad5aed90f53
|
data/lib/analytics-psw.rb
CHANGED
|
@@ -1,147 +1,157 @@
|
|
|
1
|
-
require "faraday"
|
|
2
|
-
require "json"
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
@
|
|
48
|
-
@
|
|
49
|
-
|
|
50
|
-
@
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
service_location
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
def
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
end
|
|
146
|
-
|
|
1
|
+
require "faraday"
|
|
2
|
+
require "json"
|
|
3
|
+
require "analytics_reports"
|
|
4
|
+
require "analytics_services"
|
|
5
|
+
require "analytics_event_types"
|
|
6
|
+
require "analytics_dimension_properties"
|
|
7
|
+
require "analytics_dimensions"
|
|
8
|
+
|
|
9
|
+
class AnalyticsPSW
|
|
10
|
+
|
|
11
|
+
API_URL = "/services"
|
|
12
|
+
JSON_CONTENT_TYPE = "application/json"
|
|
13
|
+
SUM_CRITERIA_PARAM = "sum"
|
|
14
|
+
AVG_CRITERIA_PARAM = "avg"
|
|
15
|
+
|
|
16
|
+
PARSED_RESPONSE_STATUS = 'status'
|
|
17
|
+
PARSED_RESPONSE_BODY = 'body'
|
|
18
|
+
PARSED_RESPONSE_LOCATION = 'location'
|
|
19
|
+
|
|
20
|
+
include AnalyticsReports, AnalyticsServices, AnalyticsEventTypes, AnalyticsDimensions, AnalyticsDimensionProperties
|
|
21
|
+
|
|
22
|
+
attr_accessor :service_location
|
|
23
|
+
|
|
24
|
+
def initialize(opts = {})
|
|
25
|
+
set_vars_from_opts(opts)
|
|
26
|
+
@conn = faraday_connection
|
|
27
|
+
service = find_or_create_service(@service_name)
|
|
28
|
+
@service_location = service["location"] if service
|
|
29
|
+
find_or_create_event_types(@event_types) if @event_types
|
|
30
|
+
find_or_create_dimensions(@dimensions) if @dimensions
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def record_event(event_type, metadata = {})
|
|
34
|
+
metadata[:event_type] = event_type
|
|
35
|
+
resp = post_json("#{@service_location}/events", "event", metadata)
|
|
36
|
+
parse_json_response(resp)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
private
|
|
41
|
+
|
|
42
|
+
def set_vars_from_opts(opts)
|
|
43
|
+
@server_url = opts["server_url"]
|
|
44
|
+
@service_name = opts["service"].strip if opts["service"]
|
|
45
|
+
raise "Please ensure you have provided the appropriate server url and service name" unless @server_url && @service_name && @service_name != ""
|
|
46
|
+
@server_url = @server_url.chomp("/")
|
|
47
|
+
@proxy = opts["proxy"]
|
|
48
|
+
@proxy = "" if @server_url.start_with?("http://127.0.0.1") or @server_url.start_with?("http://localhost")
|
|
49
|
+
@event_types = opts["event_types"]
|
|
50
|
+
@dimensions = opts["dimensions"]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def post_json(url, object_type, metadata)
|
|
54
|
+
json_object = create_json_object(object_type, metadata)
|
|
55
|
+
@conn.post do |req|
|
|
56
|
+
req.url url
|
|
57
|
+
req.headers["Content-Type"] = JSON_CONTENT_TYPE
|
|
58
|
+
req.body = json_object
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def put_json(url, object_type, metadata)
|
|
63
|
+
json_object = create_json_object(object_type, metadata)
|
|
64
|
+
@conn.put do |req|
|
|
65
|
+
req.url url
|
|
66
|
+
req.headers["Content-Type"] = JSON_CONTENT_TYPE
|
|
67
|
+
req.body = json_object
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def get_with_hash(url, hash_object = {})
|
|
72
|
+
@conn.get url, hash_object
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def create_json_object(object_type, metadata = {})
|
|
76
|
+
json_object= {object_type => metadata}
|
|
77
|
+
json_object.to_json
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def create_metadata(hashmap)
|
|
81
|
+
metadata = {}
|
|
82
|
+
hashmap.each do |key, value|
|
|
83
|
+
metadata[key] = value unless value == ""
|
|
84
|
+
end
|
|
85
|
+
metadata
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def find_or_create_event_types(event_types)
|
|
89
|
+
all_event_types = JSON.parse(get_with_hash("#{@service_location}/event_types.json").body)
|
|
90
|
+
all_event_types["event_types"].each do |event_type|
|
|
91
|
+
event_types.delete(event_type["name"]) if event_types.include?(event_type["name"])
|
|
92
|
+
end
|
|
93
|
+
event_types.each do |event_type|
|
|
94
|
+
create_event_type(event_type)
|
|
95
|
+
end
|
|
96
|
+
event_types
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
def find_or_create_dimensions(dimensions)
|
|
100
|
+
all_dimensions = get_all_dimension_names
|
|
101
|
+
dimensions.each do |dimension|
|
|
102
|
+
dimension.each do |name, data_type|
|
|
103
|
+
create_dimension(name, data_type) unless all_dimensions.include?(name)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def get_all_dimension_names
|
|
109
|
+
dimension_names = []
|
|
110
|
+
dimensions = JSON.parse(get_with_hash("#{@service_location}/dimensions.json").body)
|
|
111
|
+
dimensions["dimensions"].each do |one_dimension|
|
|
112
|
+
dimension_names << one_dimension["name"]
|
|
113
|
+
end
|
|
114
|
+
dimension_names
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def find_or_create_service(service_name)
|
|
118
|
+
service_location = find_service_location(service_name)
|
|
119
|
+
if !service_location
|
|
120
|
+
service_location = create_service_private(service_name)
|
|
121
|
+
end
|
|
122
|
+
service_location
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
def find_service_location(service_name)
|
|
126
|
+
service_location = nil
|
|
127
|
+
all_services = JSON.parse(get_with_hash("#{API_URL}.json").body)
|
|
128
|
+
all_services["services"].each do |service|
|
|
129
|
+
service_location = service if service["name"] == service_name
|
|
130
|
+
end
|
|
131
|
+
service_location
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def create_service_private(name, description = "")
|
|
135
|
+
metadata = create_metadata({:name => name, :description => description})
|
|
136
|
+
post_json(API_URL, "service", metadata)
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def parse_json_response(json_response)
|
|
140
|
+
parsed_response = {}
|
|
141
|
+
parsed_response[PARSED_RESPONSE_STATUS] = json_response.status if json_response.status
|
|
142
|
+
parsed_response[PARSED_RESPONSE_BODY] = json_response.body if json_response.body && json_response.body.strip != ""
|
|
143
|
+
parsed_response[PARSED_RESPONSE_LOCATION] = json_response.headers["location"] if json_response.headers && json_response.headers["location"]
|
|
144
|
+
parsed_response
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
def delete_resource(url)
|
|
148
|
+
@conn.delete url
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def faraday_connection
|
|
152
|
+
return Faraday.new(@server_url) if @proxy == nil
|
|
153
|
+
Faraday.new(@server_url, {:proxy => {:uri => @proxy}})
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
|
|
147
157
|
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.
|
|
4
|
+
version: 0.1.2
|
|
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-
|
|
11
|
+
date: 2014-03-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -28,56 +28,56 @@ dependencies:
|
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - '>='
|
|
31
|
+
- - ! '>='
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '0'
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- - '>='
|
|
38
|
+
- - ! '>='
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rspec
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- - '>='
|
|
45
|
+
- - ! '>='
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
48
|
type: :development
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- - '>='
|
|
52
|
+
- - ! '>='
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: simplecov
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - '>='
|
|
59
|
+
- - ! '>='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - '>='
|
|
66
|
+
- - ! '>='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
68
|
version: '0'
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: faraday
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
|
-
- - '>='
|
|
73
|
+
- - ! '>='
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
75
|
version: '0'
|
|
76
76
|
type: :runtime
|
|
77
77
|
prerelease: false
|
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
79
|
requirements:
|
|
80
|
-
- - '>='
|
|
80
|
+
- - ! '>='
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: '0'
|
|
83
83
|
description: Analytics-psw is a wrapper providing access to the Perceptive Cloud Platform
|
|
@@ -99,17 +99,17 @@ require_paths:
|
|
|
99
99
|
- lib
|
|
100
100
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
101
101
|
requirements:
|
|
102
|
-
- - '>='
|
|
102
|
+
- - ! '>='
|
|
103
103
|
- !ruby/object:Gem::Version
|
|
104
104
|
version: '0'
|
|
105
105
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
requirements:
|
|
107
|
-
- - '>='
|
|
107
|
+
- - ! '>='
|
|
108
108
|
- !ruby/object:Gem::Version
|
|
109
109
|
version: '0'
|
|
110
110
|
requirements: []
|
|
111
111
|
rubyforge_project:
|
|
112
|
-
rubygems_version: 2.
|
|
112
|
+
rubygems_version: 2.1.4
|
|
113
113
|
signing_key:
|
|
114
114
|
specification_version: 4
|
|
115
115
|
summary: Perceptive Cloud Platform Analytics Service Wrapper
|