darujme_cz 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6d17f181534ac29ffd9c8b5a10bfe5da1ee9108cb966445a43972c8f0dc524a1
4
- data.tar.gz: 4568dd11e8119dada54748a9fdad07af13f0ed3a513d7d2167b29cc5f0c4507b
3
+ metadata.gz: 672a894bc35b2c7afe8fd3c787e113431f5aed47bd96d53aa3e228e45378f8f8
4
+ data.tar.gz: 12899c6230d630f4e2842b1892284e0de2a32560bc12c069faac41ed4c2790da
5
5
  SHA512:
6
- metadata.gz: fc5ec822624de0672ec0d51ae771593d759bee790d650d4fe89380ddd38bca282cf38b4af6a5587bfc9261162621e67d8fd17f86f1d250bdfe230f57cafa9546
7
- data.tar.gz: 1098f9876b1cd249f0c0662e7d5de0da125df8eea776dba6b84f73f6150b8cbd55a9414d72be2becea9219a596e26e137da9f17a8d508633f52ba9d4838d7e9f
6
+ metadata.gz: 40e8351839a8dbf6005e22a2581d9013797ad6a3e85bfae43a7fe2d24577477bcba0d6353a8bca8b1a371d4f3f68893e427bd63477b6c99bcc3e3e9423b0c013
7
+ data.tar.gz: 860308c1dc3706f574f06740679ba26b91ea79bb8b3c80378ec3179708d4f6b69a9745b80519e23fbefad44380c59b74383a0347fcc8a33c307f80302586ae8d
@@ -6,6 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
 
8
8
  ## [Unreleased]
9
+ ## [0.3.0] - 2019-08-25
10
+ ### Added
11
+ - project
9
12
  ## [0.2.0] - 2019-06-01
10
13
  ### Changed
11
14
  - Connection use hash-style args
@@ -12,6 +12,7 @@ module DarujmeCz
12
12
  autoload :Connection, "darujme_cz/connection"
13
13
  autoload :Donor, "darujme_cz/donor"
14
14
  autoload :Pledge, "darujme_cz/pledge"
15
+ autoload :Project, "darujme_cz/project"
15
16
  autoload :Transaction, "darujme_cz/transaction"
16
17
 
17
18
  include ActiveSupport::Configurable
@@ -13,16 +13,23 @@ module DarujmeCz
13
13
  end
14
14
 
15
15
  def self.where(**params)
16
+ data = connection(params).get "#{base_path(params)}/#{endpoint}-by-filter", params
17
+ data[endpoint].map { |i| new(i) }
18
+ end
19
+
20
+ def self.connection(params = {})
16
21
  credentials = params.delete(:connection) || {
17
22
  app_id: DarujmeCz.config.app_id,
18
23
  api_key: DarujmeCz.config.app_secret
19
24
  }
20
- c = Connection.new credentials
25
+ Connection.new credentials
26
+ end
27
+
28
+ def self.base_path(params = {})
21
29
  org = params.delete(:organization_id) || DarujmeCz.config.organization_id
22
30
  raise ArgumentError, "Missing organization ID" if org.nil?
23
31
 
24
- data = c.get "organization/#{org}/#{endpoint}-by-filter", params
25
- data[endpoint].map { |i| new(i) }
32
+ "organization/#{org}"
26
33
  end
27
34
 
28
35
  attr_reader :id
@@ -32,5 +39,16 @@ module DarujmeCz
32
39
  @source = attributes
33
40
  end
34
41
 
42
+ private
43
+
44
+ # @param [Array<String>] list
45
+ def self.define_attributes(list)
46
+ list.each do |attribute|
47
+ define_method attribute.underscore do
48
+ @source[attribute]
49
+ end
50
+ end
51
+ end
52
+
35
53
  end
36
- end
54
+ end
@@ -47,4 +47,4 @@ module DarujmeCz
47
47
  end
48
48
 
49
49
  end
50
- end
50
+ end
@@ -8,6 +8,8 @@ module DarujmeCz
8
8
  "pledges"
9
9
  end
10
10
 
11
+ define_attributes %w[organizationId projectId promotionId paymentMethod]
12
+
11
13
  # @param [Hash] attributes
12
14
  def initialize(attributes)
13
15
  @id = attributes["pledgeId"]
@@ -32,12 +34,6 @@ module DarujmeCz
32
34
  @source["pledgedAt"].to_time
