embulk-input-marketo 0.5.6 → 0.5.7.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/PULL_REQUEST_TEMPLATE.md +37 -0
  3. data/.gitignore +11 -2
  4. data/.travis.yml +5 -45
  5. data/LICENSE.txt +21 -0
  6. data/README.md +14 -65
  7. data/build.gradle +102 -0
  8. data/config/checkstyle/checkstyle.xml +128 -0
  9. data/config/checkstyle/default.xml +108 -0
  10. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  11. data/gradle/wrapper/gradle-wrapper.properties +6 -0
  12. data/gradlew +169 -0
  13. data/gradlew.bat +84 -0
  14. data/lib/embulk/input/marketo.rb +3 -0
  15. data/settings.gradle +1 -0
  16. data/src/main/java/org/embulk/input/marketo/CsvTokenizer.java +677 -0
  17. data/src/main/java/org/embulk/input/marketo/MarketoInputPlugin.java +15 -0
  18. data/src/main/java/org/embulk/input/marketo/MarketoInputPluginDelegate.java +77 -0
  19. data/src/main/java/org/embulk/input/marketo/MarketoService.java +30 -0
  20. data/src/main/java/org/embulk/input/marketo/MarketoServiceImpl.java +176 -0
  21. data/src/main/java/org/embulk/input/marketo/MarketoUtils.java +172 -0
  22. data/src/main/java/org/embulk/input/marketo/delegate/ActivityBulkExtractInputPlugin.java +63 -0
  23. data/src/main/java/org/embulk/input/marketo/delegate/CampaignInputPlugin.java +67 -0
  24. data/src/main/java/org/embulk/input/marketo/delegate/LeadBulkExtractInputPlugin.java +61 -0
  25. data/src/main/java/org/embulk/input/marketo/delegate/LeadWithListInputPlugin.java +58 -0
  26. data/src/main/java/org/embulk/input/marketo/delegate/LeadWithProgramInputPlugin.java +56 -0
  27. data/src/main/java/org/embulk/input/marketo/delegate/MarketoBaseBulkExtractInputPlugin.java +260 -0
  28. data/src/main/java/org/embulk/input/marketo/delegate/MarketoBaseInputPluginDelegate.java +69 -0
  29. data/src/main/java/org/embulk/input/marketo/exception/MarketoAPIException.java +30 -0
  30. data/src/main/java/org/embulk/input/marketo/model/MarketoAccessTokenResponse.java +92 -0
  31. data/src/main/java/org/embulk/input/marketo/model/MarketoBulkExtractRequest.java +59 -0
  32. data/src/main/java/org/embulk/input/marketo/model/MarketoError.java +40 -0
  33. data/src/main/java/org/embulk/input/marketo/model/MarketoField.java +91 -0
  34. data/src/main/java/org/embulk/input/marketo/model/MarketoResponse.java +81 -0
  35. data/src/main/java/org/embulk/input/marketo/model/filter/DateRangeFilter.java +31 -0
  36. data/src/main/java/org/embulk/input/marketo/model/filter/ListFilter.java +10 -0
  37. data/src/main/java/org/embulk/input/marketo/model/filter/MarketoFilter.java +8 -0
  38. data/src/main/java/org/embulk/input/marketo/rest/MarketoBaseRestClient.java +226 -0
  39. data/src/main/java/org/embulk/input/marketo/rest/MarketoFileResponseEntityReader.java +69 -0
  40. data/src/main/java/org/embulk/input/marketo/rest/MarketoRESTEndpoint.java +44 -0
  41. data/src/main/java/org/embulk/input/marketo/rest/MarketoResponseJetty92EntityReader.java +88 -0
  42. data/src/main/java/org/embulk/input/marketo/rest/MarketoRestClient.java +332 -0
  43. data/src/main/java/org/embulk/input/marketo/rest/RecordPagingIterable.java +130 -0
  44. data/src/test/java/org/embulk/input/marketo/TestMarketoInputPlugin.java +5 -0
  45. data/src/test/java/org/embulk/input/marketo/rest/MarketoBaseRestClientTest.java +220 -0
  46. metadata +65 -222
  47. data/.ruby-version +0 -1
  48. data/.travis.yml.erb +0 -42
  49. data/Gemfile +0 -3
  50. data/LICENSE +0 -13
  51. data/Rakefile +0 -20
  52. data/embulk-input-marketo.gemspec +0 -28
  53. data/gemfiles/embulk-latest +0 -4
  54. data/gemfiles/template.erb +0 -4
  55. data/lib/embulk/input/marketo/activity_log.rb +0 -103
  56. data/lib/embulk/input/marketo/base.rb +0 -139
  57. data/lib/embulk/input/marketo/lead.rb +0 -143
  58. data/lib/embulk/input/marketo_api.rb +0 -22
  59. data/lib/embulk/input/marketo_api/soap/activity_log.rb +0 -103
  60. data/lib/embulk/input/marketo_api/soap/base.rb +0 -135
  61. data/lib/embulk/input/marketo_api/soap/lead.rb +0 -91
  62. data/test/activity_log_fixtures.rb +0 -216
  63. data/test/embulk/input/marketo/test_activity_log.rb +0 -444
  64. data/test/embulk/input/marketo/test_base.rb +0 -76
  65. data/test/embulk/input/marketo/test_lead.rb +0 -605
  66. data/test/embulk/input/marketo_api/soap/test_activity_log.rb +0 -154
  67. data/test/embulk/input/marketo_api/soap/test_base.rb +0 -96
  68. data/test/embulk/input/marketo_api/soap/test_lead.rb +0 -139
  69. data/test/embulk/input/test_marketo_api.rb +0 -28
  70. data/test/lead_fixtures.rb +0 -111
  71. data/test/mute_logger.rb +0 -7
  72. data/test/override_assert_raise.rb +0 -18
  73. data/test/prepare_embulk.rb +0 -15
  74. data/test/run-test.rb +0 -26
  75. data/test/savon_helper.rb +0 -17
