pwinty 1.1.0 → 3.0.0

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.
metadata CHANGED
@@ -1,92 +1,201 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwinty
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
- - Derek Lucas
7
+ - Thomas Harvey
8
8
  autorequire:
9
- bindir: bin
9
+ bindir: exe
10
10
  cert_chain: []
11
- date: 2016-12-26 00:00:00.000000000 Z
11
+ date: 2019-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.17'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.17'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ">="
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
18
46
  - !ruby/object:Gem::Version
19
- version: '0'
47
+ version: '3.0'
20
48
  type: :development
21
49
  prerelease: false
22
50
  version_requirements: !ruby/object:Gem::Requirement
23
51
  requirements:
24
- - - ">="
52
+ - - "~>"
25
53
  - !ruby/object:Gem::Version
26
- version: '0'
54
+ version: '3.0'
27
55
  - !ruby/object:Gem::Dependency
28
- name: test-unit
56
+ name: vcr
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
- - - ">="
59
+ - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '0'
61
+ version: '5.0'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
- - - ">="
66
+ - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '0'
68
+ version: '5.0'
41
69
  - !ruby/object:Gem::Dependency
42
- name: dotenv
70
+ name: webmock
43
71
  requirement: !ruby/object:Gem::Requirement
44
72
  requirements:
45
- - - ">="
73
+ - - "~>"
46
74
  - !ruby/object:Gem::Version
47
- version: '0'
75
+ version: '3.6'
48
76
  type: :development
49
77
  prerelease: false
50
78
  version_requirements: !ruby/object:Gem::Requirement
51
79
  requirements:
52
- - - ">="
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '3.6'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '0.17'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.17'
97
+ - !ruby/object:Gem::Dependency
98
+ name: dry-struct
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: dry-struct-setters
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '0.2'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.2'
125
+ - !ruby/object:Gem::Dependency
126
+ name: faraday
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.15'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.15'
139
+ - !ruby/object:Gem::Dependency
140
+ name: faraday_middleware
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '0.13'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
53
151
  - !ruby/object:Gem::Version
54
- version: '0'
152
+ version: '0.13'
55
153
  - !ruby/object:Gem::Dependency
56
- name: rest-client
154
+ name: json
57
155
  requirement: !ruby/object:Gem::Requirement
58
156
  requirements:
59
157
  - - "~>"
60
158
  - !ruby/object:Gem::Version
61
- version: '1.8'
159
+ version: '2.2'
62
160
  type: :runtime
63
161
  prerelease: false
64
162
  version_requirements: !ruby/object:Gem::Requirement
65
163
  requirements:
66
164
  - - "~>"
67
165
  - !ruby/object:Gem::Version
68
- version: '1.8'
69
- description: Order photo prints with Ruby
166
+ version: '2.2'
167
+ description: This wraps the Pwinty API at version 3 and aims to make your ruby life
168
+ easier when interacting with the API.
70
169
  email:
71
- - d@derekplucas.com
170
+ - tom@alush.co.uk
72
171
  executables: []
73
172
  extensions: []
74
173
  extra_rdoc_files: []
75
174
  files:
76
175
  - ".gitignore"
176
+ - ".rspec"
77
177
  - ".travis.yml"
78
- - CHANGELOG.md
79
- - CONTRIBUTING.md
178
+ - CODE_OF_CONDUCT.md
80
179
  - Gemfile
180
+ - Gemfile.lock
181
+ - LICENSE.txt
81
182
  - README.md
82
183
  - Rakefile
83
- - lib/multipart.rb
184
+ - bin/console
185
+ - bin/setup
84
186
  - lib/pwinty.rb
187
+ - lib/pwinty/base.rb
188
+ - lib/pwinty/country.rb
189
+ - lib/pwinty/http_errors.rb
190
+ - lib/pwinty/image.rb
191
+ - lib/pwinty/order.rb
192
+ - lib/pwinty/order_status.rb
193
+ - lib/pwinty/photo_status.rb
194
+ - lib/pwinty/shipment.rb
195
+ - lib/pwinty/shipping_info.rb
85
196
  - lib/pwinty/version.rb
86
197
  - pwinty.gemspec
87
- - test/test_client.rb
88
- - test/test_helper.rb
89
- homepage: http://github.com/dereklucas/pwinty
198
+ homepage: https://github.com/tomharvey/pwinty3-rb
90
199
  licenses:
91
200
  - MIT
92
201
  metadata: {}
@@ -106,11 +215,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
106
215
  version: '0'
