myob-api 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -18,6 +18,33 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
+ ### OAuth Authentication
22
+
23
+ If you've already got an OAuth access token, feel free to skip to API Client Setup.
24
+
25
+ The MYOB API uses 3 legged OAuth2. If you don't want to roll your own, or use the [OmniAuth strategy](https://github.com/davidlumley/omniauth-myob) you can authenticate using the `get_access_code_url` and `get_access_token` methods that [ghiculescu](https://github.com/ghiculescu) has provided like so:
26
+
27
+ class MYOBSessionController
28
+ def new
29
+ redirect_to myob_client.get_access_code_url
30
+ end
31
+
32
+ def create
33
+ @token = myob_client.get_access_token(params[:code])
34
+ @company_files = myob_client.company_file.all
35
+ # then show the user a view where they can log in to their company file
36
+ end
37
+
38
+ def myob_client
39
+ @api_client = Myob::Api::Client.new({
40
+ :consumer => {
41
+ :key => YOUR_CONSUMER_KEY,
42
+ :secret => YOUR_CONSUMER_SECRET,
43
+ },
44
+ })
45
+ end
46
+ end
47
+
21
48
  ### API Client Setup
22
49
 
23
50
  Create an api_client:
@@ -30,6 +57,17 @@ Create an api_client:
30
57
  :access_token => YOUR_OAUTH_ACCESS_TOKEN,
31
58
  })
32
59
 
60
+ If you have a refresh token (the Myob API returns one by default) you can use that too:
61
+
62
+ api_client = Myob::Api::Client.new({
63
+ :consumer => {
64
+ :key => YOUR_CONSUMER_KEY,
65
+ :secret => YOUR_CONSUMER_SECRET,
66
+ },
67
+ :access_token => YOUR_OAUTH_ACCESS_TOKEN,
68
+ :refresh_token => YOUR_OAUTH_REFRESH_TOKEN,
69
+ })
70
+
33
71
  Or if you know which Company File you want to access too:
34
72
 
35
73
  api_client = Myob::Api::Client.new({
@@ -37,8 +75,9 @@ Or if you know which Company File you want to access too:
37
75
  :key => YOUR_CONSUMER_KEY,
38
76
  :secret => YOUR_CONSUMER_SECRET,
39
77
  },
40
- :access_token => YOUR_OAUTH_ACCESS_TOKEN,
41
- :company_file => {
78
+ :access_token => YOUR_OAUTH_ACCESS_TOKEN,
79
+ :refresh_token => YOUR_OAUTH_REFRESH_TOKEN,
80
+ :company_file => {
42
81
  :name => COMPANY_FILE_NAME,
43
82
  :username => COMPANY_FILE_USERNAME,
44
83
  :password => COMPANY_FILE_PASSWORD,
@@ -75,6 +114,12 @@ Return a list of all customers (a subset of contacts)
75
114
 
76
115
  api_client.customer.all
77
116
 
117
+ #### Employees
118
+
119
+ Return a list of all customers (a subset of contacts)
120
+
121
+ api_client.employee.all
122
+
78
123
 
79
124
  ## Todo
80
125
 
@@ -6,5 +6,6 @@ require 'myob/api/models/base'
6
6
  require 'myob/api/models/company_file'
7
7
  require 'myob/api/models/contact'
8
8
  require 'myob/api/models/customer'
9
+ require 'myob/api/models/employee'
9
10
 
10
11
  require 'myob/api/client'
@@ -12,11 +12,13 @@ module Myob
12
12
  model :CompanyFile
13
13
  model :Contact
14
14
  model :Customer
15
+ model :Employee
15
16
 
17
+ @redirect_uri = options[:redirect_uri]
16
18
  @consumer = options[:consumer]
17
19
  @access_token = options[:access_token]
18
20
  @refresh_token = options[:refresh_token]
19
- @current_company_file = {}
21
+ @current_company_file = options[:selected_company_file] || {}
20
22
  @client = OAuth2::Client.new(@consumer[:key], @consumer[:secret], {
21
23
  :site => 'https://secure.myob.com',
22
24
  :authorize_url => '/oauth2/account/authorize',
@@ -28,6 +30,18 @@ module Myob
28
30
  end
29
31
  end
30
32
 
33
+ def get_access_code_url(params = {})
34
+ @client.auth_code.authorize_url(params.merge(scope: 'CompanyFile', redirect_uri: @redirect_uri))
35
+ end
36
+
37
+ def get_access_token(access_code)
38
+ @token = @client.auth_code.get_token(access_code, redirect_uri: @redirect_uri)
39
+ @access_token = @token.token
40
+ @expires_at = @token.expires_at
41
+ @refresh_token = @token.refresh_token
42
+ @token
43
+ end
44
+
31
45
  def headers
32
46
  {
33
47
  'x-myobapi-key' => @consumer[:key],
@@ -0,0 +1,11 @@
1
+ module Myob
2
+ module Api
3
+ module Model
4
+ class Employee < Myob::Api::Model::Base
5
+ def model_route
6
+ 'Contact/Employee'
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,5 +1,5 @@
1
1
  module Myob
2
2
  module Api
3
- VERSION = "0.0.4"
3
+ VERSION = "0.0.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: myob-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-11-14 00:00:00.000000000 Z
12
+ date: 2013-11-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: oauth2
@@ -78,6 +78,7 @@ files:
78
78
  - lib/myob/api/models/company_file.rb
79
79
  - lib/myob/api/models/contact.rb
80
80
  - lib/myob/api/models/customer.rb
81
+ - lib/myob/api/models/employee.rb
81
82
  - lib/myob/api/version.rb
82
83
  - myob-api.gemspec
83
84
  homepage: https://github.com/davidlumley/myob-api
@@ -95,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
95
96
  version: '0'
96
97
  segments:
97
98
  - 0
98
- hash: 4098228060394924892
99
+ hash: 593053203672766037
99
100
  required_rubygems_version: !ruby/object:Gem::Requirement
100
101
  none: false
101
102
  requirements:
@@ -104,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
104
105
  version: '0'
105
106
  segments:
106
107
  - 0
107
- hash: 4098228060394924892
108
+ hash: 593053203672766037
108
109
  requirements: []
109
110
  rubyforge_project:
110
111
  rubygems_version: 1.8.23