fastlane-plugin-sharethemeal 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/README.md +14 -16
- data/lib/fastlane/plugin/sharethemeal/actions/sharethemeal_action.rb +61 -40
- data/lib/fastlane/plugin/sharethemeal/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cfd90e4b0150beae06a85d91a82d073e3538e29f
|
|
4
|
+
data.tar.gz: f22da2ae289c5234ebd4d266f728bd4bab8d3f95
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d9263897e5644c68bef4a5fb3bcd2dfac731f40e5ae0a757266235f2b1d8074be7e400bebca06e26727a500bb0a073a01b06b9103641eedfcc5def205feee65a
|
|
7
|
+
data.tar.gz: 0af9423ad1acc4df65aef1c03c632dfc8aee682a0d80962dc42677e3e6c23d88bf2ef573b47a30037e87ec8e2d0a51838c3a73f3959d93442d7aceaf805d9143
|
data/README.md
CHANGED
|
@@ -2,34 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://rubygems.org/gems/fastlane-plugin-sharethemeal)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
5
|
## About sharethemeal
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
[fastlane](https://fastlane.tools) saves us hours of work, which eventually saves us a lot of money.
|
|
8
|
+
This is my way of reminding myself to give, on every deploy using [fastlane](https://fastlane.tools).
|
|
9
|
+
|
|
10
|
+
Opens a Browser with the Donation page of [ShareTheMeal](https://sharethemeal.org/)
|
|
11
|
+
to get the URL, please donate once per app - and copy the URL.
|
|
10
12
|
|
|
11
|
-
|
|
12
|
-
this is my try to remind myself to give, on every deploy using fastlane.
|
|
13
|
+

|
|
13
14
|
|
|
14
|
-
Opens a Browser with the Payment page of sharethemeal
|
|
15
15
|
|
|
16
|
-
to get the parameter values, please donate once per app - and extract the values from the URL.
|
|
17
16
|
|
|
18
|
-
|
|
17
|
+
**Help trying to Automate donation -> see issue [#5](https://github.com/hjanuschka/fastlane-plugin-sharethemeal/issues/5) for current progress**
|
|
19
18
|
|
|
19
|
+
Download the Apps:
|
|
20
|
+
* IOS: [AppStore](https://click.google-analytics.com/redirect?tid=UA-58737077-1&url=https%3A%2F%2Fitunes.apple.com%2Fus%2Fapp%2Fsharethemeal%2Fid977130010&aid=org.sharethemeal.app&idfa=%{idfa}&cs=stmwebsite&cm=website&cn=permanent)
|
|
21
|
+
* ANDROID: [PlayStore] (https://play.google.com/store/apps/details?id=org.sharethemeal.app&referrer=utm_source%3Dstmwebsite%26utm_medium%3Dwebsite%26utm_campaign%3Dpermanent)
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
## Example
|
|
23
25
|
|
|
24
26
|
```ruby
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
beneficiaryUri: "xxxxx",
|
|
30
|
-
beneficiarySource: "contentful",
|
|
31
|
-
thankYouUri: "xxxxxx"
|
|
32
|
-
)
|
|
27
|
+
sharethemeal(
|
|
28
|
+
amount: "0.4",
|
|
29
|
+
url: "https://sharethemeal.org/de/checkout.html?userhash=xxxxxx&lang=de¤cy=EUR&symbol=€&amount=0.4&version=2&beneficiaryUri=xxx&beneficiarySource=contentful&thankYouUri=xxx"
|
|
30
|
+
)
|
|
33
31
|
```
|
|
34
32
|
|
|
35
33
|
## Getting Started
|
|
@@ -1,68 +1,89 @@
|
|
|
1
|
+
require "rest-client"
|
|
2
|
+
require "base64"
|
|
3
|
+
require "json"
|
|
4
|
+
require "uri"
|
|
1
5
|
module Fastlane
|
|
2
6
|
module Actions
|
|
3
7
|
class SharethemealAction < Action
|
|
4
8
|
def self.run(params)
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
stmurl << "currency=EUR&"
|
|
9
|
-
stmurl << "symbol=€&"
|
|
10
|
-
stmurl << "amount=0.4&"
|
|
11
|
-
stmurl << "version=2&"
|
|
12
|
-
stmurl << "beneficiaryUri=#{params[:beneficiaryUri]}&"
|
|
13
|
-
stmurl << "beneficiarySource=contentful&"
|
|
14
|
-
stmurl << "thankYouUri=#{params[:thankYouUri]}"
|
|
15
|
-
|
|
16
|
-
`open "#{stmurl}"`
|
|
9
|
+
params[:url] = params[:url].sub! '€', ''
|
|
10
|
+
url_parsed = URI.parse(params[:url])
|
|
11
|
+
stm_options = URI.decode_www_form(url_parsed.query).to_h
|
|
17
12
|
|
|
13
|
+
begin
|
|
14
|
+
bearer = "LAXQszxcmpGMWi24y0NFt00YPWGJnJOo9Ba8ijLcI1fmiKHI1PDF7KG7PGJU7KcX"
|
|
15
|
+
token_payload = {
|
|
16
|
+
"userHash" => stm_options["userhash"],
|
|
17
|
+
"currency" => "EUR"
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
client_token = RestClient.post("https://api.sharethemeal.org/api/payment/braintree/client-tokens", token_payload.to_json,
|
|
21
|
+
{
|
|
22
|
+
content_type: :json, accept: :json,
|
|
23
|
+
Authorization: "Bearer #{bearer}"
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
client_token_response = JSON.parse(client_token)
|
|
27
|
+
|
|
28
|
+
auth_reply = JSON.parse(Base64.decode64(client_token_response["clientToken"]))
|
|
29
|
+
finger_print = URI.encode_www_form_component(auth_reply["authorizationFingerprint"])
|
|
30
|
+
|
|
31
|
+
payment_infos = RestClient.get("https://api.braintreegateway.com/merchants/2c9spryb4hkdp2w5/client_api/v1/payment_methods?sharedCustomerIdentifierType=undefined&braintreeLibraryVersion=braintree%2Fweb%2F2.15.5&merchantAccountId=cscmaecenataeu&authorizationFingerprint=#{finger_print}&callback=")
|
|
32
|
+
payment_infos_json = JSON.parse(payment_infos)
|
|
33
|
+
|
|
34
|
+
transaction_payload = {
|
|
35
|
+
"userHash" => stm_options["userhash"],
|
|
36
|
+
"amount" => params[:amount],
|
|
37
|
+
"currency" => "EUR",
|
|
38
|
+
"paymentMethodNonce" => payment_infos_json["paymentMethods"].first["nonce"],
|
|
39
|
+
"beneficiarySource" => stm_options["beneficiarySource"],
|
|
40
|
+
"beneficiaryUri" => stm_options["beneficiaryUri"],
|
|
41
|
+
"thankYouUri" => stm_options["thankYouUri"]
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
transaction_response = RestClient.post('https://api.sharethemeal.org/api/payment/braintree/transactions', transaction_payload.to_json, {
|
|
45
|
+
content_type: :json, accept: :json,
|
|
46
|
+
"Authorization" => "Bearer #{bearer}"
|
|
47
|
+
})
|
|
48
|
+
|
|
49
|
+
transaction_response_json = JSON.parse(transaction_response)
|
|
50
|
+
if transaction_response_json["result"]["donationCreated"] == true
|
|
51
|
+
UI.success "Successfully Donated #{params[:amount]} to ShareTheMeal 🍔 "
|
|
52
|
+
else
|
|
53
|
+
UI.warning "Donation was not successfully accepted, maybe card is invalid or something else"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
rescue => err
|
|
57
|
+
UI.error "Donation failed, be sure that you have done atleast one manual donation with a stored payment option"
|
|
58
|
+
end
|
|
18
59
|
end
|
|
19
60
|
|
|
20
61
|
def self.description
|
|
21
|
-
"ShareTheMeal"
|
|
62
|
+
"Donate ShareTheMeal"
|
|
22
63
|
end
|
|
23
64
|
|
|
24
65
|
def self.authors
|
|
25
|
-
["
|
|
66
|
+
["hjanuschka"]
|
|
26
67
|
end
|
|
27
68
|
|
|
28
|
-
|
|
29
69
|
def self.available_options
|
|
30
70
|
[
|
|
31
|
-
FastlaneCore::ConfigItem.new(key: :
|
|
32
|
-
env_name: "
|
|
33
|
-
description: "ShareTheMeal
|
|
71
|
+
FastlaneCore::ConfigItem.new(key: :url,
|
|
72
|
+
env_name: "SHARETHEMEAL_URL",
|
|
73
|
+
description: "ShareTheMeal URL",
|
|
34
74
|
optional: false,
|
|
35
75
|
type: String),
|
|
36
76
|
FastlaneCore::ConfigItem.new(key: :amount,
|
|
37
77
|
env_name: "SHARETHEMEAL_AMOUNT",
|
|
38
78
|
description: "ShareTheMeal Amount",
|
|
39
79
|
optional: false,
|
|
40
|
-
type: String)
|
|
41
|
-
|
|
42
|
-
env_name: "SHARETHEMEAL_LANGUAGE",
|
|
43
|
-
description: "ShareTheMeal Language",
|
|
44
|
-
optional: false,
|
|
45
|
-
type: String),
|
|
46
|
-
FastlaneCore::ConfigItem.new(key: :beneficiaryUri,
|
|
47
|
-
env_name: "SHARETHEMEAL_BENEFICIARYURI",
|
|
48
|
-
description: "ShareTheMeal Beneficiary Uri",
|
|
49
|
-
optional: false,
|
|
50
|
-
type: String),
|
|
51
|
-
FastlaneCore::ConfigItem.new(key: :beneficiarySource,
|
|
52
|
-
env_name: "SHARETHEMEAL_BENEFICIARYSOURCE",
|
|
53
|
-
description: "ShareTheMeal Beneficiary Source",
|
|
54
|
-
optional: false,
|
|
55
|
-
type: String),
|
|
56
|
-
FastlaneCore::ConfigItem.new(key: :thankYouUri,
|
|
57
|
-
env_name: "SHARETHEMEAL_THANKYOUURI",
|
|
58
|
-
description: "ShareTheMeal Thank you URI",
|
|
59
|
-
optional: false,
|
|
60
|
-
type: String)
|
|
80
|
+
type: String)
|
|
81
|
+
|
|
61
82
|
]
|
|
62
83
|
end
|
|
63
84
|
|
|
64
85
|
def self.is_supported?(platform)
|
|
65
|
-
|
|
86
|
+
true
|
|
66
87
|
end
|
|
67
88
|
end
|
|
68
89
|
end
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane-plugin-sharethemeal
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Helmut Januschka
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2016-09-
|
|
11
|
+
date: 2016-09-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rest-client
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: pry
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|