33
35
  end
34
36
 
35
- %w[organizationId projectId promotionId paymentMethod].each do |m|
36
- define_method m.underscore do
37
- @source[m]
38
- end
39
- end
40
-
41
37
  def donor
42
38
  @donor ||= Donor.new @source["donor"]
43
39
  end
@@ -48,5 +44,9 @@ module DarujmeCz
48
44
  end
49
45
  end
50
46
 
47
+ def project
48
+ @project ||= Project.find project_id
49
+ end
50
+
51
51
  end
52
- end
52
+ end
@@ -0,0 +1,50 @@
1
+ module DarujmeCz
2
+ # @see https://www.darujme.cz/doc/api/v1/index.html#endpoint-get-project-projectid
3
+ class Project < Base
4
+
5
+ def self.endpoint
6
+ "project"
7
+ end
8
+
9
+ def self.find(id)
10
+ data = connection.get "project/#{id}"
11
+ new data[endpoint]
12
+ end
13
+
14
+ # @param [Hash] attributes
15
+ def initialize(attributes)
16
+ @id = attributes["projectId"]
17
+ super
18
+ end
19
+
20
+ def name(lang = "cs")
21
+ get_localized_attribute "title", lang
22
+ end
23
+
24
+ def organization
25
+ # TODO
26
+ end
27
+
28
+ def content(lang = "cs")
29
+ get_localized_attribute "content", lang
30
+ end
31
+
32
+ def synopsis(lang = "cs")
33
+ get_localized_attribute "synopsis", lang
34
+ end
35
+
36
+ private
37
+
38
+ def get_localized_attribute(attribute, lang)
39
+ value = @source[attribute]
40
+ if value.is_a?(Hash)
41
+ value[lang] || value.values.first
42
+ else
43
+ value
44
+ end
45
+ end
46
+
47
+ end
48
+ end
49
+ # project_id = 1201275
50
+ # project_id = 1584
@@ -1,3 +1,3 @@
1
1
  module DarujmeCz
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,61 @@
1
+ {
2
+ "projectId": 1201275,
3
+ "promotionId": null,
4
+ "organization": {
5
+ "organizationId": 434,
6
+ "name": "My organization",
7
+ "logo": {
8
+ "url": "https://s3.eu-central-1.amazonaws.com/uploads.darujme.cz/organization/logo/NF-square-200.jpg-1UjY2/RkTzbV6LLxuWZfmCZX.jpg"
9
+ }
10
+ },
11
+ "collectedAmountEstimate": {
12
+ "cents": 12345,
13
+ "currency": "CZK"
14
+ },
15
+ "donorsCount": 123,
16
+ "title": {
17
+ "cs": "Název projektu",
18
+ "en": "Name of project"
19
+ },
20
+ "synopsis": {
21
+ "cs": "Lorem Ipsum je demonstrativní výplňový text používaný v tiskařském a knihařském průmyslu. Lorem Ipsum je považováno za standard v této oblasti už od začátku 16. století, kdy dnes neznámý tiskař vzal kusy textu a na jejich základě vytvořil speciální vzorovou knihu. Jeho odkaz nevydržel pouze pět století, on přežil i nástup elektronické sazby v podstatě beze změny.",
22
+ "en": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged."
23
+ },
24
+ "content": {
25
+ "cs": "Lorem Ipsum je demonstrativní výplňový text používaný v tiskařském a knihařském průmyslu. Lorem Ipsum je považováno za standard v této oblasti už od začátku 16. století, kdy dnes neznámý tiskař vzal kusy textu a na jejich základě vytvořil speciální vzorovou knihu. Jeho odkaz nevydržel pouze pět století, on přežil i nástup elektronické sazby v podstatě beze změny",
26
+ "en": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged"
27
+ },
28
+ "targetAmount": null,
29
+ "activeUntil": null,
30
+ "imageHeader": {
31
+ "url": "https://s3.eu-central-1.amazonaws.com/uploads.darujme.cz/project/header/JogaSeniori-FondVedomi2019-C-AnnaSolcova.31.JPG-a828356b712c44353e2f648cd948389f.jpg"
32
+ },
33
+ "donateUrl": "https://www.darujme.cz/darovat/1201275",
34
+ "tags": [
35
+ {
36
+ "tagId": 1000010,
37
+ "label": {
38
+ "cs": "tag1",
39
+ "en": "the tag1"
40
+ }
41
+ }
42
+ ],
43
+ "suggestedAmounts": [
44
+ {
45
+ "primaryAmount": {
46
+ "cents": 10,
47
+ "currency": "CZK"
48
+ },
49
+ "secondaryAmount": {
50
+ "cents": 20,
51
+ "currency": "EUR"
52
+ },
53
+ "description": {
54
+ "cs": "Navzdory všeobecnému přesvědčení Lorem Ipsum není náhodný text.",
55
+ "en": "Contrary to popular belief, Lorem Ipsum is not simply random text."
56
+ },
57
+ "default": true
58
+ }
59
+ ],
60
+ "donationMatching": null
61
+ }
@@ -90,4 +90,12 @@ RSpec.describe DarujmeCz::Pledge do
90
90
  expect(subject.city).to eq "Praha"
