wf4ever-transformation-client 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZGQ5NzNjN2M3ZDhlYTg0NjNmMDdmOTRjYmZiZmIyZTg0MjlmNmIxMQ==
5
+ data.tar.gz: !binary |-
6
+ MTMxMjdjZTY3OWNkMzQyY2Q4ZjZmNjIyZTEwZGQ4YWVmYjkzNDU0OQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ MjNhOTQ5YmVhM2E1YmI2MWFiZTllMmRhMGQxOGRlZjk2NDkyMTEwOWFjNTc4
10
+ MjM1ZjA1N2JkYTE1YTQ0Y2U4MmU3ODQ4NzViZTc1ZDc3NzE0MTg5NmY0ZmQ0
11
+ MjAyZDBjMzRmNDcwMWNmZjRiYjg0Zjg0N2JlMDFiZWYwOWQ0NDQ=
12
+ data.tar.gz: !binary |-
13
+ ZjY0NzFiY2U2NzIwZWNhNGU3OTk2Y2U1YTEwNjA2ZmE1MDUxMGYzYjE0YjQ4
14
+ YTk0NmVmODU2ZjVlMjI0MGZlODNkOWFhOTFjYmVjOTAxMmJjNzA4NDMxMWYz
15
+ ZmE4ZjE3ZmZiN2JlMTVhNjMyMDA3OWQ5MzY1N2E5M2JhMjdmYTI=
data/Gemfile CHANGED
@@ -7,6 +7,6 @@ source "http://rubygems.org"
7
7
  # Include everything needed to run rake, tests, features, etc.
8
8
  group :development do
9
9
  gem "rdoc", "~> 3.12"
10
- gem "bundler", "~> 1.1.5"
10
+ gem "bundler", "~> 1.1"
11
11
  gem "jeweler", "~> 1.8.4"
12
12
  end
@@ -1,20 +1,39 @@
1
1
  = transformation-client
2
2
 
3
- == Usage ==
3
+ This is a Ruby client library for submitting jobs to the
4
+ Wf4Ever wf-ro transformation service - for details, see
5
+ http://www.wf4ever-project.org/wiki/display/docs/Wf-RO+transformation+service+API
6
+
7
+ == Usage
4
8
  Require the gem
5
9
  require 'wf4ever/transformation-client'
6
10
 
7
11
  To create a job:
8
- uri = Wf4Ever::TransformationClient.create_job(service-uri, resource-uri, format-uri, ro-uri, oauth-token)
12
+ service = "http://example.com/wf-ro/jobs"
13
+ resource = "http://example.net/workflow.t2flow"
14
+ format = "application/vnd.taverna.t2flow+xml"
15
+ ro = "http://example.com/RODL/RO/myResearch/"
16
+ token = "e5e02dd4-9e29-43f0-890c-729d66c46a9b"
17
+
18
+ job_uri = Wf4Ever::TransformationClient.create_job(service, resource, format, ro, token)
19
+
20
+ You can optionally provide a list of additional resources to extract to
21
+ which folders in the RO.
22
+
23
+ extract = { :nested => "http://example.com/RODL/RO/myResearch/folder1" }
24
+ job_uri = Wf4Ever::TransformationClient.create_job(service, resource, format, ro, token, extract)
9
25
 
10
26
  To check the status of a job
11
- status = Wf4Ever::TransformationClient.check_job(uri)["status"]
27
+ status = Wf4Ever::TransformationClient.check_job(job_uri)["status"]
12
28
 
13
29
  To cancel a job
14
- Wf4Ever::TransformationClient.cancel_job(uri)
30
+ Wf4Ever::TransformationClient.cancel_job(job_uri)
31
+
15
32
 
16
33
  == Copyright
17
34
 
18
- Copyright (c) 2012 Finn Bacall. See LICENSE.txt for
19
- further details.
35
+ Copyright (c) 2012-2013 University of Manchester.
36
+
37
+ This software is freely available under the MIT License. See LICENSE.txt
38
+ for further details.
20
39
 
data/Rakefile CHANGED
@@ -15,12 +15,12 @@ require 'jeweler'
15
15
  Jeweler::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