107
216
  requirements: []
108
217
  rubyforge_project:
109
- rubygems_version: 2.6.6
218
+ rubygems_version: 2.7.7
110
219
  signing_key:
111
220
  specification_version: 4
112
- summary: A Ruby client for the Pwinty API
113
- test_files:
114
- - test/test_client.rb
115
- - test/test_helper.rb
116
- has_rdoc:
221
+ summary: Order photo prints through Pwinty
222
+ test_files: []
@@ -1,10 +0,0 @@
1
- ## 1.1.0 (2016-12-26)
2
-
3
- * Add support for adding photos in a batch (Thanks @bumi!)
4
- * Support for configurable Pwinty API versions (Thanks @bumi!)
5
- * Added support for passing client credentials as arguments instead of ENV variables (Thanks @bumi!)
6
-
7
-
8
- ## 1.0.1 (2015-04-10)
9
-
10
- * Create a working Pwinty client with [rest-client](https://github.com/rest-client/rest-client)
@@ -1,18 +0,0 @@
1
- ## Getting Involved
2
-
3
- New contributors are always welcome, when it doubt please ask questions. We strive to be an open and welcoming community. Please be nice to one another.
4
-
5
- ### Coding
6
-
7
- * Pick a task:
8
- * Offer feedback on open [pull requests](https://github.com/dereklucas/pwinty/pulls).
9
- * Review open [issues](https://github.com/dereklucas/pwinty/issues) for things to help on.
10
- * [Create an issue](https://github.com/dereklucas/pwinty/issues/new) to start a discussion on additions or features.
11
- * Fork the project, add your changes and tests to cover them in a topic branch.
12
- * Commit your changes and rebase against `dereklucas/pwinty` to ensure everything is up to date.
13
- * [Submit a pull request](https://github.com/dereklucas/pwinty/compare/)
14
-
15
- ### Non-Coding
16
-
17
- * Offer feedback on open [issues](https://github.com/dereklucas/pwinty/issues).
18
- * Organize or volunteer at events.
@@ -1,76 +0,0 @@
1
- # License:: Distributed under the terms of the WTFPL (http://www.wtfpl.net/txt/copying/)
2
-
3
- require 'rubygems'
4
- require 'mime/types'
5
- require 'cgi'
6
-
7
-
8
- module Multipart
9
- VERSION = "1.0.0"
10
-
11
- # Formats a given hash as a multipart form post
12
- # If a hash value responds to :string or :read messages, then it is
13
- # interpreted as a file and processed accordingly; otherwise, it is assumed
14
- # to be a string
15
- class Post
16
- # We have to pretend we're a web browser...
17
- USERAGENT = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/523.10.6 (KHTML, like Gecko) Version/3.0.4 Safari/523.10.6"
18
- BOUNDARY = "0123456789ABLEWASIEREISAWELBA9876543210"
19
- CONTENT_TYPE = "multipart/form-data; boundary=#{ BOUNDARY }"
20
- HEADER = { "Content-Type" => CONTENT_TYPE, "User-Agent" => USERAGENT }
21
-
22
- def self.prepare_query(params)
23
- fp = []
24
-
25
- params.each do |k, v|
26
- # Are we trying to make a file parameter?
27
- if v.respond_to?(:path) and v.respond_to?(:read) then
28
- fp.push(FileParam.new(k.to_s, v.path, v.read))
29
- # We must be trying to make a regular parameter
30
- else
31
- fp.push(StringParam.new(k.to_s, v))
32
- end
33
- end
34
-
35
- # Assemble the request body using the special multipart format
36
- query = fp.collect {|p| "--" + BOUNDARY + "\r\n" + p.to_multipart }.join("") + "--" + BOUNDARY + "--"
37
- return query, HEADER
38
- end
39
- end
40
-
41
- private
42
-
43
- # Formats a basic string key/value pair for inclusion with a multipart post
44
- class StringParam
45
- attr_accessor :k, :v
46
-
47
- def initialize(k, v)
48
- @k = k
49
- @v = v
50
- end
51
-
52
- def to_multipart
53
- return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"\r\n\r\n#{v}\r\n"
54
- end
55
- end
56
-
57
- # Formats the contents of a file or string for inclusion with a multipart
58
- # form post
59
- class FileParam
60
- attr_accessor :k, :filename, :content
61
-
62
- def initialize(k, filename, content)
63
- @k = k
64
- @filename = filename
65
- @content = content
66
- end
67
-
68
- def to_multipart
69
- # If we can tell the possible mime-type from the filename, use the
70
- # first in the list; otherwise, use "application/octet-stream"
71
- mime_type = MIME::Types.type_for(filename)[0] || MIME::Types["application/octet-stream"][0]
72
- return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"; filename=\"#{ filename }\"\r\n" +
73
- "Content-Type: #{ mime_type.simplified }\r\n\r\n#{ content }\r\n"
74
- end
75
- end
76
- end
@@ -1,117 +0,0 @@
1
- require "test_helper"
2
-
3
- class TestClient < Test::Unit::TestCase
4
-
5
- def setup
6
- @params = {
7
- recipientName: "FirstName LastName",
8
- address1: "123 Anywhere Street",
9
- addressTownOrCity: "San Francisco",
10
- stateOrCounty: "CA",
11
- postalOrZipCode: "94101",
12
- countryCode: "US",
13
- payment: "InvoiceMe",
14
- qualityLevel: "Standard"
15
- }
16
-
17
- @client = Pwinty.client(merchant_id: ENV['PWINTY_MERCHANT_ID'], api_key: ENV['PWINTY_API_KEY'], production: false)
18
-
19
- @order_keys = %w[ id status price
20
- address1 address2
21
- addressTownOrCity
22
- countryCode
23
- destinationCountryCode
24
- errorMessage qualityLevel
25
- payment paymentUrl
26
- photos postalOrZipCode
27
- recipientName shippingInfo
28
- stateOrCounty ]
29
- end
30
-
31
- def test_initialize
32
- body = @client.catalog
33
- assert_equal body.class, Hash
34
- end
35
-
36
- def test_catalog_integration
37
- body = @client.catalog
38
- assert_equal body.class, Hash
39
- assert_equal body["countryCode"], "US"
40
- assert_equal body["qualityLevel"], "Standard"
41
- assert_equal body["shippingRates"].class, Array
42
- assert_equal body["items"].class, Array
43
- end
44
- def test_get_orders_integration
45
- # NOTE: works only if you already have an order created. the first ever test run will probably fail
46
- body = @client.get_orders
47
- assert_equal body.class, Array
48
- assert_equal body.first.keys.sort!, @order_keys.sort!
49
- end
50
- def test_countries_integration
51
- body = @client.countries
52
- keys = %w[ countryCode name
53
- hasProducts errorMessage ]
54
-
55
- assert_equal body.class, Array
56
- assert_equal body.first.keys.sort!, keys.sort!
57
- end
58
-
59
- def test_orders_integration
60
- # create Order
61
- body = @client.create_order(@params)
62
- assert_equal body.keys.sort!, @order_keys.sort!
63
- assert_equal body["postalOrZipCode"], "94101"
64
- id = body["id"]
65
-
66
-
67
- body = @client.update_order(id: id, recipientName: 'Travis CI', postalOrZipCode: '94102')
68
- assert_equal body.keys.sort!, @order_keys.sort!
69
- assert_equal body["postalOrZipCode"], "94102"
70
-
71
- # add Photo to Order via URL
72
- body = @client.add_photo(orderId: id,
73
- type: "4x6",
74
- url: "http://i.imgur.com/xXnrL.jpg",
75
- copies: 1, sizing: "Crop")
76
- photo_id = body['id']
77
- first_photo = body
78
-
79
- keys = %w[ id type url
80
- status copies
81
- sizing priceToUser
82
- price md5Hash previewUrl
83
- thumbnailUrl attributes
84
- errorMessage ]
85
-
86
- assert_equal body.keys.sort!, keys.sort!
87
-
88
- # Check photo was uploaded
89
- body = @client.get_photos(id)
90
- assert_equal body.length, 1
91
- assert_equal body.first, first_photo
92
-
93
- # Check photo was uploaded
94
- body = @client.get_photo(id, photo_id)
95
- assert_equal body, first_photo
96
-
97
- # Delete photo
98
- body = @client.delete_photo(id, photo_id)
99
- assert_equal body['errorMessage'], nil
100
-
101
- # TODO: Need to add a photo via file
102
-
103
- # get Order Status
104
- body = @client.get_order_status(id)
105
- keys = %w[id isValid generalErrors photos]
106
- if body["error"]
107
- assert body["error"].class, String
108
- else
109
- assert_equal body.keys.sort!, keys.sort!
110
- end
111
-
112
- # Cancel Order
113
- body = @client.update_order_status(id, "Cancelled")
114
- assert_equal body['errorMessage'], nil
115
- end
116
-
117
- end