etsy 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +8 -0
  3. data/Gemfile +10 -0
  4. data/README.md +300 -0
  5. data/Rakefile +2 -30
  6. data/etsy.gemspec +36 -0
  7. data/lib/etsy.rb +46 -17
  8. data/lib/etsy/address.rb +47 -0
  9. data/lib/etsy/basic_client.rb +1 -1
  10. data/lib/etsy/category.rb +84 -0
  11. data/lib/etsy/country.rb +27 -0
  12. data/lib/etsy/image.rb +7 -3
  13. data/lib/etsy/listing.rb +107 -8
  14. data/lib/etsy/model.rb +99 -3
  15. data/lib/etsy/payment_template.rb +33 -0
  16. data/lib/etsy/profile.rb +49 -0
  17. data/lib/etsy/request.rb +85 -17
  18. data/lib/etsy/response.rb +80 -4
  19. data/lib/etsy/section.rb +16 -0
  20. data/lib/etsy/secure_client.rb +49 -4
  21. data/lib/etsy/shipping_template.rb +32 -0
  22. data/lib/etsy/shop.rb +21 -12
  23. data/lib/etsy/transaction.rb +18 -0
  24. data/lib/etsy/user.rb +45 -13
  25. data/lib/etsy/verification_request.rb +2 -2
  26. data/test/fixtures/address/getUserAddresses.json +12 -0
  27. data/test/fixtures/category/findAllSubCategoryChildren.json +78 -0
  28. data/test/fixtures/category/findAllTopCategory.json +347 -0
  29. data/test/fixtures/category/findAllTopCategory.single.json +18 -0
  30. data/test/fixtures/category/findAllTopCategoryChildren.json +308 -0
  31. data/test/fixtures/category/getCategory.multiple.json +28 -0
  32. data/test/fixtures/category/getCategory.single.json +18 -0
  33. data/test/fixtures/country/getCountry.json +1 -0
  34. data/test/fixtures/listing/findAllListingActive.category.json +827 -0
  35. data/test/fixtures/listing/{findAllShopListingsActive.json → findAllShopListings.json} +0 -0
  36. data/test/fixtures/listing/getListing.multiple.json +1 -0
  37. data/test/fixtures/listing/getListing.single.json +1 -0
  38. data/test/fixtures/payment_template/getPaymentTemplate.json +1 -0
  39. data/test/fixtures/profile/new.json +28 -0
  40. data/test/fixtures/section/getShopSection.json +18 -0
  41. data/test/fixtures/shipping_template/getShippingTemplate.json +1 -0
  42. data/test/fixtures/shop/getShop.single.json +4 -3
  43. data/test/fixtures/transaction/findAllShopTransactions.json +1 -0
  44. data/test/fixtures/user/getUser.single.withProfile.json +38 -0
  45. data/test/fixtures/user/getUser.single.withShops.json +41 -0
  46. data/test/test_helper.rb +9 -4
  47. data/test/unit/etsy/address_test.rb +61 -0
  48. data/test/unit/etsy/category_test.rb +106 -0
  49. data/test/unit/etsy/country_test.rb +64 -0
  50. data/test/unit/etsy/listing_test.rb +112 -5
  51. data/test/unit/etsy/model_test.rb +64 -0
  52. data/test/unit/etsy/payment_template_test.rb +68 -0
  53. data/test/unit/etsy/profile_test.rb +111 -0
  54. data/test/unit/etsy/request_test.rb +89 -53
  55. data/test/unit/etsy/response_test.rb +118 -4
  56. data/test/unit/etsy/section_test.rb +28 -0
  57. data/test/unit/etsy/secure_client_test.rb +27 -5
  58. data/test/unit/etsy/shipping_template_test.rb +24 -0
  59. data/test/unit/etsy/shop_test.rb +12 -5
  60. data/test/unit/etsy/transaction_test.rb +52 -0
  61. data/test/unit/etsy/user_test.rb +147 -8
  62. data/test/unit/etsy/verification_request_test.rb +3 -3
  63. data/test/unit/etsy_test.rb +19 -7
  64. metadata +133 -77
  65. data/README.rdoc +0 -208
  66. data/lib/etsy/version.rb +0 -13
