driftrock-service 0.2.8 → 0.3.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.
@@ -0,0 +1,35 @@
1
+ module Driftrock
2
+ module Service
3
+ module Api
4
+ module Admin
5
+ include Driftrock::Service::Api
6
+
7
+ module URLs
8
+ BASE = '/admin'
9
+ APPS = BASE+'/apps'
10
+ end
11
+
12
+ def all_apps
13
+ get(URLs::APPS)
14
+ end
15
+
16
+ def make_visible(app_id)
17
+ put(URLs::APPS+"/#{app_id}/make_visible")
18
+ end
19
+
20
+ def make_invisible(app_id)
21
+ put(URLs::APPS+"/#{app_id}/make_invisible")
22
+ end
23
+
24
+ def activate(app_id)
25
+ put(URLs::APPS+"/#{app_id}/activate")
26
+ end
27
+
28
+ def deactivate(app_id)
29
+ put(URLs::APPS+"/#{app_id}/deactivate")
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -9,8 +9,8 @@ module Driftrock
9
9
  get(ENDPOINT+'/'+channel.to_s, opts)
10
10
  end
11
11
 
12
- def driftrock_query(query)
13
- get(ENDPOINT+'/query', {query: query})
12
+ def driftrock_query(query, opts = {})
13
+ get(ENDPOINT+'/query', {query: query}.merge(opts))
14
14
  end
15
15
 
16
16
  def driftrock_app_status
@@ -1,8 +1,8 @@
1
1
  module Driftrock
2
2
  module Service
3
3
  module Api
4
- module Administrative
5
- include Driftrock::Service::Api
4
+ module Website
5
+ include Driftrock::Service::Api
6
6
 
7
7
  module URLs
8
8
  BASE = '/dashboard_api'
@@ -2,7 +2,7 @@ module Driftrock
2
2
  module Service
3
3
  module Api
4
4
  def get(url, opts={})
5
- api_request do |user_id, company_id|
5
+ api_request(opts) do |user_id, company_id|
6
6
  Driftrock::Service::Connector.get_from_api(
7
7
  url, user_id, company_id, opts
8
8
  )
@@ -10,7 +10,7 @@ module Driftrock
10
10
  end
11
11
 
12
12
  def put(url, opts={})
13
- api_request do |user_id, company_id|
13
+ api_request(opts) do |user_id, company_id|
14
14
  Driftrock::Service::Connector.put_to_api(
15
15
  url, user_id, company_id, opts
16
16
  )
@@ -18,7 +18,7 @@ module Driftrock
18
18
  end
19
19
 
20
20
  def post(url, opts={})
21
- api_request do |user_id, company_id|
21
+ api_request(opts) do |user_id, company_id|
22
22
  Driftrock::Service::Connector.post_to_api(
23
23
  url, user_id, company_id, opts
24
24
  )
@@ -26,16 +26,18 @@ module Driftrock
26
26
  end
27
27
 
28
28
  private
29
- def api_request
29
+ def api_request(opts)
30
30
  user_id, company_id = nil
31
- begin
32
- sess = session.reduce({}){|h, (k, v)| h[k.to_sym] = v; h}
33
- user_id = sess[:user_id]
34
- company_id = sess[:company_id]
35
- rescue => e
31
+ if respond_to?(:session)
32
+ user_id = session[:user_id] if session && session[:user_id]
33
+ company_id = session[:company_id] if session && session[:company_id]
36
34
  end
35
+ user_id = opts[:user_id] if opts[:user_id]
36
+ company_id = opts[:company_id] if opts[:company_id]
37
+
37
38
  response = yield(user_id, company_id)
38
39
  if response['errors']
40
+ DriftrockLogger.error(response['errors'])
39
41
  raise Errors::DriftrockError.new(response['errors'])
40
42
  else
41
43
  response['data']
@@ -1,6 +1,6 @@
1
1
  module Driftrock
2
2
  module Service
