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.
- data/lib/driftrock-service/api/admin.rb +35 -0
- data/lib/driftrock-service/api/data.rb +2 -2
- data/lib/driftrock-service/api/{administrative.rb → website.rb} +2 -2
- data/lib/driftrock-service/api.rb +11 -9
- data/lib/driftrock-service/config.rb +12 -1
- data/lib/driftrock-service/connector.rb +20 -13
- data/lib/driftrock-service/driftrock_app.rb +30 -0
- data/lib/driftrock-service/driftrock_logger.rb +68 -0
- data/lib/driftrock-service/version.rb +1 -1
- data/lib/driftrock-service.rb +19 -34
- data/spec/models/administrative_api_test.rb +1 -1
- metadata +50 -44
@@ -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
|
@@ -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
|
-
|
32
|
-
|
33
|
-
|
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),
|
13
|
-
|
14
|
-
|
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),
|
22
|
-
|
23
|
-
|
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
|
data/lib/driftrock-service.rb
CHANGED
@@ -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/
|
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
|
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
|
24
|
-
include Driftrock::Service::Api::
|
25
|
-
end
|
32
|
+
def acts_as_driftrock_website
|
33
|
+
include Driftrock::Service::Api::Website
|
34
|
+
end
|
26
35
|
|
27
|
-
def
|
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
|
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
|
-
|
14
|
-
|
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
|
-
|
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:
|
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
|
-
|
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:
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
35
38
|
type: :development
|
36
|
-
|
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/
|
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:
|
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:
|
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
|