@@ -13,14 +13,14 @@ module Etsy
13
13
 
14
14
  should "know the url" do
15
15
  client = stub()
16
- client.stubs(:request_token).returns(stub(:authorize_url => 'http://www.etsy.com?foo=bar', :secret => 'secret'))
16
+ client.stubs(:request_token).returns(stub(:params => {:login_url => 'http://www.etsy.com?foo=bar&baz=true'}, :secret => 'secret'))
17
17
 
18
18
  @request.stubs(:client).returns(client)
19
19
 
20
- @request.url.should == 'http://www.etsy.com?foo=bar&oauth_consumer_key=secret'
20
+ @request.url.should == 'http://www.etsy.com?foo=bar&baz=true'
21
21
  end
22
22
 
23
23
  end
24
24
 
25
25
  end
26
- end
26
+ end
@@ -7,8 +7,10 @@ class EtsyTest < Test::Unit::TestCase
7
7
  Etsy.instance_variable_set(:@environment, nil)
8
8
  Etsy.instance_variable_set(:@access_mode, nil)
9
9
  Etsy.instance_variable_set(:@callback_url, nil)
10
+ Etsy.instance_variable_set(:@host, nil)
10
11
  Etsy.instance_variable_set(:@api_key, nil)
11
12
  Etsy.instance_variable_set(:@api_secret, nil)
13
+ Etsy.instance_variable_set(:@permission_scopes, nil)
12
14
  end
13
15
 
14
16
  should "be able to set and retrieve the API key" do
@@ -41,17 +43,18 @@ class EtsyTest < Test::Unit::TestCase
41
43
  Etsy.api_secret.should == 'secret'
42
44
  end
43
45
 
44
- should "be in read-mode by default" do
45
- Etsy.access_mode.should == :read_only
46
+ should "know the host for the sandbox environment" do
47
+ Etsy.environment = :sandbox
48
+ Etsy.host.should == 'sandbox.openapi.etsy.com'
46
49
  end
47
50
 
48
- should "be able to set the access mode to a read-write" do
49
- Etsy.access_mode = :read_write
50
- Etsy.access_mode.should == :read_write
51
+ should "know the host for the production environment" do
52
+ Etsy.environment = :production
53
+ Etsy.host.should == 'openapi.etsy.com'
51
54
  end
52
55
 
53
- should "raise an exception when attempting to set an invalid access mode" do
54
- lambda { Etsy.access_mode = :invalid }.should raise_error(ArgumentError)
56
+ should "default to sandbox host" do
57
+ Etsy.host.should == 'sandbox.openapi.etsy.com'
55
58
  end
56
59
 
57
60
  should "be able to set the callback url" do
@@ -62,6 +65,15 @@ class EtsyTest < Test::Unit::TestCase
62
65
  should "default callback to out-of-band" do
63
66
  Etsy.callback_url.should == 'oob'
64
67
  end
68
+
69
+ should "default permission scopes to an empty array" do
70
+ Etsy.permission_scopes.should == []
71
+ end
72
+
73
+ should "be able to set the scopes" do
74
+ Etsy.permission_scopes = %w(a_scope another_scope)
75
+ Etsy.permission_scopes.should == ['a_scope', 'another_scope']
76
+ end
65
77
  end
66
78
 
67
79
  context "The Etsy module when set up properly" do
metadata CHANGED
@@ -1,132 +1,188 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: etsy
3
- version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
6
- segments:
7
- - 0
8
- - 2
9
- - 0
10
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.1
5
+ prerelease:
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Patrick Reagan
9
+ - Katrina Owen
14
10
  autorequire:
15
11
  bindir: bin
16
12
  cert_chain: []
17
-
18
- date: 2010-11-11 00:00:00 -07:00
19
- default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
13
+ date: 2012-07-04 00:00:00.000000000Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
22
16
  name: json
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
17
+ requirement: &70157167530640 !ruby/object:Gem::Requirement
25
18
  none: false
26
- requirements:
27
- - - ~>
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 1
32
- - 4
33
- - 0
34
- version: 1.4.0
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 1.5.0
35
23
  type: :runtime
