mortar-api-ruby 0.3.0 → 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/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mortar-api-ruby (0.1.0)
4
+ mortar-api-ruby (0.3.1)
5
5
  excon (~> 0.15.4)
6
6
 
7
7
  GEM
8
8
  remote: http://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.1.3)
11
- excon (0.15.4)
11
+ excon (0.15.5)
12
12
  gem-release (0.4.1)
13
13
  rake (0.9.2.2)
14
14
  rr (1.0.4)
data/README.md CHANGED
@@ -0,0 +1,11 @@
1
+ # Mortar API Client for Ruby
2
+
3
+ The Mortar API Client for Ruby is a Ruby wrapper to call methods in the Mortar API v2.
4
+
5
+ ## Tests
6
+
7
+ To run the RSpec tests, use rake:
8
+
9
+ rake spec
10
+
11
+
@@ -0,0 +1,55 @@
1
+ #
2
+ # Copyright 2012 Mortar Data Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require 'set'
18
+
19
+ module Mortar
20
+ class API
21
+ module Fixtures
22
+ STATUS_GATEWAY_STARTING = 'GATEWAY_STARTING'
23
+ STATUS_PENDING = 'PENDING'
24
+ STATUS_CREATING = 'CREATING'
25
+ STATUS_SAVING = 'SAVING'
26
+ STATUS_CREATED = 'CREATED'
27
+ STATUS_FAILED = 'FAILED'
28
+
29
+ STATUSES_COMPLETE = Set.new([STATUS_CREATED,
30
+ STATUS_FAILED])
31
+ end
32
+
33
+ # GET /vX/fixtures/:fixture
34
+ def get_fixture(fixture_id)
35
+ request(
36
+ :expects => 200,
37
+ :method => :get,
38
+ :path => versioned_path("/fixtures/#{fixture_id}")
39
+ )
40
+ end
41
+
42
+ # POST /vX/fixtures
43
+ def post_fixture_limit(project_name, fixture_name, input_url, num_rows)
44
+ request(
45
+ :expects => 200,
46
+ :method => :post,
47
+ :path => versioned_path("/fixtures"),
48
+ :body => json_encode({"fixture_name" => fixture_name,
49
+ "project_name" => project_name,
50
+ "s3_url" => input_url,
51
+ "num_rows" => num_rows})
52
+ )
53
+ end
54
+ end
55
+ end
@@ -55,7 +55,7 @@ module Mortar
55
55
  end
56
56
 
57
57
  # POST /vX/illustrates
58
- def post_illustrate(project_name, pigscript, pigscript_alias, git_ref, options = {})
58
+ def post_illustrate(project_name, pigscript, pigscript_alias, skip_pruning, git_ref, options = {})
59
59
  parameters = options[:parameters] || {}
