cleaver_client 0.0.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.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/cleaver_client.rb +85 -0
  3. metadata +59 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: eb051c9481a15c822452f1e1ef5178baea3bc0c2
4
+ data.tar.gz: c1057e2212820cf569f78b4d16bbc3e3a6a9a842
5
+ SHA512:
6
+ metadata.gz: 1d89b6bff0f9a8665391f08568aa18d459a42a54b52d47ad823d5bdead8a34ea4ddc850c356b657f7233acde2b2f60b19304e2e7752eb8fc264c4d0789c2e44d
7
+ data.tar.gz: af1687d075792383adb56fbdd86622d5735fbd8883ac928022242574d4843553c2959f4bd751c2930eb984f8d5a0173e16c881a08d9b29e2dd9479feb476d919
@@ -0,0 +1,85 @@
1
+ %w{rest_client json}.each { |lib| require lib }
2
+
3
+ class Hash
4
+ def not_nils!
5
+ reject! { |k, v| v.nil? }
6
+ end
7
+ end
8
+
9
+ #This class creates a new cleaver client instance
10
+ class CleaverClient
11
+
12
+ # Cleaver Api Error class
13
+ class ApiError < StandardError
14
+ end
15
+
16
+ # Create a new connector instance
17
+ def initialize(login, password)
18
+ @token = nil
19
+ @api_url = 'https://cleaver.facetz.net/API/REST'
20
+ @login, @password = login, password
21
+ end
22
+
23
+ # Perform a login with login and password
24
+ def login
25
+ response = post "login", Username: @login, Password: @password
26
+ @token = response['Token']
27
+ end
28
+
29
+ # Perform logout
30
+ def logout(options = {})
31
+ require_auth!
32
+ get "#{@token}/logout", options
33
+ end
34
+
35
+ # Get available fields
36
+ def get_fields(options = {})
37
+ require_auth!
38
+ get "person/#{@token}/fields", options
39
+ end
40
+
41
+ # Get data
42
+ def get_data(options = {})
43
+ require_auth!
44
+ post "person/#{@token}/reports/Traffic/data/0/10000", options
45
+ end
46
+
47
+ # Pass post, get, delete, put and patch to the request method
48
+ def method_missing(method_name, *arguments, &block)
49
+ if method_name.to_s =~ /(post|get|put|patch|delete)/
50
+ request($1.to_sym, *arguments, &block)
51
+ else
52
+ super
53
+ end
54
+ end
55
+
56
+ # Let class instance respond to post, get, delete, put and patch
57
+ def respond_to?(method_name, *arguments, &block)
58
+ !!method_name.to_s.match(/(post|get|put|patch|delete)/) || super
59
+ end
60
+
61
+ def to_s
62
+ "#{@login}"
63
+ end
64
+
65
+ private
66
+ # Generic request method
67
+ def request(strategy, uri, data)
68
+ if strategy == :get
69
+ response = RestClient.get "#{@api_url}/#{uri}", params: data.to_json, :content_type => :json, :accept => :json
70
+ else
71
+ response = RestClient.send strategy, "#{@api_url}/#{uri}/", data.to_json, :content_type => :json, :accept => :json
72
+ end
73
+ response = JSON.parse response
74
+ response
75
+ end
76
+
77
+ def session_created?
78
+ @token != nil
79
+ end
80
+
81
+ def require_auth!
82
+ raise ApiError, "Must be logged in to log out" unless session_created?
83
+ end
84
+
85
+ end
metadata ADDED
@@ -0,0 +1,59 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cleaver_client
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - rekero
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-01-20 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rest_client
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ description: Cleaver API client
28
+ email: remurdo@gmail.com
29
+ executables: []
30
+ extensions: []
31
+ extra_rdoc_files: []
32
+ files:
33
+ - lib/cleaver_client.rb
34
+ homepage: http://rubygems.org/gems/cleaver_client
35
+ licenses:
36
+ - MIT
37
+ metadata: {}
38
+ post_install_message:
39
+ rdoc_options: []
40
+ require_paths:
41
+ - lib
42
+ required_ruby_version: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - '>='
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ requirements: []
53
+ rubyforge_project:
54
+ rubygems_version: 2.2.2
55
+ signing_key:
56
+ specification_version: 4
57
+ summary: Cleaver API client
58
+ test_files: []
59
+ has_rdoc: