myob-api 0.0.4 → 0.0.5

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/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