embulk-input-facebook_ads_insights 0.1.5 → 0.1.10

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
  SHA1:
3
- metadata.gz: 04eddaf1b6e3e2b0ad77be0a976d1ae0664b39ad
4
- data.tar.gz: a1fcea73b4d3a6d78c4a34199bde343ab4bf4fd2
3
+ metadata.gz: e15001bc050404e05fc3b7e722b04c0a5482d99e
4
+ data.tar.gz: f7ab80fcb6b69af1af7c4b1d89d89962bce2aabb
5
5
  SHA512:
6
- metadata.gz: 7500ef9e7071277cf2e703d2437cfe752dcddba043bb52b81314d0d9aca72844cb5b611c3f3fae0a302b448b4eb45a43b6bfad1181001be2f03f1c245fc7caec
7
- data.tar.gz: 8c6ace30928fd3e203713bbc523496bf243640465eaa9da432bb719fd24a3636011a83201d6223e64db597f6eadb3e90e39a2b876ed898fc359ec7c2796ed93f
6
+ metadata.gz: 1ec4d35fec9a2004948a407fa3b26265b3519167be8fd03306c74ace9ed617cb13d969ace589d291aa9dba923661a94db24fba6b18a051970f8ceffd7ccd58a6
7
+ data.tar.gz: 336ade308d51f06878cbd228ba39a1de3c85fc65fc98c23de86ccd8a49c984d633d73e9a09bf81209ca711586cb2f30635792e00ba30f2f4070be7fce4f0ee17
data/README.md CHANGED
@@ -19,7 +19,7 @@ Required Embulk version >= 0.9
19
19
  | object_type | yes | ObjectEnum | ads object type. |
20
20
  | object_id | yes | string | ads object id. |
21
21
  | fields | yes | array({name:{FieldEnum, BreakdownEnum}, type:string}) | columns to fetch. |