3
- class Config < Struct.new(:salt,:base_url,:app_id,:api_token,
3
+ class Config < Struct.new(:salt,:log_location,:log_level,:base_url,:app_id,:api_token,
4
4
  :unauthorised_path)
5
5
  private_class_method :new
6
6
 
@@ -24,10 +24,21 @@ module Driftrock
24
24
  @config.app_id
25
25
  end
26
26
 
27
+ def self.log_level
28
+ @config.log_level
29
+ end
30
+
31
+ def self.log_location
32
+ @config.log_location
33
+ end
34
+
27
35
  def self.init
28
36
  config = new
37
+ config.log_level = DriftrockLogger::Levels::ALL
38
+ config.log_location = STDOUT
29
39
  yield(config)
30
40
  config.base_url.gsub(/\/$/, "") if config.base_url
41
+
31
42
  if Rails && config.app_id
32
43
  Rails.application.routes.prepend do
33
44
  get 'driftrock_app_status' => 'application#driftrock_app_status'
@@ -9,24 +9,31 @@ module Driftrock
9
9
  end
10
10
 
11
11
  def post_to_api(url, user_id, company_id, data)
12
- response = HTTParty.post(build_url_for_driftrock(url), :body => body_for(user_id, company_id, data))
13
- puts "[MD => CALLING #{build_url_for_driftrock(url)} WITH:"
14
- puts body_for(user_id, company_id, data)
15
- puts "[MD] => RESPONSE IS:"
16
- puts response
17
- puts "========="
12
+ response = HTTParty.post(build_url_for_driftrock(url),
13
+ :body => body_for(user_id, company_id, data))
14
+ debug_request(url, user_id, company_id, data, response)
18
15
  response
19
16
  end
20
17
  def get_from_api(url, user_id, company_id, data={})
21
- response = HTTParty.get(build_url_for_driftrock(url), :body => body_for(user_id, company_id, data))
22
- puts "[MD => CALLING #{build_url_for_driftrock(url)} WITH:"
23
- puts body_for(user_id, company_id, data)
24
- puts "[MD] => RESPONSE IS:"
25
- puts response
26
- puts "========="
18
+ response = HTTParty.get(build_url_for_driftrock(url),
19
+ :body => body_for(user_id, company_id, data))
20
+ debug_request(url, user_id, company_id, data, response)
27
21
  response
28
22
  end
23
+
24
+ def debug_request(url, user_id, company_id, data, response)
25
+ out = <<-OUT
26
+ =========
27
+ CALLING #{build_url_for_driftrock(url)} WITH:
28
+ #{body_for(user_id, company_id, data)}
29
+ RESPONSE IS:
30
+ #{response}
31
+ ==========
32
+ OUT
33
+ DriftrockLogger.debug(out)
34
+ end
29
35
 
36
+
30
37
  def put_to_api(url, user_id, company_id, data={})
31
38
  HTTParty.put(build_url_for_driftrock(url), :body => body_for(user_id, company_id, data))
32
39
  end
@@ -43,7 +50,7 @@ module Driftrock
43
50
  }
44
51
  }
45
52
  end
46
- module_function :get_from_api, :post_to_api, :body_for, :build_url_for_driftrock
53
+ module_function :debug_request, :get_from_api, :post_to_api, :put_to_api, :body_for, :build_url_for_driftrock
47
54
  end
48
55
  end
49
56
  end