@@ -0,0 +1,69 @@
1
+ package org.embulk.input.marketo.delegate;
2
+
3
+ import com.google.common.annotations.VisibleForTesting;
4
+ import org.embulk.base.restclient.DefaultServiceDataSplitter;
5
+ import org.embulk.base.restclient.RestClientInputPluginDelegate;
6
+ import org.embulk.base.restclient.RestClientInputTaskBase;
7
+ import org.embulk.base.restclient.ServiceDataSplitter;
8
+ import org.embulk.config.Config;
9
+ import org.embulk.config.ConfigDefault;
10
+ import org.embulk.config.ConfigDiff;
11
+ import org.embulk.config.TaskReport;
12
+ import org.embulk.input.marketo.rest.MarketoRestClient;
13
+ import org.embulk.spi.Exec;
14
+ import org.embulk.spi.Schema;
15
+ import org.embulk.util.retryhelper.jetty92.DefaultJetty92ClientCreator;
16
+ import org.embulk.util.retryhelper.jetty92.Jetty92RetryHelper;
17
+
18
+ import java.util.List;
19
+
20
+ /**
21
+ * Created by tai.khuu on 9/18/17.
22
+ */
23
+ public abstract class MarketoBaseInputPluginDelegate<T extends MarketoBaseInputPluginDelegate.PluginTask> implements RestClientInputPluginDelegate<T>
24
+ {
25
+ public static final int PREVIEW_RECORD_LIMIT = 15;
26
+ private static final int CONNECT_TIMEOUT_IN_MILLIS = 30000;
27
+ private static final int IDLE_TIMEOUT_IN_MILLIS = 60000;
28
+ public interface PluginTask
29
+ extends RestClientInputTaskBase, MarketoRestClient.PluginTask
30
+ {
31
+ @Config("maximum_retries")
32
+ @ConfigDefault("3")
33
+ Integer getMaximumRetries();
34
+
35
+ @Config("initial_retry_interval_milis")
36
+ @ConfigDefault("20000")
37
+ Integer getInitialRetryIntervalMilis();
38
+
39
+ @Config("maximum_retries_interval_milis")
40
+ @ConfigDefault("120000")
41
+ Integer getMaximumRetriesIntervalMilis();
42
+ }
43
+
44
+ @Override
45
+ public ConfigDiff buildConfigDiff(T task, Schema schema, int taskCount, List<TaskReport> taskReports)
46
+ {
47
+ return Exec.newConfigDiff();
48
+ }
49
+
50
+ @Override
51
+ public void validateInputTask(T task)
52
+ {
53
+ }
54
+
55
+ @VisibleForTesting
56
+ public MarketoRestClient createMarketoRestClient(PluginTask task)
57
+ {
58
+ if (Exec.isPreview()) {
59
+ task.setBatchSize(PREVIEW_RECORD_LIMIT);
60
+ }
61
+ return new MarketoRestClient(task, new Jetty92RetryHelper(task.getMaximumRetries(), task.getInitialRetryIntervalMilis(), task.getMaximumRetriesIntervalMilis(), new DefaultJetty92ClientCreator(CONNECT_TIMEOUT_IN_MILLIS, IDLE_TIMEOUT_IN_MILLIS)));
62
+ }
63
+
64
+ @Override
65
+ public ServiceDataSplitter<T> buildServiceDataSplitter(T task)
66
+ {
67
+ return new DefaultServiceDataSplitter();
68
+ }
69
+ }
@@ -0,0 +1,30 @@
1
+ package org.embulk.input.marketo.exception;
2
+
3
+ import org.embulk.input.marketo.model.MarketoError;
4
+
5
+ import java.util.List;
6
+
7
+ /**
8
+ * Exception class for all API Exception
9
+ * Created by tai.khuu on 9/5/17.
10
+ */
11
+ public class MarketoAPIException extends Exception
12
+ {
13
+ private final List<MarketoError> marketoErrors;
14
+ public MarketoAPIException(List<MarketoError> marketoErrors)
15
+ {
16
+ this.marketoErrors = marketoErrors;
17
+ }
18
+
19
+ public List<MarketoError> getMarketoErrors()
20
+ {
21
+ return marketoErrors;
22
+ }
23
+
24
+ @Override
25
+ public String getMessage()
26
+ {
27
+ MarketoError error = getMarketoErrors().get(0);
28
+ return "Marketo API Error, code: " + error.getCode() + ", message: " + error.getMessage();
29
+ }
30
+ }
@@ -0,0 +1,92 @@
1
+ package org.embulk.input.marketo.model;
2
+
3
+ import com.fasterxml.jackson.annotation.JsonProperty;
4
+
5
+ /**
6
+ * Created by tai.khuu on 8/25/17.
7
+ */
8
+ public class MarketoAccessTokenResponse
9
+ {
10
+ @JsonProperty("error")
11
+ private String error;
12
+
13
+ @JsonProperty("error_description")
14
+ private String errorDescription;
15
+
16
+ @JsonProperty("access_token")
17
+ private String accessToken;
18
+
19
+ @JsonProperty("token_type")
20
+ private String tokenType;
21
+
22
+ @JsonProperty("expires_in")
23
+ private Integer expiresIn;
24
+
25
+ @JsonProperty("scope")
26
+ private String scope;
27
+
28
+ public String getError()
29
+ {
30
+ return error;
31
+ }
32
+
33
+ public void setError(String error)
34
+ {
35
+ this.error = error;
36
+ }
37
+
38
+ public String getErrorDescription()
39
+ {
40
+ return errorDescription;
41
+ }
42
+
43
+ public void setErrorDescription(String errorDescription)
44
+ {
45
+ this.errorDescription = errorDescription;
46
+ }
47
+
48
+ public String getAccessToken()
49
+ {
50
+ return accessToken;
51
+ }
52
+
53
+ public void setAccessToken(String accessToken)
54
+ {
55
+ this.accessToken = accessToken;
56
+ }
57
+
58
+ public String getTokenType()
59
+ {
60
+ return tokenType;
61
+ }
62
+
63
+ public void setTokenType(String tokenType)
64
+ {
65
+ this.tokenType = tokenType;
66
+ }
67
+
68
+ public Integer getExpiresIn()
69
+ {
70
+ return expiresIn;
71
+ }
72
+
73
+ public void setExpiresIn(Integer expiresIn)
74
+ {
75
+ this.expiresIn = expiresIn;
76
+ }
77
+
78
+ public String getScope()
79
+ {
80
+ return scope;
81
+ }
82
+
83
+ public void setScope(String scope)
84
+ {
85
+ this.scope = scope;
86
+ }
87
+
88
+ public boolean hasError()
89
+ {
90
+ return error != null;
91
+ }
92
+ }
@@ -0,0 +1,59 @@
1
+ package org.embulk.input.marketo.model;
2
+
3
+ import org.embulk.input.marketo.model.filter.MarketoFilter;
4
+
5
+ import java.util.List;
6
+ import java.util.Map;
7
+
8
+ /**
9
+ * Created by tai.khuu on 8/27/17.
10
+ */
11
+ public class MarketoBulkExtractRequest
12
+ {
13
+ private List<String> fields;
14
+ private String format;
15
+
16
+ private Map<String, String> columnHeaderNames;
17
+
18
+ private Map<String, MarketoFilter> filter;
19
+
20
+ public List<String> getFields()
21
+ {
22
+ return fields;
23
+ }
24
+
25
+ public void setFields(List<String> fields)
26
+ {
27
+ this.fields = fields;
28
+ }
29
+
30
+ public String getFormat()
31
+ {
32
+ return format;
33
+ }
34
+
35
+ public void setFormat(String format)
36
+ {
37
+ this.format = format;
38
+ }
39
+
40
+ public Map<String, String> getColumnHeaderNames()
41
+ {
42
+ return columnHeaderNames;
43
+ }
44
+
45
+ public void setColumnHeaderNames(Map<String, String> columnHeaderNames)
46
+ {
47
+ this.columnHeaderNames = columnHeaderNames;
48
+ }
49
+
50
+ public Map<String, MarketoFilter> getFilter()
51
+ {
52
+ return filter;
53
+ }
54
+
55
+ public void setFilter(Map<String, MarketoFilter> filter)
56
+ {
57
+ this.filter = filter;
58
+ }
59
+ }
@@ -0,0 +1,40 @@
1
+ package org.embulk.input.marketo.model;
2
+
3
+ /**
4
+ * Created by tai.khuu on 8/25/17.
5
+ */
6
+ public class MarketoError
7
+ {
8
+ private String code;
9
+
10
+ private String message;
11
+
12
+ public String getCode()
13
+ {
14
+ return code;
15
+ }
16
+
17
+ public void setCode(String code)
18
+ {
19
+ this.code = code;
20
+ }
21
+
22
+ public String getMessage()
23
+ {
24
+ return message;
25
+ }
26
+
27
+ public void setMessage(String message)
28
+ {
29
+ this.message = message;
30
+ }
31
+
32
+ @Override
33
+ public String toString()
34
+ {
35
+ return "MarketoError{" +
36
+ "code='" + code + '\'' +
37
+ ", message='" + message + '\'' +
38
+ '}';
39
+ }
40
+ }
@@ -0,0 +1,91 @@
1
+ package org.embulk.input.marketo.model;
2
+
3
+ import com.google.common.base.Optional;
4
+ import org.embulk.input.marketo.MarketoUtils;
5
+ import org.embulk.spi.type.Type;
6
+ import org.embulk.spi.type.Types;
7
+
8
+ /**
9
+ * Created by tai.khuu on 9/22/17.
10
+ */
11
+
12
+ public class MarketoField
13
+ {
14
+ private String name;
15
+
16
+ private MarketoDataType marketoDataType;
17
+
18
+
19
+ public MarketoField(String name, String dataType)
20
+ {
21
+ this.name = name;
22
+ try {
23
+ marketoDataType = MarketoDataType.valueOf(dataType.toUpperCase());
24
+ } catch (IllegalArgumentException ex) {
25
+ marketoDataType = MarketoDataType.STRING;
26
+ }
27
+ }
28
+
29
+ public MarketoField(String name, MarketoDataType marketoDataType)
30
+ {
31
+ this.name = name;
32
+ this.marketoDataType = marketoDataType;
33
+
34
+ }
35
+
36
+ public String getName()
37
+ {
38
+ return name;
39
+ }
40
+
41
+ public MarketoDataType getMarketoDataType()
42
+ {
43
+ return marketoDataType;
44
+ }
45
+
46
+
47
+ public enum MarketoDataType
48
+ {
49
+ DATETIME(Types.TIMESTAMP, MarketoUtils.MARKETO_DATE_TIME_FORMAT),
50
+ EMAIL(Types.STRING),
51
+ FLOAT(Types.DOUBLE),
52
+ INTEGER(Types.LONG),
53
+ FORMULA(Types.STRING),
54
+ PERCENT(Types.LONG),
55
+ URL(Types.STRING),
56
+ PHONE(Types.STRING),
57
+ TEXTAREA(Types.STRING),
58
+ TEXT(Types.STRING),
59
+ STRING(Types.STRING),
60
+ SCORE(Types.LONG),
61
+ BOOLEAN(Types.BOOLEAN),
62
+ CURRENCY(Types.DOUBLE),
63
+ DATE(Types.TIMESTAMP, MarketoUtils.MARKETO_DATE_FORMAT),
64
+ REFERENCE(Types.STRING);
65
+
66
+ private Type type;
67
+
68
+ private String format;
69
+
70
+ MarketoDataType(Type type, String format)
71
+ {
72
+ this.type = type;
73
+ this.format = format;
74
+ }
75
+
76
+ MarketoDataType(Type type)
77
+ {
78
+ this.type = type;
79
+ }
80
+
81
+ public Type getType()
82
+ {
83
+ return type;
84
+ }
85
+
86
+ public Optional<String> getFormat()
87
+ {
88
+ return Optional.fromNullable(format);
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,81 @@
1
+ package org.embulk.input.marketo.model;
2
+
3
+ import java.util.List;
4
+
5
+ /**
6
+ * Created by tai.khuu on 8/25/17.
7
+ */
8
+ public class MarketoResponse<T>
9
+ {
10
+ private String requestId;
11
+
12
+ private boolean success;
13
+
14
+ private String nextPageToken;
15
+
16
+ private boolean moreResult;
17
+
18
+ private List<MarketoError> errors;
19
+
20
+ private List<T> result;
21
+
22
+ public String getRequestId()
23
+ {
24
+ return requestId;
25
+ }
26
+
27
+ public void setRequestId(String requestId)
28
+ {
29
+ this.requestId = requestId;
30
+ }
31
+
32
+ public boolean isSuccess()
33
+ {
34
+ return success;
35
+ }
36
+
37
+ public void setSuccess(boolean success)
38
+ {
39
+ this.success = success;
40
+ }
41
+
42
+ public List<MarketoError> getErrors()
43
+ {
44
+ return errors;
45
+ }
46
+
47
+ public void setErrors(List<MarketoError> errors)
48
+ {
49
+ this.errors = errors;
50
+ }
51
+
52
+ public List<T> getResult()
53
+ {
54
+ return result;
55
+ }
56
+
57
+ public void setResult(List<T> result)
58
+ {
59
+ this.result = result;
60
+ }
61
+
62
+ public String getNextPageToken()
63
+ {
64
+ return nextPageToken;
65
+ }
66
+
67
+ public void setNextPageToken(String nextPageToken)
68
+ {
69
+ this.nextPageToken = nextPageToken;
70
+ }
71
+
72
+ public boolean isMoreResult()
73
+ {
74
+ return moreResult;
75
+ }
76
+
77
+ public void setMoreResult(boolean moreResult)
78
+ {
79
+ this.moreResult = moreResult;
80
+ }
81
+ }