myerp_api 0.1.1 → 0.1.2
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 +4 -4
- data/.travis.yml +6 -0
- data/README.md +1 -8
- data/VERSION +1 -1
- data/lib/myerp/api/base.rb +0 -6
- data/lib/myerp/crud.rb +3 -14
- data/lib/myerp/errors.rb +1 -4
- data/myerp_api.gemspec +11 -5
- data/spec/myerp/base_spec.rb +10 -0
- data/spec/myerp/credentials_spec.rb +40 -0
- data/spec/spec_helper.rb +30 -0
- data/spec/test_rubies +5 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db3fe364b6b4f2cb6126bf526411469834f83408
|
|
4
|
+
data.tar.gz: 4145410f302514a5bd945e51e9ad55e0e698dc66
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e1294d6dd8eb4e1231e55ac369bd29a63475874ec7b10920bee917fd2d68d762d6b5fe54ab30be81cc32c176cdfb88664e31d0da6528b8a0dc413344045be06a
|
|
7
|
+
data.tar.gz: 289d6fe688717161dda9c289ee16d4fa198225306ae1ace493db33b240ad0d2dcc2de0b17eecf3523f58885ec9d9a8619feef6d477387dfc0863164609ce8be2
|
data/.travis.yml
ADDED
data/README.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# myERP API
|
|
2
2
|
|
|
3
|
+
[](https://travis-ci.org/myERP/myerp-ruby-api-client)
|
|
3
4
|
|
|
4
5
|
The myERP API gem allows Ruby developers to programmatically access the data of myERP accounts.
|
|
5
6
|
|
|
@@ -52,14 +53,6 @@ puts "#{customer.full_name} updated [id=#{customer.id}]"
|
|
|
52
53
|
# Delete a customer
|
|
53
54
|
customer = client.customers.delete(customer)
|
|
54
55
|
puts "#{customer.full_name} deleted [id=#{customer.id}]"
|
|
55
|
-
|
|
56
|
-
# Bulk creation/modification
|
|
57
|
-
customers = client.customers.bulkSave([customer, customer2])
|
|
58
|
-
puts customers
|
|
59
|
-
|
|
60
|
-
# Bulk deletion
|
|
61
|
-
customers = client.customers.delete([customer, customer2])
|
|
62
|
-
puts customers
|
|
63
56
|
```
|
|
64
57
|
|
|
65
58
|
## Contributing
|
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.2
|
data/lib/myerp/api/base.rb
CHANGED
|
@@ -46,18 +46,12 @@ module MyERP
|
|
|
46
46
|
raise MyERP::AuthenticationFailed.new(response, params)
|
|
47
47
|
when 404
|
|
48
48
|
raise MyERP::NotFound.new(response, params)
|
|
49
|
-
when 409
|
|
50
|
-
raise MyERP::Conflict.new(response, params)
|
|
51
|
-
when 412
|
|
52
|
-
raise MyERP::MissingField.new(response, params)
|
|
53
49
|
when 422
|
|
54
50
|
raise MyERP::UnprocessableEntity.new(response, params)
|
|
55
51
|
when 429
|
|
56
52
|
raise MyERP::RateLimited.new(response, params)
|
|
57
53
|
when 500
|
|
58
54
|
raise MyERP::ServerError.new(response, params)
|
|
59
|
-
when 502
|
|
60
|
-
raise MyERP::Unavailable.new(response, params)
|
|
61
55
|
else
|
|
62
56
|
raise MyERP::HTTPError.new(response, params)
|
|
63
57
|
end
|
data/lib/myerp/crud.rb
CHANGED
|
@@ -32,21 +32,10 @@ module MyERP
|
|
|
32
32
|
api_model.parse(resp.parsed_response).first
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def bulkSave(models)
|
|
36
|
-
raise "array required" unless models.is_a?(Array)
|
|
37
|
-
resp = request(:put, credentials, "#{api_model.api_path}", :body => models.to_json)
|
|
38
|
-
api_model.parse(resp.parsed_response)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
35
|
def delete(model)
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
else
|
|
46
|
-
raise "model unsaved" unless !model.new?
|
|
47
|
-
resp = request(:delete, credentials, "#{api_model.api_path}/#{model.to_i}")
|
|
48
|
-
api_model.parse(resp.parsed_response).first
|
|
49
|
-
end
|
|
36
|
+
raise "model unsaved" unless !model.new?
|
|
37
|
+
resp = request(:delete, credentials, "#{api_model.api_path}/#{model.to_i}")
|
|
38
|
+
api_model.parse(resp.parsed_response).first
|
|
50
39
|
end
|
|
51
40
|
end
|
|
52
41
|
end
|
data/lib/myerp/errors.rb
CHANGED
|
@@ -18,11 +18,8 @@ module MyERP
|
|
|
18
18
|
|
|
19
19
|
class RateLimited < HTTPError; end
|
|
20
20
|
class NotFound < HTTPError; end
|
|
21
|
-
class Unavailable < HTTPError; end
|
|
22
21
|
class BadRequest < HTTPError; end
|
|
23
22
|
class ServerError < HTTPError; end
|
|
24
23
|
class AuthenticationFailed < HTTPError ; end
|
|
25
|
-
class UnprocessableEntity < HTTPError; end
|
|
26
|
-
class MissingField < HTTPError; end
|
|
27
|
-
class Conflict < HTTPError; end
|
|
24
|
+
class UnprocessableEntity < HTTPError; end
|
|
28
25
|
end
|
data/myerp_api.gemspec
CHANGED
|
@@ -2,20 +2,23 @@
|
|
|
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: myerp_api 0.1.2 ruby lib
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |s|
|
|
7
8
|
s.name = "myerp_api"
|
|
8
|
-
s.version = "0.1.
|
|
9
|
+
s.version = "0.1.2"
|
|
9
10
|
|
|
10
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
+
s.require_paths = ["lib"]
|
|
11
13
|
s.authors = ["Didier Baquier"]
|
|
12
|
-
s.date = "2014-03-
|
|
14
|
+
s.date = "2014-03-12"
|
|
13
15
|
s.description = "The myERP API gem is a lightweight gem for accessing the myERP REST web services"
|
|
14
16
|
s.email = "didier.baquier@myerp.com"
|
|
15
17
|
s.extra_rdoc_files = [
|
|
16
18
|
"README.md"
|
|
17
19
|
]
|
|
18
20
|
s.files = [
|
|
21
|
+
".travis.yml",
|
|
19
22
|
"Gemfile",
|
|
20
23
|
"README.md",
|
|
21
24
|
"Rakefile",
|
|
@@ -49,12 +52,15 @@ Gem::Specification.new do |s|
|
|
|
49
52
|
"lib/myerp/sales_order.rb",
|
|
50
53
|
"lib/myerp/transaction.rb",
|
|
51
54
|
"lib/myerp_api.rb",
|
|
52
|
-
"myerp_api.gemspec"
|
|
55
|
+
"myerp_api.gemspec",
|
|
56
|
+
"spec/myerp/base_spec.rb",
|
|
57
|
+
"spec/myerp/credentials_spec.rb",
|
|
58
|
+
"spec/spec_helper.rb",
|
|
59
|
+
"spec/test_rubies"
|
|
53
60
|
]
|
|
54
61
|
s.homepage = "http://www.myerp.com"
|
|
55
62
|
s.licenses = ["MIT"]
|
|
56
|
-
s.
|
|
57
|
-
s.rubygems_version = "2.0.3"
|
|
63
|
+
s.rubygems_version = "2.2.2"
|
|
58
64
|
s.summary = "The myERP API gem is a lightweight gem for accessing the myERP REST web services"
|
|
59
65
|
|
|
60
66
|
if s.respond_to? :specification_version then
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MyERP::Base do
|
|
4
|
+
describe "email/key errors" do
|
|
5
|
+
it "should raise error if missing a credential" do
|
|
6
|
+
lambda { MyERP::Base.new(nil, "key") }.should raise_error(MyERP::InvalidCredentials)
|
|
7
|
+
lambda { MyERP::Base.new("email", nil) }.should raise_error(MyERP::InvalidCredentials)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe MyERP::Credentials do
|
|
4
|
+
describe "#valid?" do
|
|
5
|
+
it "should return true if email, key, and options is filled out" do
|
|
6
|
+
MyERP::Credentials.new("email", "key", {}).should be_valid
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should return false if either email, key, and options is nil" do
|
|
10
|
+
MyERP::Credentials.new("email", "key", nil).should_not be_valid
|
|
11
|
+
MyERP::Credentials.new("email", nil, {}).should_not be_valid
|
|
12
|
+
MyERP::Credentials.new(nil, "key", {}).should_not be_valid
|
|
13
|
+
MyERP::Credentials.new(nil, nil, nil).should_not be_valid
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
describe "#basic_auth" do
|
|
18
|
+
it "should base64 encode the credentials" do
|
|
19
|
+
MyERP::Credentials.new("email", "key", {}).basic_auth.should == "ZW1haWw6a2V5"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
describe "#host" do
|
|
24
|
+
it "should not display the port if it's http/80 or https/443" do
|
|
25
|
+
MyERP::Credentials.new("email", "key", {:protocol => 'https', :host => 'app.myerp.com', :port => 443, :prefix => '/api/v1'})
|
|
26
|
+
.host.should == "https://app.myerp.com/api/v1"
|
|
27
|
+
|
|
28
|
+
MyERP::Credentials.new("email", "key", {:protocol => 'http', :host => 'app.myerp.com', :port => 80, :prefix => '/api/v1'})
|
|
29
|
+
.host.should == "http://app.myerp.com/api/v1"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "should display the port if it's http/!=80 or https/!=443" do
|
|
33
|
+
MyERP::Credentials.new("email", "key", {:protocol => 'https', :host => 'app.myerp.com', :port => 4433, :prefix => '/api/v1'})
|
|
34
|
+
.host.should == "https://app.myerp.com:4433/api/v1"
|
|
35
|
+
|
|
36
|
+
MyERP::Credentials.new("email", "key", {:protocol => 'http', :host => 'app.myerp.com', :port => 8080, :prefix => '/api/v1'})
|
|
37
|
+
.host.should == "http://app.myerp.com:8080/api/v1"
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'myerp_api'
|
|
2
|
+
require 'webmock/rspec'
|
|
3
|
+
require 'vcr'
|
|
4
|
+
require 'factory_girl'
|
|
5
|
+
|
|
6
|
+
VCR.configure do |c|
|
|
7
|
+
c.cassette_library_dir = '.cassettes'
|
|
8
|
+
c.hook_into :webmock
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
FileUtils.rm(Dir["#{VCR.configuration.cassette_library_dir}/*"]) if ENV['VCR_REFRESH'] == 'true'
|
|
12
|
+
|
|
13
|
+
FactoryGirl.find_definitions
|
|
14
|
+
|
|
15
|
+
RSpec.configure do |config|
|
|
16
|
+
|
|
17
|
+
config.before(:suite) do
|
|
18
|
+
WebMock.allow_net_connect!
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
config.before(:each) do
|
|
22
|
+
WebMock.allow_net_connect!
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def cassette(*args)
|
|
26
|
+
VCR.use_cassette(*args) do
|
|
27
|
+
yield
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
data/spec/test_rubies
ADDED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: myerp_api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Didier Baquier
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-03-
|
|
11
|
+
date: 2014-03-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: httparty
|
|
@@ -186,6 +186,7 @@ extensions: []
|
|
|
186
186
|
extra_rdoc_files:
|
|
187
187
|
- README.md
|
|
188
188
|
files:
|
|
189
|
+
- ".travis.yml"
|
|
189
190
|
- Gemfile
|
|
190
191
|
- README.md
|
|
191
192
|
- Rakefile
|
|
@@ -220,6 +221,10 @@ files:
|
|
|
220
221
|
- lib/myerp/transaction.rb
|
|
221
222
|
- lib/myerp_api.rb
|
|
222
223
|
- myerp_api.gemspec
|
|
224
|
+
- spec/myerp/base_spec.rb
|
|
225
|
+
- spec/myerp/credentials_spec.rb
|
|
226
|
+
- spec/spec_helper.rb
|
|
227
|
+
- spec/test_rubies
|
|
223
228
|
homepage: http://www.myerp.com
|
|
224
229
|
licenses:
|
|
225
230
|
- MIT
|