driftrock-service 0.2.8 → 0.3.1

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