platform_lib 0.1.1 → 0.1.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 79c97235cb07402a1ddf6fb58dd8839586f6b897
4
- data.tar.gz: 414d5aabcdfb1615a2560e2264e54f2a6dc2fec5
3
+ metadata.gz: 45543706933ad779646842d51b6ae58fdf15eb35
4
+ data.tar.gz: 5dfb6465c06b8ec8004538c494e03e3b96c6a0d3
5
5
  SHA512:
6
- metadata.gz: eefb7e131eb6903f11d0a17f75d1954ab71743d4bad3c313c1ca8a0acd3b5667ccb0a4b2c183fee05b3eea059cf373958b6c4cd0307363dd4b734a3d72898fa0
7
- data.tar.gz: 8efdab29e61471867575365bd3de95276a513efa399c54c0965dd41013b48bd74d10091583eabfe70826f3f5029e10182d89b38bffcd4dd5f96d70935fcf2938
6
+ metadata.gz: 6ae540e30f67334cb2492b302a86444cd5856846dbf61446e8230687de69d97ec537e3094f657ab3a50d61a3ab6142538e48c12847c1a86c7109c38b65e13213
7
+ data.tar.gz: 259ae7b71c9a3c3de1307a0af0d9e1e6f2427ce402e99adad7bdd581003d96e8dfd0d5e0051c10b844fb8170357c478e4e5cbe84e964b01ffcd238ad63e2ff1a
data/lib/platform_lib.rb CHANGED
@@ -1,7 +1,10 @@
1
1
  require "platform_lib/version"
2
+ require "platform_lib/business_service"
2
3
  require "platform_lib/data_service"
3
4
  require "platform_lib/media_service"
4
5
  require "platform_lib/task_service"
6
+ require "platform_lib/account_service"
7
+ require "platform_lib/filemanagement_service"
5
8
 
6
9
  # scripts
7
10
  require "scripts/sync_guid_with_id"
@@ -0,0 +1,50 @@
1
+ require 'uri'
2
+ require 'json'
3
+ require 'platform_lib/service_base'
4
+
5
+ module PlatformLib
6
+ # Public: A wrapper around the Account Data Service
7
+ #
8
+ # Examples:
9
+ #
10
+ # # the preferred method
11
+ # service = PlatformLib::DataService.new("user", "pass").account_service
12
+ #
13
+ # # direct instantiation
14
+ # service = PlatformLib::AccountService.new("auth_token")
15
+ #
16
+ class AccountService
17
+ include ServiceBase
18
+
19
+ END_POINT = "https://mps.theplatform.com/data/Account"
20
+
21
+ # Public: Creates a new instance
22
+ #
23
+ # auth_token - the authentication token to be used
24
+ def initialize(auth_token)
25
+ @auth_token = auth_token
26
+ end
27
+
28
+ # Public: Queries the account end point
29
+ #
30
+ # params - an optional hash of parameters (query string)
31
+ # block - an optional block to be called for each item returned
32
+ #
33
+ # Examples:
34
+ #
35
+ # items = account_service.get_account_items(range: "1-10")
36
+ #
37
+ # account_service.get_account_items(byCustomValue: "{test}{val}") do |item|
38
+ # puts item.title
39
+ # end
40
+ #
41
+ # Returns the items supplied from the service
42
+ def get_account_items(params = {}, &block)
43
+ if block.nil?
44
+ get_entries(END_POINT, params)
45
+ else
46
+ get_entries(END_POINT, params, &block)
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,70 @@
1
+ require "json"
2
+ require "hashie"
3
+ require "platform_lib/web_helper"
4
+
5
+ module PlatformLib
6
+ class BusinessService
7
+
8
+ def initialize(username, password)
9
+ @username = username
10
+ @password = password
11
+ @auth_token = nil
12
+
13
+ @services = {}
14
+ end
15
+
16
+ def method_missing(method_name, *args)
17
+ if method_name =~ /^(.*)_service$/
18
+ service_by_name($1)
19
+ else
20
+ super
21
+ end
22
+ end
23
+
24
+ def sign_out
25
+ return if @auth_token.nil?
26
+
27
+ url = AUTH_URL_FORMAT.sub(/ACTION/, 'signOut')
28
+ url << "&_token=#{@auth_token}"
29
+ uri = URI.parse(url)
30
+
31
+ response = WebHelper::get(uri, :user => @username, :pass => @password)
32
+ @auth_token = nil
33
+ @services.clear
34
+ end
35
+
36
+ private
37
+
38
+ AUTH_URL_FORMAT = "https://identity.auth.theplatform.com"
39
+ AUTH_URL_FORMAT << "/idm/web/Authentication/ACTION?schema=1.0&form=json"
40
+
41
+ def service_by_name(name)
42
+
43
+ # we've already got an instance
44
+ service = @services[name]
45
+
46
+ if service.nil?
47
+ # create a new service
48
+ sign_in
49
+
50
+ class_name = "#{name.capitalize}Service"
51
+ service = PlatformLib.const_get(class_name).new(@auth_token)
52
+ @services[name] = service
53
+ end
54
+
55
+ if block_given?
56
+ yield(service)
57
+ else
58
+ service
59
+ end
60
+ end
61
+
62
+ def sign_in
63
+ uri = URI.parse(AUTH_URL_FORMAT.sub(/ACTION/, 'signIn'))
64
+ response = WebHelper::get(uri, user: @username, pass: @password)
65
+
66
+ response_object = Hashie::Mash.new(JSON.parse(response))
67
+ @auth_token = response_object.signInResponse.token
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,44 @@
1
+ require 'uri'
2
+ require 'json'
3
+ require 'platform_lib/service_base'
4
+
5
+ module PlatformLib
6
+ # Public: A wrapper around the File Management Business Service
7
+ #
8
+ # Examples:
9
+ #
10
+ # # the preferred method
11
+ # service = PlatformLib::BusinessService.new("user", "pass").filemanagement_service
12
+ #
13
+ # # direct instantiation
14
+ # service = PlatformLib::FileManagementService.new("auth_token")
15
+ #
16
+ class FilemanagementService
17
+ include ServiceBase
18
+
19
+ END_POINT = "https://fms.theplatform.com/web/FileManagement"
20
+
21
+ # Public: Creates a new instance
22
+ #
23
+ # auth_token - the authentication token to be used
24
+ def initialize(auth_token)
25
+ @auth_token = auth_token
26
+ end
27
+
28
+ # Public: Resets the task end point
29
+ #
30
+ # params - an optional hash of parameters (query string)
31
+ # block - an optional block to be called for each item returned
32
+ #
33
+ # Examples:
34
+ #
35
+ # resetTask = filemanagement_service.resetTask(taskId, params)
36
+ #
37
+ #
38
+ # Returns an empty response if successful
39
+ def resetTask(taskId, params)
40
+ data = { :resetTask => { :taskId => taskId } }
41
+ post_data(END_POINT, params, data)
42
+ end
43
+ end
44
+ end
@@ -65,6 +65,19 @@ module PlatformLib
65
65
  WebHelper::put(uri, body)