91
91
  end
92
92
 
93
- end
93
+ describe "#project" do
94
+ before :each do
95
+ stub_request(:get, "https://www.darujme.cz/api/v1/project/4563?apiId=123&apiSecret=abcd").
96
+ to_return(status: 200, body: { project: JSON.parse(file_fixture("project.json").read) }.to_json)
97
+ end
98
+ it { expect(subject.project).to be_a DarujmeCz::Project }
99
+ end
100
+
101
+ end
@@ -0,0 +1,18 @@
1
+ RSpec.describe DarujmeCz::Project do
2
+ let(:attributes) { JSON.parse(file_fixture("project.json").read) }
3
+
4
+ subject { described_class.new attributes }
5
+
6
+ shared_examples "localized attributes" do |attribute_name, json_source = nil|
7
+ describe "##{attribute_name}" do
8
+ it { expect(subject.send(attribute_name)).to eq attributes[json_source || attribute_name]["cs"] }
9
+ it { expect(subject.send(attribute_name, "pl")).to eq attributes[json_source || attribute_name]["cs"] }
10
+ it { expect(subject.send(attribute_name, "en")).to eq attributes[json_source || attribute_name]["en"] }
11
+ end
12
+ end
13
+
14
+ it_behaves_like "localized attributes", "name", "title"
15
+ it_behaves_like "localized attributes", "content"
16
+ it_behaves_like "localized attributes", "synopsis"
17
+
18
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: darujme_cz
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukáš Pokorný
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-06-02 00:00:00.000000000 Z
11
+ date: 2019-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -134,15 +134,18 @@ files:
134
134
  - lib/darujme_cz/connection.rb
135
135
  - lib/darujme_cz/donor.rb
136
136
  - lib/darujme_cz/pledge.rb
137
+ - lib/darujme_cz/project.rb
137
138
  - lib/darujme_cz/transaction.rb
138
139
  - lib/darujme_cz/version.rb
139
140
  - spec/darujme_cz_spec.rb
140
141
  - spec/fixtures/files/donor.json
141
142
  - spec/fixtures/files/pledges.json
143
+ - spec/fixtures/files/project.json
142
144
  - spec/fixtures/files/transactions.json
143
145
  - spec/models/connect_spec.rb
144
146
  - spec/models/donor_spec.rb
145
147
  - spec/models/pledge_spec.rb
148
+ - spec/models/project_spec.rb
146
149
  - spec/models/transaction_spec.rb
147
150
  - spec/spec_helper.rb
148
151
  - spec/support/darujme.rb
@@ -169,17 +172,19 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
172
  - !ruby/object:Gem::Version
170
173
  version: '0'
171
174
  requirements: []
172
- rubygems_version: 3.0.3
175
+ rubygems_version: 3.0.4
173
176
  signing_key:
174
177
  specification_version: 4
175
178
  summary: Ruby library for work with Darujme.cz API
176
179
  test_files:
177
180
  - spec/spec_helper.rb
181
+ - spec/models/project_spec.rb
178
182
  - spec/models/connect_spec.rb
179
183
  - spec/models/transaction_spec.rb
180
184
  - spec/models/pledge_spec.rb
181
185
  - spec/models/donor_spec.rb
182
186
  - spec/support/darujme.rb
187
+ - spec/fixtures/files/project.json
183
188
  - spec/fixtures/files/donor.json
184
189
  - spec/fixtures/files/transactions.json
185
190
  - spec/fixtures/files/pledges.json