17
  gem.name = "wf4ever-transformation-client"
18
- gem.homepage = "http://github.com/myGrid/transformation-client"
18
+ gem.homepage = "http://github.com/myExperiment/transformation-client"
19
19
  gem.license = "MIT"
20
20
  gem.summary = "Client to interact with Wf4ever's RO Transformation Service"
21
21
  gem.description = "Client to interact with Wf4ever's RO Transformation Service"
22
- gem.email = "finn.bacall@cs.man.ac.uk"
23
- gem.authors = ["Finn Bacall"]
22
+ gem.email = "bugs@myexperiment.org"
23
+ gem.authors = ["Finn Bacall", "Stian Soiland-Reyes"]
24
24
  # dependencies defined in Gemfile
25
25
  end
26
26
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
@@ -5,18 +5,51 @@ module Wf4Ever
5
5
  class TransformationClient
6
6
 
7
7
  ##
8
- # Creates a transformation job and returns its URI.
9
- def self.create_job(uri, resource, format, ro, token)
8
+ # Create a transformation job and returns its URI, which can be
9
+ # used with check_job() and cancel_job()
10
+ #
11
+ # uri -- The URI for the wf-ro service endpoint, e.g.
12
+ # "http://example.com/wf-ro/jobs"
13
+ # resource - The URI for the workflow resource to transform, e.g.
14
+ # "http://www.example.net/workflow.t2flow"
15
+ # format - the media type of the resource, e.g.
16
+ # "application/vnd.taverna.t2flow+xml"
17
+ # ro - the URI for the research object within an RODL service,
18
+ # where the transformed and extracted resources are to be uploaded
19
+ # token - token for authenticating access to the RODL
20
+ # extract -
21
+ # (optional) hash of folders where to extract additional
22
+ # resources. The main workflow is always extracted, but will
23
+ # only be placed into a folder if it is given in the hash. Other
24
+ # resource types are only extracted if listed in the map.
25
+ #
26
+ # The extract keys should be one of:
27
+ # - :main -- transformed workflow
28
+ # - :nested -- nested workflows
29
+ # - :scripts -- embedded scripts (e.g. beanshell, R)
30
+ # - :services -- external services (e.g. WSDL, REST)
31
+ #
32
+ # The extract values are URIs to RODL folders within the RO where to
33
+ # extract the resource. A value using the keyword :ro means to
34
+ # extract the particular resource without aggregating it in any
35
+ # particular folder.
36
+ def self.create_job(uri, resource, format, ro, token, extract={:main=>:ro})
10
37
  uri = URI(uri)
11
38
  job_uri = nil
39
+ ## Replace :ro with the ro URI as per wf-ro REST API
40
+ # We'll do this in a new hash to not modify our incoming hash
41
+ # TODO: Avoid Perl-like syntax below..
42
+ extract = extract.each_with_object({}) { |(k,v), h| h[k] = v==:ro ? ro : v }
43
+
12
44
  Net::HTTP.start(uri.host, uri.port || 80) do |http|
13
45
  body = {
14
46
  "resource" => resource,
15
47
  "format" => format,
16
48
  "ro" => ro,
17
- "token" => token
49
+ "token" => token,
50
+ "extract" => extract
18
51
  }.to_json
19
-
52
+
20
53
  headers = {"content-type" => "application/json"}
21
54
 
22
55
  response = http.post(uri.request_uri, body, headers)
@@ -31,11 +64,14 @@ module Wf4Ever
31
64
  end
32
65
 
33
66
  ##
34
- # Returns a hash containing:
67
+ # Check wf-ro transformation job status.
68
+ #
69
+ # Return a hash containing:
35
70
  # ["resource"] the resource being transformed
36
71
  # ["format"] the content type of the resource
37
72
  # ["ro"] the URI of the RO being created
38
73
  # ["status"] the status of the transformation job
74
+ # ["extract"] the resource type to extract, to which folder
39
75
  def self.check_job(uri)
40
76
  uri = URI(uri)
41
77
  Net::HTTP.start(uri.host, uri.port || 80) do |http|
@@ -52,7 +88,7 @@ module Wf4Ever
52
88
  end
53
89
 