@@ -0,0 +1,30 @@
1
+ module Driftrock::Service
2
+ module DriftrockApp
3
+
4
+
5
+ def add_p3p_header
6
+ response.headers["p3p"] = "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
7
+ end
8
+
9
+ def authorise
10
+ return if session && session[:user_id] && session[:company_id]
11
+ timestamp = params[:timestamp]
12
+ company_id= params[:company_id]
13
+ token = params[:token]
14
+ expected_token = token_for(timestamp, company_id)
15
+ if token != expected_token
16
+ redirect_to Driftrock::Service::Config.unauthorised_path
17
+ else
18
+ session[:user_id] = params[:user_id]
19
+ session[:company_id] = params[:company_id]
20
+ end
21
+ end
22
+
23
+ def token_for(timestamp, company_id)
24
+ OpenSSL::Digest::SHA1.hexdigest(
25
+ [timestamp,Driftrock::Service::Config.salt,company_id].join(":")
26
+ )
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,68 @@
1
+ require 'logger'
2
+ module Driftrock::Service
3
+ class DriftrockLogger
4
+ class Levels
5
+ DEBUG = 1
6
+ INFO = 2
7
+ WARNING = 3
8
+ ERROR = 4
9
+ ALL = 5
10
+ end
11
+ private_class_method :new
12
+
13
+ attr_accessor :logger
14
+
15
+ def self.info(msg)
16
+ me.out(msg, Levels::MESSAGE)
17
+ end
18
+
19
+ def self.error(msg)
20
+ me.out(msg, Levels::ERROR)
21
+ end
22
+
23
+ def self.warning(msg)
24
+ me.out(msg, Levels::WARNING)
25
+ end
26
+
27
+ def self.debug(msg)
28
+ me.out(msg, Levels::DEBUG)
29
+ end
30
+
31
+ def self.me
32
+ @instance ||= new
33
+ if !@instance.logger
34
+ @instance.logger = Logger.new(Config.log_location)
35
+ level = Config.log_level
36
+ case level
37
+ when Levels::DEBUG
38
+ @instance.logger.level = Logger::DEBUG
39
+ when Levels::INFO
40
+ @instance.logger.level = Logger::INFO
41
+ when Levels::WARNING
42
+ @instance.logger.level = Logger::WARN
43
+ when Levels::ERROR
44
+ @instance.logger.level = Logger::ERROR
45
+ end
46
+ end
47
+ @instance
48
+ end
49
+
50
+
51
+ def out(content, level)
52
+ log_level = Config.log_level
53
+ if log_level >= level
54
+ case level
55
+ when Levels::DEBUG
56
+ logger.debug(content)
57
+ when Levels::INFO
58
+ logger.info(content)
59
+ when Levels::WARNING
60
+ logger.warn(content)
61
+ when Levels::ERROR
62
+ logger.error(content)
63
+ end
64
+ end
65
+ end
66
+
67
+ end
68
+ end
@@ -1,5 +1,5 @@
1
1
  module Driftrock
2
2
  module Service
3
- VERSION = "0.2.8"
3
+ VERSION = "0.3.1"
4
4
  end
5
5
  end
@@ -2,29 +2,42 @@ require "driftrock-service/version"
2
2
  require "driftrock-service/config"
3
3
  require "driftrock-service/connector"
4
4
  require "driftrock-service/api"
5
- require "driftrock-service/api/administrative"
5
+ require "driftrock-service/api/website"
6
+ require "driftrock-service/api/admin"
6
7
  require "driftrock-service/api/data"
7
8
  require "driftrock-service/api/puller"
8
9
  require "driftrock-service/errors/driftrock_error"
10
+ require "driftrock-service/driftrock_logger"
11
+ require "driftrock-service/driftrock_app"
9
12
 
10
13
 
11
14
  module Driftrock
12
15
  module Service
13
16
 
14
17
  module ClassMethods
15
- def act_as_driftrock_app
18
+ def acts_as_driftrock_app
16
19
  if respond_to?(:before_filter)
20
+ include Driftrock::Service::DriftrockApp
17
21
  before_filter :add_p3p_header
18
22
  before_filter :authorise, except: :driftrock_app_status
19
23
  end
20
24
  include Driftrock::Service::Api::Data
21
25
  end
26
+
27
+ def acts_as_driftrock_app_model
28
+ include Driftrock::Service::Api::Data
29
+ extend Driftrock::Service::Api::Data
30
+ end
22
31
 
23
- def act_as_driftrock_administrator
24
- include Driftrock::Service::Api::Administrative
25
- end
32
+ def acts_as_driftrock_website
33
+ include Driftrock::Service::Api::Website
34
+ end
26
35
 
27
- def act_as_driftrock_puller
36
+ def acts_as_driftrock_admin
37
+ include Driftrock::Service::Api::Admin
38
+ end
39
+
40
+ def acts_as_driftrock_puller
28
41
  include Driftrock::Service::Api::Puller
29
42
  end
30
43
  end
@@ -33,34 +46,6 @@ module Driftrock
33
46
  base.extend ClassMethods
34
47
  end
35
48
 