22
- | action_attribution_windows | no | array(ActionAttributionWindowEnum) | see [action_attribution_windows](https://developers.facebook.com/docs/marketing-api/insights/parameters) for details. |
22
+ | action_attribution_windows | no | array(ActionAttributionWindowEnum) | see [action_attribution_windows](https://developers.facebook.com/docs/marketing-api/insights/parameters) for details. |
23
23
  | action_breakdowns | no | array(ActionBreakdownEnum) | see [action_breakdowns](https://developers.facebook.com/docs/marketing-api/insights/parameters) for details. |
24
24
  | action_report_time | no | enum{impression, conversion} | see [action_report_time](https://developers.facebook.com/docs/marketing-api/insights/parameters) for details. |
25
25
  | breakdowns | no | array(BreakdownEnum) | see [breakdowns](https://developers.facebook.com/docs/marketing-api/insights/parameters) for details. |
@@ -42,7 +42,7 @@ Required Embulk version >= 0.9
42
42
  | ActionAttributionWindowEnum | 1d_view, 7d_view, 28d_view, 1d_click, 7d_click, 28d_click, default |
43
43
  | ActionBreakdownEnum | action_device, action_canvas_component_name, action_carousel_card_id, action_carousel_card_name, action_destination, action_reaction, action_target_id, action_type, action_video_sound, action_video_type |
44
44
  | BreakdownEnum | ad_format_asset, age, body_asset, call_to_action_asset, country, description_asset, gender, image_asset, impression_device, link_url_asset, product_id, region, title_asset, video_asset, dma, frequency_value, hourly_stats_aggregated_by_advertiser_time_zone, hourly_stats_aggregated_by_audience_time_zone, place_page_id, publisher_platform, platform_position, device_platform |
45
- | DatePresetEnum | today, yesterday, this_month, last_month, this_quarter, lifetime, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, last_quarter, last_year, this_week_mon_today, this_week_sun_today, this_year |
45
+ | DatePresetEnum | today, yesterday, this_month, last_month, this_quarter, lifetime, maximum, last_3d, last_7d, last_14d, last_28d, last_30d, last_90d, last_week_mon_sun, last_week_sun_sat, last_quarter, last_year, this_week_mon_today, this_week_sun_today, this_year |
46
46
  | FilteringOperatorEnum | EQUAL, NOT_EQUAL, GREATER_THAN, GREATER_THAN_OR_EQUAL, LESS_THAN, LESS_THAN_OR_EQUAL, IN_RANGE, NOT_IN_RANGE, CONTAIN, NOT_CONTAIN, IN, NOT_IN, STARTS_WITH, ANY, ALL, AFTER, BEFORE, NONE} |
47
47
 
48
48
  ## Example
data/build.gradle CHANGED
@@ -13,7 +13,7 @@ configurations {
13
13
  provided
14
14
  }
15
15
 
16
- version = "0.1.5"
16
+ version = "0.1.10"
17
17
 
18
18
  sourceCompatibility = 1.8
19
19
  targetCompatibility = 1.8
@@ -21,7 +21,7 @@ targetCompatibility = 1.8
21
21
  dependencies {
22
22
  compile "org.embulk:embulk-core:0.9.17"
23
23
  provided "org.embulk:embulk-core:0.9.17"
24
- compile group: "com.facebook.business.sdk", name: "facebook-java-business-sdk", version: "6.0.2"
24
+ compile group: "com.facebook.business.sdk", name: "facebook-java-business-sdk", version: "10.0.0"
25
25
  // compile "YOUR_JAR_DEPENDENCY_GROUP:YOUR_JAR_DEPENDENCY_MODULE:YOUR_JAR_DEPENDENCY_VERSION"
26
26
  testCompile "junit:junit:4.+"
27
27
  }
@@ -24,7 +24,8 @@ import java.util.stream.Collectors;
24
24
  public class Client
25
25
  {
26
26
  private final Logger logger = LoggerFactory.getLogger(Client.class);
27
- private static final int ASYNC_SLEEP_TIME = 3000;
27
+ private static final int ASYNC_SLEEP_TIME = 30000;
28
+ private static final int ASYNC_SLEEP_TIME_LIMIT = 900_000;
28
29
 
29
30
  private final PluginTask pluginTask;
30
31
 
@@ -35,34 +36,68 @@ public class Client
35
36
 
36
37
  public List<AdsInsights> getInsights(boolean isPaginationValid) throws APIException, InterruptedException
37
38
  {
38
- AdReportRun adReportRun;
39
- switch (pluginTask.getObjectType()) {
40
- case ACCOUNT: {
41
- adReportRun = getAdAccountInsights();
42
- break;
39
+ int elapsedTime = 0;
40
+ boolean asyncCompleted = false;
41
+ AdReportRun adReportRun = null;
42
+ while (!asyncCompleted) {
43
+ switch (pluginTask.getObjectType()) {
44
+ case ACCOUNT: {
45
+ adReportRun = getAdAccountInsights();
46
+ break;
47
+ }
48
+ case CAMPAIGN: {
49
+ adReportRun = getCampaignInsights();
50
+ break;
51
+ }
52
+ case ADSET: {
53
+ adReportRun = getAdSetInsights();
54
+ break;
55
+ }
56
+ case AD: {
57
+ adReportRun = getAdInsights();
58
+ break;
59
+ }
60
+ default: throw new IllegalArgumentException();
43
61
  }
44
- case CAMPAIGN: {
45
- adReportRun = getCampaignInsights();
46
- break;
47
- }
48
- case ADSET: {
49
- adReportRun = getAdSetInsights();
50
- break;
62
+ logger.info(adReportRun.getRawResponse());
63
+
64
+ String jobStatus = "";
65
+ try {
66
+ while (adReportRun.fetch().getFieldAsyncPercentCompletion() != 100) {
67
+ logger.info(adReportRun.getRawResponse());
68
+ Thread.sleep(ASYNC_SLEEP_TIME);
69
+ elapsedTime += ASYNC_SLEEP_TIME;
70
+ if (adReportRun.getFieldAsyncStatus().equals("Job Skipped")) {
71
+ jobStatus = "skipped";
72
+ throw new RuntimeException("async was aborted because the AsyncStatus is \"Job Skipped\"");
73
+ }
74
+ if (adReportRun.getFieldAsyncStatus().equals("Job Failed")) {
75
+ jobStatus = "failed";
76
+ throw new RuntimeException("async was aborted because the AsyncStatus is \"Job Failed\"");
77
+ }
78
+ if (adReportRun.getFieldAsyncStatus().equals("Job Not Started") && elapsedTime >= ASYNC_SLEEP_TIME_LIMIT) {
79
+ jobStatus = "aborted";
80
+ throw new RuntimeException("async was aborted because the number of retries exceeded the limit");
81
+ }
82
+ }
83
+ asyncCompleted = true;
51
84
  }
52
- case AD: {
53
- adReportRun = getAdInsights();
54
- break;
85
+ catch (RuntimeException e) {
86
+ if (jobStatus != "failed"){
87
+ throw new APIException(e);
88
+ }
55
89
  }
56
- default: throw new IllegalArgumentException();
57
90
  }
58
- while (adReportRun.fetch().getFieldAsyncPercentCompletion() != 100) {
59
- Thread.sleep(ASYNC_SLEEP_TIME);
91
+ if (adReportRun == null || adReportRun.getFieldAsyncPercentCompletion() != 100) {
92
+ throw new APIException();
60
93
  }
94
+ logger.info(adReportRun.getRawResponse());
95
+
61
96
  // extra waiting
62
97
  int retryCount = 0;
63
98
  boolean succeeded = false;
64
99
  APINodeList<AdsInsights> adsInsights = null;
65
- while (retryCount < pluginTask.getMaxWeightSeconds() && !succeeded) {
100
+ while (retryCount < pluginTask.getMaxWaitSeconds() && !succeeded) {
66
101
  try {
67
102
  Thread.sleep(1000);
68
103
  adsInsights = adReportRun.getInsights().execute();
@@ -84,5 +84,5 @@ public interface PluginTask extends Task
84
84
 
85
85
  @Config("max_wait_seconds")
86
86
  @ConfigDefault("60")
87
- public Integer getMaxWeightSeconds();
87
+ public Integer getMaxWaitSeconds();
88
88
  }
@@ -30,7 +30,8 @@ public class DatePreset
30
30
  case "this_month": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_THIS_MONTH);
31
31
  case "last_month": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_LAST_MONTH);
32
32
  case "this_quarter": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_THIS_QUARTER);
33
- case "lifetime": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_LIFETIME);
33
+ case "lifetime": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_MAXIMUM);
34
+ case "maximum": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_MAXIMUM);
34
35
  case "last_3d": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_LAST_3D);
35
36
  case "last_7d": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_LAST_7D);
36
37
  case "last_14d": return new DatePreset(AdsInsights.EnumDatePreset.VALUE_LAST_14D);
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: embulk-input-facebook_ads_insights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - naotaka nakane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-31 00:00:00.000000000 Z
11
+ date: 2021-05-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -50,12 +50,16 @@ files:
50
50
  - README.md
51
51
  - build.gradle
52
52
  - classpath/annotations-13.0.jar
53
- - classpath/embulk-input-facebook_ads_insights-0.1.5.jar
54
- - classpath/facebook-java-business-sdk-6.0.2.jar
53
+ - classpath/byte-buddy-1.10.13.jar
54
+ - classpath/byte-buddy-agent-1.10.13.jar
55
+ - classpath/embulk-input-facebook_ads_insights-0.1.10.jar
56
+ - classpath/facebook-java-business-sdk-10.0.0.jar
55
57
  - classpath/gson-2.5.jar
56
58
  - classpath/guava-20.0.jar
57
59
  - classpath/kotlin-stdlib-1.2.60.jar
58
60
  - classpath/kotlin-stdlib-common-1.2.60.jar
61
+ - classpath/mockito-core-3.5.11.jar
62
+ - classpath/objenesis-3.1.jar
59
63
  - classpath/okhttp-3.9.1.jar
60
64
  - classpath/okio-2.1.0.jar
61
65
  - config/checkstyle/checkstyle.xml