36
- version_requirements: *id001
37
- - !ruby/object:Gem::Dependency
38
- name: oauth
39
24
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
25
+ version_requirements: *70157167530640
26
+ - !ruby/object:Gem::Dependency
27
+ name: oauth
28
+ requirement: &70157167530160 !ruby/object:Gem::Requirement
41
29
  none: false
42
- requirements:
30
+ requirements:
43
31
  - - ~>
44
- - !ruby/object:Gem::Version
45
- hash: 15
46
- segments:
47
- - 0
48
- - 4
49
- - 0
32
+ - !ruby/object:Gem::Version
50
33
  version: 0.4.0
51
34
  type: :runtime
52
- version_requirements: *id002
53
- description:
54
- email: reaganpr@gmail.com
35
+ prerelease: false
36
+ version_requirements: *70157167530160
37
+ description: A friendly Ruby interface to the Etsy API
38
+ email:
39
+ - reaganpr@gmail.com
40
+ - katrina.owen@gmail.com
55
41
  executables: []
56
-
57
42
  extensions: []
58
-
59
- extra_rdoc_files:
60
- - README.rdoc
61
- files:
62
- - README.rdoc
43
+ extra_rdoc_files: []
44
+ files:
45
+ - .gitignore
46
+ - .travis.yml
47
+ - Gemfile
48
+ - README.md
63
49
  - Rakefile
50
+ - etsy.gemspec
51
+ - lib/etsy.rb
52
+ - lib/etsy/address.rb
64
53
  - lib/etsy/basic_client.rb
54
+ - lib/etsy/category.rb
55
+ - lib/etsy/country.rb
65
56
  - lib/etsy/image.rb
66
57
  - lib/etsy/listing.rb
67
58
  - lib/etsy/model.rb
59
+ - lib/etsy/payment_template.rb
60
+ - lib/etsy/profile.rb
68
61
  - lib/etsy/request.rb
69
62
  - lib/etsy/response.rb
63
+ - lib/etsy/section.rb
70
64
  - lib/etsy/secure_client.rb
65
+ - lib/etsy/shipping_template.rb
71
66
  - lib/etsy/shop.rb
67
+ - lib/etsy/transaction.rb
72
68
  - lib/etsy/user.rb
73
69
  - lib/etsy/verification_request.rb
74
- - lib/etsy/version.rb
75
- - lib/etsy.rb
70
+ - test/fixtures/address/getUserAddresses.json
71
+ - test/fixtures/category/findAllSubCategoryChildren.json
72
+ - test/fixtures/category/findAllTopCategory.json
73
+ - test/fixtures/category/findAllTopCategory.single.json
74
+ - test/fixtures/category/findAllTopCategoryChildren.json
75
+ - test/fixtures/category/getCategory.multiple.json
76
+ - test/fixtures/category/getCategory.single.json
77
+ - test/fixtures/country/getCountry.json
76
78
  - test/fixtures/image/findAllListingImages.json
77
- - test/fixtures/listing/findAllShopListingsActive.json
79
+ - test/fixtures/listing/findAllListingActive.category.json
80
+ - test/fixtures/listing/findAllShopListings.json
81
+ - test/fixtures/listing/getListing.multiple.json
82
+ - test/fixtures/listing/getListing.single.json
83
+ - test/fixtures/payment_template/getPaymentTemplate.json
84
+ - test/fixtures/profile/new.json
85
+ - test/fixtures/section/getShopSection.json
86
+ - test/fixtures/shipping_template/getShippingTemplate.json
78
87
  - test/fixtures/shop/findAllShop.json
79
88
  - test/fixtures/shop/findAllShop.single.json
80
89
  - test/fixtures/shop/getShop.multiple.json
81
90
  - test/fixtures/shop/getShop.single.json
91
+ - test/fixtures/transaction/findAllShopTransactions.json
82
92
  - test/fixtures/user/getUser.multiple.json
83
93
  - test/fixtures/user/getUser.single.json
84
94
  - test/fixtures/user/getUser.single.private.json