36
- def add_p3p_header
37
- response.headers["p3p"] = "CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
38
- end
39
-
40
- def authorise
41
- puts "SESSION #{session}"
42
- return if session && session[:user_id] && session[:company_id]
43
- timestamp = params[:timestamp]
44
- company_id= params[:company_id]
45
- token = params[:token]
46
-
47
- expected_token = token_for(timestamp, company_id)
48
- puts "expected_token: #{expected_token}"
49
-
50
- if token != expected_token
51
- redirect_to Driftrock::Service::Config.unauthorised_path
52
- else
53
- session[:user_id] = params[:user_id]
54
- session[:company_id] = params[:company_id]
55
- puts "SESSION AFTER #{session}"
56
- end
57
- end
58
-
59
- def token_for(timestamp, company_id)
60
- OpenSSL::Digest::SHA1.hexdigest(
61
- [timestamp,Driftrock::Service::Config.salt,company_id].join(":")
62
- )
63
- end
64
49
 
65
50
  end
66
51
  end
@@ -1,5 +1,5 @@
1
1
  class AdministrativeApiTest
2
- include Driftrock::Service::Api::Administrative
2
+ include Driftrock::Service::Api::Website
3
3
 
4
4
  def test
5
5
  apps
metadata CHANGED
@@ -1,49 +1,55 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: driftrock-service
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
4
5
  prerelease:
5
- version: 0.2.8
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Max
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2013-05-24 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2013-05-29 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: httparty
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rspec
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: rspec
32
+ requirement: !ruby/object:Gem::Requirement
30
33
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
35
38
  type: :development
36
- version_requirements: *id002
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
37
46
  description: Gem for talking to the driftrock api
38
- email:
47
+ email:
39
48
  - max.dupenois@forward.co.uk
40
49
  executables: []
41
-
42
50
  extensions: []
43
-
44
51
  extra_rdoc_files: []
45
-
46
- files:
52
+ files:
47
53
  - .gitignore
48
54
  - Gemfile
49
55
  - LICENSE.txt
@@ -52,11 +58,14 @@ files:
52
58
  - driftrock-service.gemspec
53
59
  - lib/driftrock-service.rb
54
60
  - lib/driftrock-service/api.rb
55
- - lib/driftrock-service/api/administrative.rb
61
+ - lib/driftrock-service/api/admin.rb
56
62
  - lib/driftrock-service/api/data.rb
57
63
  - lib/driftrock-service/api/puller.rb
64
+ - lib/driftrock-service/api/website.rb
58
65
  - lib/driftrock-service/config.rb
59
66
  - lib/driftrock-service/connector.rb
67
+ - lib/driftrock-service/driftrock_app.rb
68
+ - lib/driftrock-service/driftrock_logger.rb
60
69
  - lib/driftrock-service/errors/driftrock_error.rb
61
70
  - lib/driftrock-service/version.rb
62
71
  - spec/administrative_api_spec.rb
@@ -64,32 +73,29 @@ files:
64
73
  - spec/spec_helper.rb
65
74
  homepage: https://github.com/forward/driftrock-service
66
75
  licenses: []
67
-
68
76
  post_install_message:
69
77
  rdoc_options: []
70
-
71
- require_paths:
78
+ require_paths:
72
79
  - lib
73
- required_ruby_version: !ruby/object:Gem::Requirement
80
+ required_ruby_version: !ruby/object:Gem::Requirement
74
81
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
79
- required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
80
87
  none: false
81
- requirements:
82
- - - ">="
83
- - !ruby/object:Gem::Version
84
- version: "0"
88
+ requirements:
89
+ - - ! '>='
90
+ - !ruby/object:Gem::Version
91
+ version: '0'
85
92
  requirements: []
86
-
87
93
  rubyforge_project:
88
94
  rubygems_version: 1.8.24
89
95
  signing_key:
90
96
  specification_version: 3
91
97
  summary: Maintains the api endpoints and the calls to them with authorisation, etc.
92
- test_files:
98
+ test_files:
93
99
  - spec/administrative_api_spec.rb
94
100
  - spec/models/administrative_api_test.rb
95
101
  - spec/spec_helper.rb