66
66
  end
67
67
 
68
+ def post_data(end_point, params = {}, data)
69
+ ensure_auth_param(params)
70
+
71
+ uri = URI.parse("#{end_point}?#{URI.encode_www_form(params)}")
72
+ puts uri.to_s
73
+ body = "#{JSON.generate(data)}"
74
+
75
+ puts body
76
+
77
+ WebHelper::post(uri, body)
78
+ end
79
+
80
+
68
81
  private
69
82
 
70
83
  def ensure_auth_param(params)
@@ -1,4 +1,4 @@
1
1
  module PlatformLib
2
2
  # Public:
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.3"
4
4
  end
@@ -33,6 +33,19 @@ module PlatformLib
33
33
  http.request(request)
34
34
  end
35
35
 
36
+ def self.post(uri, body)
37
+ http = Net::HTTP.new(uri.host, uri.port)
38
+ if uri.scheme == "https"
39
+ http.use_ssl = true
40
+ end
41
+
42
+ request = Net::HTTP::Post.new(uri.request_uri)
43
+ request.content_type = "application/json"
44
+ request.body = body
45
+
46
+ http.request(request)
47
+ end
48
+
36
49
  private
37
50
 
38
51
  def self.set_auth(request, auth)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: platform_lib
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Muto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-28 00:00:00.000000000 Z
11
+ date: 2014-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -126,7 +126,10 @@ files:
126
126
  - Rakefile
127
127
  - bin/tp_lib
128
128
  - lib/platform_lib.rb
129
+ - lib/platform_lib/account_service.rb
130
+ - lib/platform_lib/business_service.rb
129
131
  - lib/platform_lib/data_service.rb
132
+ - lib/platform_lib/filemanagement_service.rb
130
133
  - lib/platform_lib/media_service.rb
131
134
  - lib/platform_lib/service_base.rb
132
135
  - lib/platform_lib/task_service.rb
@@ -159,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
162
  version: '0'
160
163
  requirements: []
161
164
  rubyforge_project:
162
- rubygems_version: 2.2.1
165
+ rubygems_version: 2.2.2
163
166
  signing_key:
164
167
  specification_version: 4
165
168
  summary: Work with ThePlatform Data Services