95
+ - test/fixtures/user/getUser.single.withProfile.json
96
+ - test/fixtures/user/getUser.single.withShops.json
85
97
  - test/test_helper.rb
98
+ - test/unit/etsy/address_test.rb
86
99
  - test/unit/etsy/basic_client_test.rb
100
+ - test/unit/etsy/category_test.rb
101
+ - test/unit/etsy/country_test.rb
87
102
  - test/unit/etsy/image_test.rb
88
103
  - test/unit/etsy/listing_test.rb
104
+ - test/unit/etsy/model_test.rb
105
+ - test/unit/etsy/payment_template_test.rb
106
+ - test/unit/etsy/profile_test.rb
89
107
  - test/unit/etsy/request_test.rb
90
108
  - test/unit/etsy/response_test.rb
109
+ - test/unit/etsy/section_test.rb
91
110
  - test/unit/etsy/secure_client_test.rb
111
+ - test/unit/etsy/shipping_template_test.rb
92
112
  - test/unit/etsy/shop_test.rb
113
+ - test/unit/etsy/transaction_test.rb
93
114
  - test/unit/etsy/user_test.rb
94
115
  - test/unit/etsy/verification_request_test.rb
95
116
  - test/unit/etsy_test.rb
96
- has_rdoc: true
97
- homepage: http://sneaq.net
117
+ homepage: http://github.com/kytrinyx/etsy
98
118
  licenses: []
99
-
100
119
  post_install_message:
101
- rdoc_options:
102
- - --main
103
- - README.rdoc
104
- require_paths:
120
+ rdoc_options: []
121
+ require_paths:
105
122
  - lib
106
- required_ruby_version: !ruby/object:Gem::Requirement
123
+ required_ruby_version: !ruby/object:Gem::Requirement
107
124
  none: false
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- hash: 3
112
- segments:
113
- - 0
114
- version: "0"
115
- required_rubygems_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
130
  none: false
117
- requirements:
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
131
+ requirements:
132
+ - - ! '>='
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
124
135
  requirements: []
125
-
126
136
  rubyforge_project:
127
- rubygems_version: 1.3.7
137
+ rubygems_version: 1.8.10
128
138
  signing_key:
129
139
  specification_version: 3