54
90
  ##
55
- # Cancels job and returns true if it succeeds.
91
+ # Cancel wf-ro transformation job and returns true if it succeeds.
56
92
  def self.cancel_job(uri)
57
93
  uri = URI(uri)
58
94
  Net::HTTP.start(uri.host, uri.port || 80) do |http|
@@ -9,8 +9,42 @@ class TestTransformationClient < Test::Unit::TestCase
9
9
  RO = "http://sandbox.wf4ever-project.org/rodl/ROs/FinnsTest/"
10
10
 
11
11
  def test_can_create
12
- uri = Wf4Ever::TransformationClient.create_job(SERVICE_URI, RESOURCE, T2FLOW_FORMAT, RO, OAUTH_TOKEN)
13
- assert_not_nil uri
12
+ @uri = Wf4Ever::TransformationClient.create_job(SERVICE_URI, RESOURCE, T2FLOW_FORMAT, RO, OAUTH_TOKEN)
13
+ assert_not_nil @uri
14
+ status = Wf4Ever::TransformationClient.check_job(@uri)
15
+ #puts status
16
+ assert_equal(RESOURCE, status["resource"])
17
+ assert_equal(T2FLOW_FORMAT, status["format"])
18
+ assert_equal(RO, status["ro"])
19
+ # :ro default should become 'main'
20
+ assert_equal(RO, status["extract"]["main"])
21
+ ## The remaining folders should not be listed
22
+ assert_nil(status["extract"]["nested"])
23
+ assert_nil(status["extract"]["scripts"])
24
+ assert_nil(status["extract"]["services"])
25
+ end
26
+
27
+ def setup
28
+ @uri = nil
29
+ end
30
+
31
+ def teardown
32
+ Wf4Ever::TransformationClient.cancel_job(@uri) if @uri
33
+ end
34
+
35
+ def test_with_extract
36
+ extract = {:nested => RO + "folderNested", :scripts => :ro, :main => RO + "folderMain"}
37
+ @uri = Wf4Ever::TransformationClient.create_job(SERVICE_URI, RESOURCE, T2FLOW_FORMAT, RO, OAUTH_TOKEN, extract)
38
+ assert_not_nil @uri
39
+ status = Wf4Ever::TransformationClient.check_job(@uri)
40
+ # puts status
41
+ assert_equal(RESOURCE, status["resource"])
42
+ assert_equal(T2FLOW_FORMAT, status["format"])
43
+ assert_equal(RO, status["ro"])
44
+ assert_equal(RO + "folderMain", status["extract"]["main"])
45
+ assert_equal(RO + "folderNested", status["extract"]["nested"])
46
+ assert_equal(RO, status["extract"]["scripts"])
47
+ assert_nil(status["extract"]["services"])
14
48
  end
15
49
 
16
50
  end
@@ -2,16 +2,17 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: wf4ever-transformation-client 0.4.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "wf4ever-transformation-client"
8
- s.version = "0.3.1"
9
+ s.version = "0.4.0"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Finn Bacall"]
12
- s.date = "2012-10-05"
12
+ s.authors = ["Finn Bacall", "Stian Soiland-Reyes"]
13
+ s.date = "2013-12-20"
13
14
  s.description = "Client to interact with Wf4ever's RO Transformation Service"
14
- s.email = "finn.bacall@cs.man.ac.uk"
15
+ s.email = "bugs@myexperiment.org"
15
16
  s.extra_rdoc_files = [
16
17
  "LICENSE.txt",
17
18
  "README.rdoc"
@@ -29,27 +30,27 @@ Gem::Specification.new do |s|
29
30
  "test/test_transformation-client.rb",
30
31
  "wf4ever-transformation-client.gemspec"
31
32
  ]
32
- s.homepage = "http://github.com/myGrid/transformation-client"
33
+ s.homepage = "http://github.com/myExperiment/transformation-client"
33
34
  s.licenses = ["MIT"]
34
35
  s.require_paths = ["lib"]
35
- s.rubygems_version = "1.8.10"
36
+ s.rubygems_version = "2.1.11"
36
37
  s.summary = "Client to interact with Wf4ever's RO Transformation Service"
