mortar-api-ruby 0.3.0 → 0.3.1

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