130
- summary: Provides a friendly ruby-like interface to the Etsy API
131
- test_files: []
132
-
140
+ summary: Provides a friendly ruby-like wrapper for the Etsy API
141
+ test_files:
142
+ - test/fixtures/address/getUserAddresses.json
143
+ - test/fixtures/category/findAllSubCategoryChildren.json
144
+ - test/fixtures/category/findAllTopCategory.json
145
+ - test/fixtures/category/findAllTopCategory.single.json
146
+ - test/fixtures/category/findAllTopCategoryChildren.json
147
+ - test/fixtures/category/getCategory.multiple.json
148
+ - test/fixtures/category/getCategory.single.json
149
+ - test/fixtures/country/getCountry.json
150
+ - test/fixtures/image/findAllListingImages.json
151
+ - test/fixtures/listing/findAllListingActive.category.json
152
+ - test/fixtures/listing/findAllShopListings.json
153
+ - test/fixtures/listing/getListing.multiple.json
154
+ - test/fixtures/listing/getListing.single.json
155
+ - test/fixtures/payment_template/getPaymentTemplate.json
156
+ - test/fixtures/profile/new.json
157
+ - test/fixtures/section/getShopSection.json
158
+ - test/fixtures/shipping_template/getShippingTemplate.json
159
+ - test/fixtures/shop/findAllShop.json
160
+ - test/fixtures/shop/findAllShop.single.json
161
+ - test/fixtures/shop/getShop.multiple.json
162
+ - test/fixtures/shop/getShop.single.json
163
+ - test/fixtures/transaction/findAllShopTransactions.json
164
+ - test/fixtures/user/getUser.multiple.json
165
+ - test/fixtures/user/getUser.single.json
166
+ - test/fixtures/user/getUser.single.private.json
167
+ - test/fixtures/user/getUser.single.withProfile.json
168
+ - test/fixtures/user/getUser.single.withShops.json
169
+ - test/test_helper.rb
170
+ - test/unit/etsy/address_test.rb
171
+ - test/unit/etsy/basic_client_test.rb
172
+ - test/unit/etsy/category_test.rb
173
+ - test/unit/etsy/country_test.rb
174
+ - test/unit/etsy/image_test.rb
175
+ - test/unit/etsy/listing_test.rb
176
+ - test/unit/etsy/model_test.rb
177
+ - test/unit/etsy/payment_template_test.rb
178
+ - test/unit/etsy/profile_test.rb
179
+ - test/unit/etsy/request_test.rb
180
+ - test/unit/etsy/response_test.rb
181
+ - test/unit/etsy/section_test.rb
182
+ - test/unit/etsy/secure_client_test.rb
183
+ - test/unit/etsy/shipping_template_test.rb
184
+ - test/unit/etsy/shop_test.rb
185
+ - test/unit/etsy/transaction_test.rb
186
+ - test/unit/etsy/user_test.rb
187
+ - test/unit/etsy/verification_request_test.rb
188
+ - test/unit/etsy_test.rb
data/README.rdoc DELETED
@@ -1,208 +0,0 @@
1
- = Etsy
2
-
3
- == Description
4
-
5
- The Etsy gem provides a friendly Ruby interface to the Etsy API
6
-
7
- == Installation
8
-
9
- Installing the latest stable version is simple:
10
-
11
- $ gem install etsy
12
-
13
- If you want to be on the bleeding edge, install from GitHub:
14
-
15
- $ git clone git://github.com/reagent/etsy.git
16
- $ cd etsy
17
- $ rake gem && gem install pkg/etsy-<version>.gem
18
-
19
- == Usage
20
-
21
- === Read-Only Mode
22
-
23
- The Etsy API has two modes: read-only, and read-write. Read-only mode only requires an
24
- API key (available from http://developer.etsy.com):
25
-
26
- require 'rubygems'
27
- require 'etsy'
28
-
29
- Etsy.api_key = 'foobar'
30
-
31
- From there, you can make any non-authenticated calls to the API that you need.
32
-
33
- == Authenticated Calls
34
-
35
- The Etsy API has support for both retrieval of extended information and write
36
- support for authenticated users. Authentication can either be performed from
37
- the console or from within a Ruby web application.
38
-
39
- === Console
40
-
41
- For simple authentication from the console, configure the necessary parameters:
42
-
43
- require 'rubygems'
44
- require 'etsy'
45
-
46
- Etsy.api_key = 'key'
47
- Etsy.api_secret = 'secret'
48
- Etsy.access_mode = :read_write
49
-
50
- From there, you will need to paste the verification URL into a browser:
51
-
52
- Etsy.verification_url
53
-
54
- Once you have allowed access, you can now generate an access token by supplying
55
- the verifier displayed on the Etsy site:
56
-
57
- request = Etsy.request_token
58
- access = Etsy.access_token(request.token, request.secret, 'abc123')
59
-
60
- Authenticated calls can now be made by passing an access token and secret:
61
-
62
- Etsy.myself(access.token, access.secret)
63
-
64
- === Web Application
65
-
66
- The process for authenticating via a web application is similar, but requires the
67
- configuration of a callback URL:
68
-
69
- require 'rubygems'
70
- require 'etsy'
71
-
72
- Etsy.api_key = 'key'
73
- Etsy.api_secret = 'secret'
74
- Etsy.access_mode = :read_write
75
- Etsy.callback_url = 'http://localhost:4567/authorize'
76
-
77
- In this mode, you'll need to store the request token and secret before redirecting
78
- to the verification URL. A simple example using Sinatra:
79
-
80
- enable :sessions
81
-
82
- get '/' do
83
- session[:request_token] = Etsy.request_token.token
84
- session[:request_secret] = Etsy.request_token.secret
85
- redirect Etsy.verification_url
86
- end
87
-
88
- get '/authorize' do
89
- access_token = Etsy.access_token(
90
- session[:request_token],
91
- session[:request_secret],
92
- params[:oauth_verifier]
93
- )
94
-
95
- # access_token.token and access_token.secret can now be saved for future API calls
96
- end
97
-
98
- === Users
99
-
100
- If you're starting with a user, the easiest way is to use the Etsy.user method:
101
-
102
- >> user = Etsy.user('littletjane')
103
- => #<Etsy::User:0x107f82c @result=[{"city"=>"Washington, DC", ... >
104
- >> user.username
105
- => "littletjane"
106
- >> user.id
107
- => 5327518
108
-
109
- For more information about what is available for a user, check out the documentation
110
- for Etsy::User.
111
-
112
- == Shops
113
-
114
- Each user may optionally have a shop. If a user is a seller, he / she also has an
115
- associated shop object:
116
-
117
- >> shop = user.shop
118
- => #<Etsy::Shop:0x102578c @result={"is_vacation"=>"", "announcement"=> ... >
119
- >> shop.name
120
- => "littletjane"
121
- >> shop.title
122
- => "a cute and crafty mix of handmade goods."
123
-
124
- More information about shops can be found in the documentation for Etsy::Shop.
125
-
126
- == Listings
127
-
128
- Shops contain multiple listings:
129
-
130
- >> shop.listings
131
- => [#<Etsy::Listing:0x119acac @result={} ...>, ... ]
132
- >> listing = shop.listings.first
133
- => #<Etsy::Listing:0x19a981c @result={} ... >
134
- >> listing.title
135
- => "hanging with the bad boys matchbox"
136
- >> listing.description
137
- => "standard size matchbox, approx. 1.5 x 2 inches ..."
138
- >> listing.url
139
- => "http://www.etsy.com/view_listing.php?listing_id=24165902"
140
- >> listing.view_count
141
- => 19
142
- >> listing.created_at
143
- => Sat Apr 25 11:31:34 -0400 2009
144
-
145
- See the documentation for Etsy::Listing for more information.
146
-
147
- == Images
148
-
149
- Each listing has one or more images available:
150
-
151
- >> listing.images
152
- => [#<Etsy::Image:0x18f85e4 @result={} ... >,
153
- #<Etsy::Image:0x18f85d0 @result={} ... >]
154
- >> listing.images.first.square
155
- => "http://ny-image0.etsy.com/il_75x75.189111072.jpg"
156
- >> listing.images.first.full
157
- => "http://ny-image0.etsy.com/il_fullxfull.189111072.jpg"
158
-
159
- Listings also have a primary image:
160
-
161
- >> listing.image
162
- => #<Etsy::Image:0x18c3060 @result={} ... >
163
- >> listing.image.full
164
- => "http://ny-image0.etsy.com/il_fullxfull.189111072.jpg"
165
-
166
- More information is available in the documentation for Etsy::Image.
167
-
168
- == Contributing
169
-
170
- I have a "commit bit" policy for contributions to this repository. Once I accept
171
- your patch, I will give you full commit access. To submit patches:
172
-
173
- 1. Fork this repository
174
- 2. Implement the desired feature with tests (and documentation if necessary)
175
- 3. Send me a pull request
176
-
177
- I ask that you not submit patches that include changes to the version or gemspec.
178
-
179
- == Contributors
180
-
181
- These people have helped make the Etsy gem what it is today:
182
-
183
- * {Katrina Owen}[http://github.com/kowen]
184
-
185
- == License
186
-
187
- Copyright (c) 2009 - 2010 Patrick Reagan (reaganpr@gmail.com)
188
-
189
- Permission is hereby granted, free of charge, to any person
190
- obtaining a copy of this software and associated documentation
191
- files (the "Software"), to deal in the Software without
192
- restriction, including without limitation the rights to use,
193
- copy, modify, merge, publish, distribute, sublicense, and/or sell
194
- copies of the Software, and to permit persons to whom the
195
- Software is furnished to do so, subject to the following
196
- conditions:
197
-
198
- The above copyright notice and this permission notice shall be
199
- included in all copies or substantial portions of the Software.
200
-
201
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
202
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
203
- OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
204
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
205
- HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
206
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
207
- FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
208
- OTHER DEALINGS IN THE SOFTWARE.