60
60
  request(
61
61
  :expects => 200,
@@ -64,6 +64,7 @@ module Mortar
64
64
  :body => json_encode({"project_name" => project_name,
65
65
  "pigscript_name" => pigscript,
66
66
  "alias" => pigscript_alias,
67
+ "skip_pruning" => skip_pruning,
67
68
  "git_ref" => git_ref,
68
69
  "parameters" => parameters
69
70
  })
@@ -18,7 +18,7 @@ module Mortar
18
18
  class API
19
19
  # client version
20
20
  # see http://semver.org/
21
- VERSION = "0.3.0"
21
+ VERSION = "0.3.1"
22
22
 
23
23
  SERVER_API_VERSION = "2"
24
24
  end
data/lib/mortar/api.rb CHANGED
@@ -34,8 +34,8 @@ require "mortar/api/vendor/okjson"
34
34
  require "mortar/api/basicauth"
35
35
  require "mortar/api/errors"
36
36
  require "mortar/api/version"
37
-
38
37
  require "mortar/api/clusters"
38
+ require "mortar/api/fixtures"
39
39
  require "mortar/api/illustrate"
40
40
  require "mortar/api/describe"
41
41
  require "mortar/api/validate"
@@ -0,0 +1,79 @@
1
+ #
2
+ # Copyright 2012 Mortar Data Inc.
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ #
16
+
17
+ require "base64"
18
+ require "spec_helper"
19
+ require "mortar/api"
20
+
21
+
22
+ describe Mortar::API do
23
+
24
+ before(:each) do
25
+ @api = Mortar::API.new
26
+ end
27
+
28
+ after(:each) do
29
+ Excon.stubs.clear
30
+ end
31
+
32
+ context "fixtures" do
33
+
34
+ it "gets a fixture" do
35
+ account_id = "123456780aaaaaa123456780aaaaaabb"
36
+ project_name = "MyProject"
37
+ project_id = "aaaaasssss"
38
+ fixture_id = "12345123412abcd12345123412abcdef"
39
+ fixture = {'name' => "Some fixture",
40
+ 'fixture_id' => fixture_id,
41
+ 'account_id' => account_id,
42
+ 'project_id' => project_id,
43
+ 'status_code' => Mortar::API::Fixtures::STATUS_CREATED,
44
+ 'status_description' => "Some Status Description",
45
+ 'sample_s3_urls' => [ {'url' => "https://some_url_1",
46
+ 'name' => "url1"},
47
+ {'url' => "https://some_url_2",
48
+ 'name' => "url2"}]
49
+ }
50
+ Excon.stub({:method => :get, :path => "/v2/fixtures/#{fixture_id}"}) do |params|
51
+ {:body => Mortar::API::OkJson.encode(fixture),
52
+ :status => 200}
53
+ end
54
+ response = @api.get_fixture(fixture_id)
55
+ response.body['name'].should == fixture['name']
56
+ response.body['status'].should == fixture['status']
57
+ response.body['sample_s3_urls'].count.should == 2
58
+ end
59
+
60
+ it "posts a limit fixture" do
61
+ fixture_name = "some_fixture"
62
+ s3_url = "some_s3_url"
63
+ num_rows = 100
64
+ project_name = "ProjectName"
65
+ fixture_id = "12345123412abcd12345123412abcdef"
66
+
67
+ body = Mortar::API::OkJson.encode({"fixture_name" => fixture_name,
68
+ "project_name" => project_name,
69
+ "s3_url" => s3_url,
70
+ "num_rows" => num_rows})
71
+ Excon.stub({:method => :post, :path => "/v2/fixtures", :body => body}) do |params|
72
+ {:body => Mortar::API::OkJson.encode({"fixture_id" => fixture_id}), :status => 200}
73
+ end
74
+ response = @api.post_fixture_limit(project_name, fixture_name, s3_url, num_rows)
75
+ response.body['fixture_id'].should == fixture_id
76
+ end
77
+
78
+ end
79
+ end
@@ -35,17 +35,19 @@ describe Mortar::API do
35
35
  project_name = "my_project"
36
36
  pigscript_name = "my_pigscript"
37
37
  pigscript_alias = "my_alias"
38
+ skip_pruning = false
38
39
  git_ref = "e20395b8b06fbf52e86665b0660209673f311d1a"
39
40
  parameters = {"key" => "value"}
40
41
  body = Mortar::API::OkJson.encode({"project_name" => project_name,
41
42
  "pigscript_name" => pigscript_name,
42
43
  "alias" => pigscript_alias,
44
+ "skip_pruning" => skip_pruning,
43
45
  "git_ref" => git_ref,
44
46
  "parameters" => parameters})
45
47
  Excon.stub({:method => :post, :path => "/v2/illustrates", :body => body}) do |params|
46
48
  {:body => Mortar::API::OkJson.encode({'illustrate_id' => illustrate_id}), :status => 200}
47
49
  end
48
- response = @api.post_illustrate(project_name, pigscript_name, pigscript_alias, git_ref, :parameters => parameters)
50
+ response = @api.post_illustrate(project_name, pigscript_name, pigscript_alias, skip_pruning, git_ref, :parameters => parameters)
49
51
  response.body['illustrate_id'].should == illustrate_id
50
52
  end
51
53
 
metadata CHANGED
@@ -1,103 +1,102 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mortar-api-ruby
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.1
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 3
9
- - 0
10
- version: 0.3.0
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Mortar Data
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2012-09-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-10-25 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: excon
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
18
+ requirements:
26
19
  - - ~>
27
- - !ruby/object:Gem::Version
28
- hash: 43
29
- segments:
30
- - 0
31
- - 15
32
- - 4
20
+ - !ruby/object:Gem::Version
33
21
  version: 0.15.4
34
22
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: gem-release
38
23
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: !ruby/object:Gem::Requirement
40
25
  none: false
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
- version: "0"
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 0.15.4
30
+ - !ruby/object:Gem::Dependency
31
+ name: gem-release
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
48
38
  type: :development
49
- version_requirements: *id002
50
- - !ruby/object:Gem::Dependency
51
- name: rake
52
39
  prerelease: false
53
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
54
49
  none: false
55
- requirements:
56
- - - ">="
57
- - !ruby/object:Gem::Version
58
- hash: 3
59
- segments:
60
- - 0
61
- version: "0"
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
62
54
  type: :development
63
- version_requirements: *id003
64
- - !ruby/object:Gem::Dependency
65
- name: rr
66
55
  prerelease: false
67
- requirement: &id004 !ruby/object:Gem::Requirement
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: rr
64
+ requirement: !ruby/object:Gem::Requirement
68
65
  none: false
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- hash: 3
73
- segments:
74
- - 0
75
- version: "0"
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
76
70
  type: :development
77
- version_requirements: *id004
78
- - !ruby/object:Gem::Dependency
79
- name: rspec
80
71
  prerelease: false
81
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
82
73
  none: false
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- hash: 3
87
- segments:
88
- - 0
89
- version: "0"
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
90
86
  type: :development
91
- version_requirements: *id005
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
92
94
  description: Client for Mortar API.
93
95
  email: support@mortardata.com
94
96
  executables: []
95
-
96
97
  extensions: []
97
-
98
98
  extra_rdoc_files: []
99
-
100
- files:
99
+ files:
101
100
  - .gitignore
102
101
  - .rvmrc
103
102
  - Gemfile
@@ -112,6 +111,7 @@ files:
112
111
  - lib/mortar/api/clusters.rb
113
112
  - lib/mortar/api/describe.rb
114
113
  - lib/mortar/api/errors.rb
114
+ - lib/mortar/api/fixtures.rb
115
115
  - lib/mortar/api/illustrate.rb
116
116
  - lib/mortar/api/jobs.rb
117
117
  - lib/mortar/api/login.rb
@@ -125,6 +125,7 @@ files:
125
125
  - spec/mortar/api/basicauth_spec.rb
126
126
  - spec/mortar/api/clusters_spec.rb
127
127
  - spec/mortar/api/describe_spec.rb
128
+ - spec/mortar/api/fixtures_spec.rb
128
129
  - spec/mortar/api/illustrate_spec.rb
129
130
  - spec/mortar/api/jobs_spec.rb
130
131
  - spec/mortar/api/login_spec.rb
@@ -137,43 +138,33 @@ files:
137
138
  - spec/spec_helper.rb
138
139
  homepage: http://mortardata.com/
139
140
  licenses: []
140
-
141
141
  post_install_message:
142
142
  rdoc_options: []
143
-
144
- require_paths:
143
+ require_paths:
145
144
  - lib
146
- required_ruby_version: !ruby/object:Gem::Requirement
145
+ required_ruby_version: !ruby/object:Gem::Requirement
147
146
  none: false
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- hash: 57
152
- segments:
153
- - 1
154
- - 8
155
- - 7
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
156
150
  version: 1.8.7
157
- required_rubygems_version: !ruby/object:Gem::Requirement
151
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
152
  none: false
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- hash: 3
163
- segments:
164
- - 0
165
- version: "0"
153
+ requirements:
154
+ - - ! '>='
155
+ - !ruby/object:Gem::Version
156
+ version: '0'
166
157
  requirements: []
167
-
168
158
  rubyforge_project:
169
159
  rubygems_version: 1.8.24
170
160
  signing_key:
171
161
  specification_version: 3
172
162
  summary: Client for Mortar API
173
- test_files:
163
+ test_files:
174
164
  - spec/mortar/api/basicauth_spec.rb
175
165
  - spec/mortar/api/clusters_spec.rb
176
166
  - spec/mortar/api/describe_spec.rb
167
+ - spec/mortar/api/fixtures_spec.rb
177
168
  - spec/mortar/api/illustrate_spec.rb
178
169
  - spec/mortar/api/jobs_spec.rb
179
170
  - spec/mortar/api/login_spec.rb