analytics-psw 0.0.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 +7 -0
  2. data/lib/analytics-psw.rb +97 -0
  3. metadata +116 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2dc7845ce2b020c0298a5b836dce5e5f2ab27cd5
4
+ data.tar.gz: 295d5abfc80a81a00f2896cf80c4eb874abc86b4
5
+ SHA512:
6
+ metadata.gz: 3cdac16ae49b925be09dd52d49cb2ed86d2238a20c9ffdce1c02ed5d6aa85f773f656981c09bd5b7f258eba658dad2f94b01d53c31676629d81de8e62b6054a7
7
+ data.tar.gz: 15104c15ac9f25a14c673e2ba0b4305851f3a659a7d7f72cdc1d768eadfe83c9cfa177d797a570c9c72ee6cb40ac27d78afcd671f48d2718cb6d8eb7867bf00b
@@ -0,0 +1,97 @@
1
+ require 'faraday'
2
+ require 'json'
3
+
4
+ class AnalyticsPSW
5
+
6
+ VERSION = "0.0.1"
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
+ @server_url = opts['server_url']
15
+ service_name = opts['service']
16
+ raise "Please ensure you have provided the appropriate server url and service name" unless @server_url && service_name
17
+ @proxy = ENV['http_proxy']
18
+ @proxy = "" if @server_url.start_with?("http://127.0.0.1") or @server_url.start_with?("http://localhost")
19
+ @conn = faraday_connection
20
+ @service_location = find_or_create_service(service_name)
21
+ end
22
+
23
+ def record_event(event_type, metadata = {})
24
+ metadata[:event_type] = event_type
25
+ post_json("#{@service_location}/events", "event", metadata)
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
+ JSON.parse(resp.body)
32
+ end
33
+
34
+ def create_event_type(name, description = "")
35
+ metadata = create_metadata(name, description)
36
+ post_json("#{@service_location}/event_types", "event_type", metadata)
37
+ end
38
+
39
+ def create_dimension(name, description = "")
40
+ metadata = create_metadata(name, description)
41
+ post_json("#{@service_location}/dimensions", "dimension", metadata)
42
+ end
43
+
44
+ private
45
+
46
+ def post_json(url, object_type, metadata)
47
+ json_object = create_json_object(object_type, metadata)
48
+ @conn.post do |req|
49
+ req.url url
50
+ req.headers['Content-Type'] = JSON_CONTENT_TYPE
51
+ req.body = json_object
52
+ end
53
+ end
54
+
55
+ def get_with_hash(url, hash_object = {})
56
+ @conn.get url, hash_object
57
+ end
58
+
59
+ def create_json_object(object_type, metadata = {})
60
+ json_object= {object_type => metadata}
61
+ json_object.to_json
62
+ end
63
+
64
+ def create_metadata(name, description = "")
65
+ metadata = {:name => name}
66
+ metadata[:description] = description unless description == ""
67
+ metadata
68
+ end
69
+
70
+ def find_or_create_service(service_name)
71
+ service_location = find_service_location(service_name)
72
+ if !service_location
73
+ resp = create_service(service_name)
74
+ service_location = resp["location"]
75
+ end
76
+ service_location
77
+ end
78
+
79
+ def find_service_location(service_name)
80
+ service_location = nil
81
+ all_services = JSON.parse(get_with_hash("#{API_URL}.json").body)
82
+ all_services["services"].each do |service|
83
+ service_location = service["location"] if service["name"] == service_name
84
+ end
85
+ service_location
86
+ end
87
+
88
+ def create_service(name, description = "")
89
+ metadata = create_metadata(name, description)
90
+ post_json(API_URL, "service", metadata)
91
+ end
92
+
93
+ def faraday_connection
94
+ Faraday.new(@server_url, {:proxy => {:uri => @proxy}})
95
+ end
96
+
97
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: analytics-psw
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jordan Keyes
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: faraday
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ description: Analytics-psw is a wrapper providing access to the Perceptive Cloud Platform
84
+ Analytics service
85
+ email:
86
+ - jordan.keyes@perceptivesoftware.com
87
+ executables: []
88
+ extensions: []
89
+ extra_rdoc_files: []
90
+ files:
91
+ - lib/analytics-psw.rb
92
+ homepage:
93
+ licenses:
94
+ - 3-Clause BSD
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '>='
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.1.11
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: Perceptive Cloud Platform Analytics Service Wrapper
116
+ test_files: []