37
38
 
38
39
  if s.respond_to? :specification_version then
39
- s.specification_version = 3
40
+ s.specification_version = 4
40
41
 
41
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
43
  s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
43
- s.add_development_dependency(%q<bundler>, ["~> 1.1.5"])
44
+ s.add_development_dependency(%q<bundler>, ["~> 1.1"])
44
45
  s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
45
46
  else
46
47
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
47
- s.add_dependency(%q<bundler>, ["~> 1.1.5"])
48
+ s.add_dependency(%q<bundler>, ["~> 1.1"])
48
49
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
49
50
  end
50
51
  else
51
52
  s.add_dependency(%q<rdoc>, ["~> 3.12"])
52
- s.add_dependency(%q<bundler>, ["~> 1.1.5"])
53
+ s.add_dependency(%q<bundler>, ["~> 1.1"])
53
54
  s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
54
55
  end
55
56
  end
metadata CHANGED
@@ -1,51 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wf4ever-transformation-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Finn Bacall
8
+ - Stian Soiland-Reyes
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-05 00:00:00.000000000 Z
12
+ date: 2013-12-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
16
- requirement: &19580800 !ruby/object:Gem::Requirement
17
- none: false
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  requirements:
19
18
  - - ~>
20
19
  - !ruby/object:Gem::Version
21
20
  version: '3.12'
22
21
  type: :development
23
22
  prerelease: false
24
- version_requirements: *19580800
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ version: '3.12'
25
28
  - !ruby/object:Gem::Dependency
26
29
  name: bundler
27
- requirement: &19580280 !ruby/object:Gem::Requirement
28
- none: false
30
+ requirement: !ruby/object:Gem::Requirement
29
31
  requirements:
30
32
  - - ~>
31
33
  - !ruby/object:Gem::Version
32
- version: 1.1.5
34
+ version: '1.1'
33
35
  type: :development
34
36
  prerelease: false
35
- version_requirements: *19580280
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ~>
40
+ - !ruby/object:Gem::Version
41
+ version: '1.1'
36
42
  - !ruby/object:Gem::Dependency
37
43
  name: jeweler
38
- requirement: &19579740 !ruby/object:Gem::Requirement
39
- none: false
44
+ requirement: !ruby/object:Gem::Requirement
40
45
  requirements:
41
46
  - - ~>
42
47
  - !ruby/object:Gem::Version
43
48
  version: 1.8.4
44
49
  type: :development
45
50
  prerelease: false
46
- version_requirements: *19579740
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 1.8.4
47
56
  description: Client to interact with Wf4ever's RO Transformation Service
48
- email: finn.bacall@cs.man.ac.uk
57
+ email: bugs@myexperiment.org
49
58
  executables: []
50
59
  extensions: []
51
60
  extra_rdoc_files:
@@ -63,32 +72,28 @@ files:
63
72
  - test/helper.rb
64
73
  - test/test_transformation-client.rb
65
74
  - wf4ever-transformation-client.gemspec
66
- homepage: http://github.com/myGrid/transformation-client
75
+ homepage: http://github.com/myExperiment/transformation-client
67
76
  licenses:
68
77
  - MIT
78
+ metadata: {}
69
79
  post_install_message:
70
80
  rdoc_options: []
71
81
  require_paths:
72
82
  - lib
73
83
  required_ruby_version: !ruby/object:Gem::Requirement
74
- none: false
75
84
  requirements:
76
85
  - - ! '>='
77
86
  - !ruby/object:Gem::Version
78
87
  version: '0'
79
- segments:
80
- - 0
81
- hash: 4569034392740922883
82
88
  required_rubygems_version: !ruby/object:Gem::Requirement
83
- none: false
84
89
  requirements:
85
90
  - - ! '>='
86
91
  - !ruby/object:Gem::Version
87
92
  version: '0'
88
93
  requirements: []
89
94
  rubyforge_project:
90
- rubygems_version: 1.8.10
95
+ rubygems_version: 2.1.11
91
96
  signing_key:
92
- specification_version: 3
97
+ specification_version: 4
93
98
  summary: Client to interact with Wf4ever's RO Transformation Service
94
99
  test_files: []