sailthru-client 1.14 → 1.15

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/README.md +83 -0
  2. data/lib/sailthru.rb +38 -5
  3. metadata +3 -3
data/README.md CHANGED
@@ -8,6 +8,7 @@ By default, it will make request in `JSON` format.
8
8
  It can make requests to following [API calls](http://docs.sailthru.com/api):
9
9
 
10
10
  * [email](http://docs.sailthru.com/api/email)
11
+ * [user](http://docs.sailthru.com/api/user)
11
12
  * [send](http://docs.sailthru.com/api/send)
12
13
  * [blast](http://docs.sailthru.com/api/blast)
13
14
  * [template](http://docs.sailthru.com/api/template)
@@ -32,6 +33,40 @@ api_key = "api_key";
32
33
  api_secret = 'secret';
33
34
  api_url = "https://api.sailthru.com";
34
35
  sailthru = Sailthru::SailthruClient.new(api_key, api_secret, api_url)
36
+
37
+ # GET http://docs.sailthru.com/api/user API call
38
+ user_key = 'email'
39
+ email = 'praj@sailthru.com'
40
+ fields = {'vars' => 1, 'lists' => 1}
41
+ data = {
42
+ 'id' => email,
43
+ 'key' => user_key,
44
+ 'fields' => fields
45
+ }
46
+ response = sailthru.api_get('user', data)
47
+
48
+ # POST http://docs.sailthru.com/api/user API call
49
+ user_sid = '4e2879472d7acd6d97144f9e' #sailthru ID
50
+ lists = {
51
+ "list-A" => 1,
52
+ "list-B" => 1,
53
+ "list-C" => 0 #optout of this list
54
+ }
55
+ vars = {
56
+ 'name' => 'Prajwal Tuladhar',
57
+ 'address' => {
58
+ 'city': 'New York',
59
+ 'state': 'NY',
60
+ 'zipcode': 10011
61
+ }
62
+ }
63
+ data = {
64
+ 'id' => user_sid,
65
+ 'lists' => lists,
66
+ 'vars' => vars
67
+ }
68
+ response = sailthru.api_post('user', data)
69
+
35
70
  ```
36
71
 
37
72
  ### [send](http://docs.sailthru.com/api/send)
@@ -60,6 +95,54 @@ options = {'test' => 1}
60
95
  response = sailthru.multi_send(template_name, emails, vars, options)
61
96
  ```
62
97
 
98
+ ### [user](http://docs.sailthru.com/api/user)
99
+ ```ruby
100
+ #create new user profile
101
+ options = {
102
+ 'vars' => {
103
+ 'name' => 'Prajwal Tuladhar',
104
+ 'address' => 'New York, NY'
105
+ }
106
+ }
107
+ response = sailthru.create_new_user(options)
108
+
109
+ #update existing user by Sailthru ID
110
+ options = {
111
+ 'keys' => {
112
+ 'email' => 'praj@sailthru.com',
113
+ 'twitter' => 'infynyxx',
114
+ 'fb' => 726310296
115
+ },
116
+ 'lists' => {
117
+ 'list-1' => 1,
118
+ 'list-2' => 1,
119
+ }
120
+ }
121
+ response = sailthru.save_user('4e2879472d7acd6d97144f9e', options)
122
+
123
+ #update existing user by email
124
+ options = {
125
+ 'key' => 'email',
126
+ 'lists' => {
127
+ 'list-1' => 0
128
+ }
129
+ }
130
+ response = sailthru.save_user('praj@sailthru.com', options)
131
+
132
+ #get user by Sailthru ID
133
+ fields = {
134
+ 'keys' => 1,
135
+ 'vars' => 1,
136
+ 'activity' => 1
137
+ }
138
+ response = sailthru.get_user_by_sid('4e2879472d7acd6d97144f9e')
139
+
140
+ #get user by Custom key
141
+ response = sailthru.get_user_by_key('praj@sailthru.com', 'email', fields)
142
+
143
+ ```
144
+
145
+
63
146
  ### [email](http://docs.sailthru.com/api/email)
64
147
  ``` ruby
65
148
  #get email
data/lib/sailthru.rb CHANGED
@@ -9,7 +9,7 @@ require 'net/http/post/multipart'
9
9
 
10
10
  module Sailthru
11
11
 
12
- Version = VERSION = '1.14'
12
+ Version = VERSION = '1.15'
13
13
 
14
14
  class SailthruClientException < Exception
15
15
  end
@@ -529,8 +529,7 @@ module Sailthru
529
529
  # sets horizon data
530
530
  def set_horizon(email, tags)
531
531
  data = {}
532
- data[
533
- :email] = email
532
+ data[:email] = email
534
533
  data[:tags] = (tags.class == Array) ? tags.join(',') : tags
535
534
  api_post(:horizon, data)
536
535
  end
@@ -609,7 +608,7 @@ module Sailthru
609
608
  data['emails'] = Array(emails).join(',')
610
609
  process_job(:import, data, report_email, postback_url)
611
610
  end
612
-
611
+
613
612
  # implementation for import job using file upload
614
613
  def process_import_job_from_file(list, file_path, report_email = nil, postback_url = nil)
615
614
  data = {}
@@ -618,6 +617,13 @@ module Sailthru
618
617
  process_job(:import, data, report_email, postback_url, 'file')
619
618
  end
620
619
 
620
+ # implementation for update job using file upload
621
+ def process_update_job_from_file(file_path, report_email = nil, postback_url = nil)
622
+ data = {}
623
+ data['file'] = file_path
624
+ process_job(:update, data, report_email, postback_url, 'file')
625
+ end
626
+
621
627
  # implementation for snapshot job
622
628
  def process_snapshot_job(query = {}, report_email = nil, postback_url = nil)
623
629
  data = {}
@@ -637,6 +643,33 @@ module Sailthru
637
643
  api_get(:job, {'job_id' => job_id})
638
644
  end
639
645
 
646
+ # Get user by Sailthru ID
647
+ def get_user_by_sid(id, fields = {})
648
+ api_get(:user, {'id' => id, 'fields' => fields})
649
+ end
650
+
651
+ # Get user by specified key
652
+ def get_user_by_key(id, key, fields = {})
653
+ data = {
654
+ 'id' => id,
655
+ 'key' => key,
656
+ 'fields' => fields
657
+ }
658
+ api_get(:user, data)
659
+ end
660
+
661
+ # Creates new user
662
+ def create_new_user(options = {})
663
+ options.delete('id')
664
+ api_post(:user, options)
665
+ end
666
+
667
+ # Save existing user
668
+ def save_user(id, options = {})
669
+ data = options
670
+ data['id'] = id
671
+ api_post(:user, data)
672
+ end
640
673
 
641
674
  # Perform API GET request
642
675
  def api_get(action, data)
@@ -764,7 +797,7 @@ module Sailthru
764
797
  def prepare_json_payload(data)
765
798
  payload = {
766
799
  :api_key => @api_key,
767
- :format => 'json', #fuck XML
800
+ :format => 'json', #<3 XML
768
801
  :json => data.to_json
769
802
  }
770
803
  payload[:sig] = get_signature_hash(payload, @secret)
metadata CHANGED
@@ -4,8 +4,8 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 1
7
- - 14
8
- version: "1.14"
7
+ - 15
8
+ version: "1.15"
9
9
  platform: ruby
10
10
  authors:
11
11
  - Prajwal Tuladhar
@@ -13,7 +13,7 @@ autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
15
 
16
- date: 2012-02-10 00:00:00 -05:00
16
+ date: 2012-05-31 00:00:00 -04:00
17
17
  default_executable:
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency