3scale-api 0.4.0 → 1.2.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: a193e21d894bbcbc922ecce719af6737c68b71e77ebee260ad4de038bf6676de
4
- data.tar.gz: 7b2d0644e45a953242a700f950b268dec38d719e73c5619bef14961bc13ea672
3
+ metadata.gz: ea3ac51993c3762a0a40625807148fdba4dbf390aa032bc97183f660220bf410
4
+ data.tar.gz: 3f5c198b2fbe44894007990f4f7e6d926400c4f89597acf9533a281c2fb77cd7
5
5
  SHA512:
6
- metadata.gz: e0e2b6d70e63fb1c1a4965178ba99f4ffe9cfc93f89404e4123364dc50fad56b37d89bf05243998854dd43bcefb1d93806eb0a88b32ae7b0040e7e35a38f5af0
7
- data.tar.gz: 0de8726e6eed9011f1fe694b46a1e2b242040d137b430259b6b1d31ccc58c4a02a01a6eb969ea46c32a4764d58d74ef2bcf159b04f670fb94ba73750d0f5bc06
6
+ metadata.gz: a5e4aff97c1716b24cdd5ba27385cf2babe88183dcc4894fcad0ca0df3e03df150e77fb80ff01485cca4bea47c4f6bade61a8c31aebdac8bd312aede6799af29
7
+ data.tar.gz: 2b86b756c210e5cc8270279d9f8ae258624ae6656594864d63d082b492b91b76e4c62a822ae6654243ba4585565acf6055906327303f71ec6e915b6603f22a16
@@ -1,4 +1,5 @@
1
1
  require '3scale/api/version'
2
+ require '3scale/api/errors'
2
3
 
3
4
  module ThreeScale
4
5
  module API
@@ -32,10 +32,11 @@ module ThreeScale
32
32
  end
33
33
 
34
34
  # @api public
35
- # @return [Array<Hash>]
36
35
  # @param [Fixnum] service_id Service ID
37
- def list_applications(service_id: nil)
38
- params = service_id ? { service_id: service_id } : nil
36
+ # @param [Fixnum] plan_id Application Plan ID
37
+ # @return [Array<Hash>]
38
+ def list_applications(service_id: nil, plan_id: nil)
39
+ params = { service_id: service_id, plan_id: plan_id }.compact
39
40
  response = http_client.get('/admin/api/applications', params: params)
40
41
  extract(collection: 'applications', entity: 'application', from: response)
41
42
  end
@@ -52,8 +53,13 @@ module ThreeScale
52
53
  # @param [Fixnum] id Application ID
53
54
  # @param [String] user_key Application User Key
54
55
  # @param [String] application_id Application app_id
55
- def find_application(id: nil, user_key: nil, application_id: nil)
56
- params = { application_id: id, user_key: user_key, app_id: application_id }.reject { |_, value| value.nil? }
56
+ def find_application(id: nil, user_key: nil, application_id: nil, service_id: nil)
57
+ params = {
58
+ application_id: id,
59
+ user_key: user_key,
60
+ app_id: application_id,
61
+ service_id: service_id,
62
+ }.compact
57
63
  response = http_client.get('/admin/api/applications/find', params: params)
58
64
  extract(entity: 'application', from: response)
59
65
  end
@@ -73,6 +79,16 @@ module ThreeScale
73
79
  extract(entity: 'application', from: response)
74
80
  end
75
81
 
82
+ # @api public
83
+ # @param [Fixnum] account_id Account ID
84
+ # @param [Fixnum] id Application ID
85
+ # @param [Hash] attrs Application Attributes
86
+ # @return [Hash] an Application
87
+ def update_application(account_id, id, attrs)
88
+ response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{id}", body: attrs)
89
+ extract(entity: 'application', from: response)
90
+ end
91
+
76
92
  # @api public
77
93
  # @return [Hash] a Plan
78
94
  # @param [Fixnum] account_id Account ID
@@ -139,18 +155,40 @@ module ThreeScale
139
155
  # @return [Hash]
140
156
  # @param [Fixnum] service_id Service ID
141
157
  # @param [String] environment. Must be 'sandbox' or 'production'
142
- def proxy_config_list(service_id, environment='sandbox')
158
+ def proxy_config_list(service_id, environment = 'sandbox')
143
159
  response = http_client.get("/admin/api/services/#{service_id}/proxy/configs/#{environment}")
144
- extract(entity: 'proxy', from: response)
160
+ extract(collection: 'proxy_configs', entity: 'proxy_config', from: response)
145
161
  end
146
162
 
147
163
  # @api public
148
164
  # @return [Hash]
149
165
  # @param [Fixnum] service_id Service ID
150
166
  # @param [String] environment. Must be 'sandbox' or 'production'
151
- def proxy_config_latest(service_id, environment='sandbox')
167
+ def proxy_config_latest(service_id, environment = 'sandbox')
152
168
  response = http_client.get("/admin/api/services/#{service_id}/proxy/configs/#{environment}/latest")
153
- extract(entity: 'proxy', from: response)
169
+ extract(entity: 'proxy_config', from: response)
170
+ end
171
+
172
+ # @api public
173
+ # @return [Hash]
174
+ # @param [Fixnum] service_id Service ID
175
+ # @param [String] environment. Must be 'sandbox' or 'production'
176
+ # @param [Fixnum] version Proxy configuration version
177
+ def show_proxy_config(service_id, environment, version)
178
+ response = http_client.get("/admin/api/services/#{service_id}/proxy/configs/#{environment}/#{version}")
179
+ extract(entity: 'proxy_config', from: response)
180
+ end
181
+
182
+ # @api public
183
+ # @return [Hash]
184
+ # @param [Fixnum] service_id Service ID
185
+ # @param [String] environment Must be 'sandbox' or 'production'
186
+ # @param [Fixnum] version Version to promote
187
+ # @param [Fixnum] to To which the specified proxy configuration will be promoted to
188
+ def promote_proxy_config(service_id, environment, version, to)
189
+ response = http_client.post("/admin/api/services/#{service_id}/proxy/configs/#{environment}/#{version}/promote",
190
+ body: { to: to })
191
+ extract(entity: 'proxy_config', from: response)
154
192
  end
155
193
 
156
194
  # @api public
@@ -219,7 +257,7 @@ module ThreeScale
219
257
 
220
258
  # @api public
221
259
  # @param [Fixnum] service_id Service ID
222
- # @param [Fixnum] id Metric ID
260
+ # @param [Fixnum] id Metric ID
223
261
  # @return [Hash]
224
262
  def show_metric(service_id, id)
225
263
  response = http_client.get("/admin/api/services/#{service_id}/metrics/#{id}")
@@ -269,8 +307,8 @@ module ThreeScale
269
307
 
270
308
  # @api public
271
309
  # @param [Fixnum] service_id Service ID
272
- # @param [Fixnum] id Parent metric ID
273
- # @param [Fixnum] id Method ID
310
+ # @param [Fixnum] parent_id Parent metric ID
311
+ # @param [Fixnum] id Method ID
274
312
  # @return [Hash]
275
313
  def show_method(service_id, parent_id, id)
276
314
  response = http_client.get("/admin/api/services/#{service_id}/metrics/#{parent_id}/methods/#{id}")
@@ -280,7 +318,7 @@ module ThreeScale
280
318
  # @api public
281
319
  # @return [Hash]
282
320
  # @param [Fixnum] service_id Service ID
283
- # @param [Fixnum] parent_id Parent metric ID
321
+ # @param [Fixnum] parent_id Parent metric ID
284
322
  # @param [Fixnum] id Method ID
285
323
  # @param [Hash] attributes Method Attributes
286
324
  def update_method(service_id, parent_id, id, attributes)
@@ -313,14 +351,13 @@ module ThreeScale
313
351
  # @api public
314
352
  # @return [Bool]
315
353
  # @param [Fixnum] service_id Service ID
316
- # @param [Fixnum] parent_id Parent metric ID
317
- # @param [Fixnum] metric_id Metric ID
354
+ # @param [Fixnum] parent_id Parent metric ID
355
+ # @param [Fixnum] id Metric ID
318
356
  def delete_method(service_id, parent_id, id)
319
357
  http_client.delete("/admin/api/services/#{service_id}/metrics/#{parent_id}/methods/#{id}")
320
358
  true
321
359
  end
322
360
 
323
-
324
361
  # @api public
325
362
  # @param [Fixnum] application_plan_id Application Plan ID
326
363
  # @param [Fixnum] metric_id Metric ID
@@ -351,7 +388,7 @@ module ThreeScale
351
388
  end
352
389
 
353
390
  # @api public
354
- # @param [Fixnum] id Service ID
391
+ # @param [Fixnum] service_id Service ID
355
392
  # @param [Fixnum] id Application Plan ID
356
393
  # @return [Hash]
357
394
  def show_application_plan(service_id, id)
@@ -374,7 +411,7 @@ module ThreeScale
374
411
  # @return [Bool]
375
412
  # @param [Fixnum] service_id Service ID
376
413
  # @param [Fixnum] application_plan_id Application Plan ID
377
- def delete_application_plan(service_id,application_plan_id)
414
+ def delete_application_plan(service_id, application_plan_id)
378
415
  http_client.delete("/admin/api/services/#{service_id}/application_plans/#{application_plan_id}")
379
416
  true
380
417
  end
@@ -416,7 +453,7 @@ module ThreeScale
416
453
  # @param [Hash] attributes Limit Attributes
417
454
  def update_application_plan_limit(application_plan_id, metric_id, limit_id, attributes)
418
455
  response = http_client.put("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/limits/#{limit_id}",
419
- body: { usage_limit: attributes })
456
+ body: { usage_limit: attributes })
420
457
  extract(entity: 'limit', from: response)
421
458
  end
422
459
 
@@ -429,13 +466,21 @@ module ThreeScale
429
466
  end
430
467
 
431
468
  # @api public
432
- # @param [Hash] account criteria
469
+ # @param [Hash] criteria Search parameters
433
470
  # @return [Hash]
434
471
  def find_account(criteria)
435
472
  response = http_client.get('/admin/api/accounts/find', params: criteria)
436
473
  extract(entity: 'account', from: response)
437
474
  end
438
475
 
476
+ # @api public
477
+ # @param [Fixnum] id Account Id
478
+ # @return [Hash]
479
+ def show_account(id)
480
+ response = http_client.get("/admin/api/accounts/#{id}")
481
+ extract(entity: 'account', from: response)
482
+ end
483
+
439
484
  # @api public
440
485
  # @return [Array]
441
486
  # @param [Fixnum] id Service ID
@@ -477,6 +522,16 @@ module ThreeScale
477
522
  extract(entity: 'pricing_rule', from: response)
478
523
  end
479
524
 
525
+ # @api public
526
+ # @param [Fixnum] application_plan_id Application Plan ID
527
+ # @param [Fixnum] metric_id Metric ID
528
+ # @param [Fixnum] id Rule ID
529
+ # @return [Bool]
530
+ def delete_application_plan_pricingrule(application_plan_id, metric_id, id)
531
+ http_client.delete("/admin/api/application_plans/#{application_plan_id}/metrics/#{metric_id}/pricing_rules/#{id}")
532
+ true
533
+ end
534
+
480
535
  # @api public
481
536
  # @return [Array<Hash>]
482
537
  def list_activedocs
@@ -516,7 +571,7 @@ module ThreeScale
516
571
  end
517
572
 
518
573
  # @api public
519
- # @param [Fixnum] account_id Account ID
574
+ # @param [Fixnum] id Account ID
520
575
  # @return [Bool]
521
576
  def delete_account(id)
522
577
  http_client.delete("/admin/api/accounts/#{id}")
@@ -525,15 +580,15 @@ module ThreeScale
525
580
 
526
581
  # @api public
527
582
  # @param [Fixnum] account_id Account ID
528
- # @param [Fixnum] application_id Application ID
583
+ # @param [Fixnum] id Application ID
529
584
  # @return [Bool]
530
585
  def delete_application(account_id, id)
531
586
  http_client.delete("/admin/api/accounts/#{account_id}/applications/#{id}")
532
587
  true
533
588
  end
534
589
 
535
- # @api public
536
- # @param [Fixnum] id Service ID
590
+ # @api public
591
+ # @param [Fixnum] service_id Service ID
537
592
  # @return [Array<Hash>]
538
593
  def show_oidc(service_id)
539
594
  response = http_client.get("/admin/api/services/#{service_id}/proxy/oidc_configuration")
@@ -541,7 +596,7 @@ module ThreeScale
541
596
  end
542
597
 
543
598
  # @api public
544
- # @param [Fixnum] id Service ID
599
+ # @param [Fixnum] service_id Service ID
545
600
  # @return [Hash]
546
601
  def update_oidc(service_id, attributes)
547
602
  response = http_client.patch("/admin/api/services/#{service_id}/proxy/oidc_configuration",
@@ -590,7 +645,7 @@ module ThreeScale
590
645
  # @return [Hash]
591
646
  def create_service_feature(id, attributes)
592
647
  response = http_client.post("/admin/api/services/#{id}/features",
593
- body: { feature: attributes})
648
+ body: { feature: attributes })
594
649
  extract(entity: 'feature', from: response)
595
650
  end
596
651
 
@@ -623,6 +678,380 @@ module ThreeScale
623
678
  true
624
679
  end
625
680
 
681
+ # @api public
682
+ # @param [Fixnum] account_id Account ID
683
+ # @param [String] state State
684
+ # @param [String] role Role
685
+ # @return [Array<Hash>]
686
+ def list_users(account_id, state: nil, role: nil)
687
+ params = { state: state, role: role }.reject { |_, value| value.nil? }
688
+ response = http_client.get("/admin/api/accounts/#{account_id}/users", params: params)
689
+ extract(collection: 'users', entity: 'user', from: response)
690
+ end
691
+
692
+ # @api public
693
+ # @param [String] account_id Account ID
694
+ # @param [String] email User email
695
+ # @param [String] username User Username
696
+ # @param [String] password User password
697
+ # @param [Hash] attributes User Attributes
698
+ # @return [Hash]
699
+ def create_user(account_id:, email:, username:, password:, **rest)
700
+ body = { email: email, username: username, password: password }.merge(rest)
701
+ response = http_client.post("/admin/api/accounts/#{account_id}/users", body: body)
702
+ extract(entity: 'user', from: response)
703
+ end
704
+
705
+ # @api public
706
+ # @param [String] account_id Account ID
707
+ # @param [String] user_id User ID
708
+ # @return [Hash]
709
+ def activate_user(account_id, user_id)
710
+ response = http_client.put("/admin/api/accounts/#{account_id}/users/#{user_id}/activate")
711
+ extract(entity: 'user', from: response)
712
+ end
713
+
714
+ # @api public
715
+ # @param [String] account_id Account ID
716
+ # @return [Hash]
717
+ def approve_account(account_id)
718
+ response = http_client.put("/admin/api/accounts/#{account_id}/approve")
719
+ extract(entity: 'account', from: response)
720
+ end
721
+
722
+ # @api public
723
+ # @param [String] account_id Account ID
724
+ # @return [Array<Hash>]
725
+ def list_account_applications(account_id)
726
+ response = http_client.get("/admin/api/accounts/#{account_id}/applications")
727
+ extract(collection: 'applications', entity: 'application', from: response)
728
+ end
729
+
730
+ # @api public
731
+ # @return [Array<Hash]
732
+ def list_application_plans
733
+ response = http_client.get("/admin/api/application_plans")
734
+ extract(collection: 'plans', entity: 'application_plan', from: response)
735
+ end
736
+
737
+ # @api public
738
+ # @param [String] account_id Account ID
739
+ # @param [String] application_id Application ID
740
+ # @return [Array<Hash>]
741
+ def list_application_keys(account_id, application_id)
742
+ response = http_client.get("/admin/api/accounts/#{account_id}/applications/#{application_id}/keys")
743
+ extract(collection: 'keys', entity: 'key', from: response)
744
+ end
745
+
746
+ # @api public
747
+ # @param [String] account_id Account ID
748
+ # @param [String] application_id Application ID
749
+ # @param [String] key Key
750
+ # @return [Hash]
751
+ def create_application_key(account_id, application_id, key)
752
+ response = http_client.post("/admin/api/accounts/#{account_id}/applications/#{application_id}/keys", body: {key: key})
753
+ extract(entity: 'application', from: response)
754
+ end
755
+
756
+ # @api public
757
+ # @param [String] account_id Account ID
758
+ # @param [String] application_id Application ID
759
+ # @return [Hash] application Application
760
+ def accept_application(account_id, application_id)
761
+ response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{application_id}/accept")
762
+ extract(entity: 'application', from: response)
763
+ end
764
+
765
+ # @api public
766
+ # @param [String] account_id Account ID
767
+ # @param [String] application_id Application ID
768
+ # @return [Hash] application Application
769
+ def suspend_application(account_id, application_id)
770
+ response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{application_id}/suspend")
771
+ extract(entity: 'application', from: response)
772
+ end
773
+
774
+ # @api public
775
+ # @param [String] account_id Account ID
776
+ # @param [String] application_id Application ID
777
+ # @return [Hash] application Application
778
+ def resume_application(account_id, application_id)
779
+ response = http_client.put("/admin/api/accounts/#{account_id}/applications/#{application_id}/resume")
780
+ extract(entity: 'application', from: response)
781
+ end
782
+
783
+ # @api public
784
+ # @return [Array<Hash>]
785
+ def list_policy_registry
786
+ response = http_client.get('/admin/api/registry/policies')
787
+ extract(collection: 'policies', entity: 'policy', from: response)
788
+ end
789
+
790
+ # @api public
791
+ # @param [Hash] attributes Policy Registry Attributes
792
+ # @return [Hash]
793
+ def create_policy_registry(attributes)
794
+ response = http_client.post('/admin/api/registry/policies', body: attributes)
795
+ extract(entity: 'policy', from: response)
796
+ end
797
+
798
+ # @api public
799
+ # @return [Hash]
800
+ # @param [Fixnum] id Policy Registry Id
801
+ def show_policy_registry(id)
802
+ response = http_client.get("/admin/api/registry/policies/#{id}")
803
+ extract(entity: 'policy', from: response)
804
+ end
805
+
806
+ # @api public
807
+ # @return [Hash]
808
+ # @param [Fixnum] id Policy Registry Id
809
+ # @param [Hash] attributes Policy Registry Attributes
810
+ def update_policy_registry(id, attributes)
811
+ response = http_client.put("/admin/api/registry/policies/#{id}", body: attributes)
812
+ extract(entity: 'policy', from: response)
813
+ end
814
+
815
+ # @api public
816
+ # @param [Fixnum] id Policy Registry Id
817
+ def delete_policy_registry(id)
818
+ http_client.delete("/admin/api/registry/policies/#{id}")
819
+ true
820
+ end
821
+
822
+ # @api public
823
+ # @return [Hash]
824
+ def show_provider
825
+ response = http_client.get('/admin/api/provider')
826
+ extract(entity: 'account', from: response)
827
+ end
828
+
829
+ # @api public
830
+ # @return [List]
831
+ def list_backends
832
+ response = http_client.get('/admin/api/backend_apis')
833
+ extract(collection: 'backend_apis', entity: 'backend_api', from: response)
834
+ end
835
+
836
+ # @api public
837
+ # @param [Hash] attributes Backend attributes
838
+ # @return [Hash]
839
+ def create_backend(attributes)
840
+ response = http_client.post('/admin/api/backend_apis', body: attributes)
841
+ extract(entity: 'backend_api', from: response)
842
+ end
843
+
844
+ # @api public
845
+ # @param [Fixnum] id Backend ID
846
+ def delete_backend(id)
847
+ http_client.delete("/admin/api/backend_apis/#{id}")
848
+ true
849
+ end
850
+
851
+ # @api public
852
+ # @param [Fixnum] id Backend ID
853
+ # @return [Hash]
854
+ def backend(id)
855
+ response = http_client.get("/admin/api/backend_apis/#{id}")
856
+ extract(entity: 'backend_api', from: response)
857
+ end
858
+
859
+ # @api public
860
+ # @param [Fixnum] id Backend ID
861
+ # @param [Hash] attributes Backend attributes
862
+ # @return [Hash]
863
+ def update_backend(id, attributes)
864
+ response = http_client.put("/admin/api/backend_apis/#{id}", body: attributes)
865
+ extract(entity: 'backend_api', from: response)
866
+ end
867
+
868
+ # @api public
869
+ # @param [Fixnum] id Backend ID
870
+ # @return [List]
871
+ def list_backend_metrics(id)
872
+ response = http_client.get("/admin/api/backend_apis/#{id}/metrics")
873
+ extract(collection: 'metrics', entity: 'metric', from: response)
874
+ end
875
+
876
+ # @api public
877
+ # @param [Fixnum] id Backend ID
878
+ # @param [Hash] attributes Metric attributes
879
+ # @return [Hash]
880
+ def create_backend_metric(id, attrs)
881
+ response = http_client.post("/admin/api/backend_apis/#{id}/metrics", body: attrs)
882
+ extract(entity: 'metric', from: response)
883
+ end
884
+
885
+ # @api public
886
+ # @param [Fixnum] backend_id Backend ID
887
+ # @param [Fixnum] metric_id Backend Metric ID
888
+ def delete_backend_metric(backend_id, metric_id)
889
+ http_client.delete("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}")
890
+ true
891
+ end
892
+
893
+ # @api public
894
+ # @param [Fixnum] backend_id Backend ID
895
+ # @param [Fixnum] metric_id Backend Metric ID
896
+ # @return [Hash]
897
+ def backend_metric(backend_id, metric_id)
898
+ response = http_client.get("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}")
899
+ extract(entity: 'metric', from: response)
900
+ end
901
+
902
+ # @api public
903
+ # @param [Fixnum] backend_id Backend ID
904
+ # @param [Fixnum] metric_id Backend Metric ID
905
+ # @param [Hash] attributes Backend attributes
906
+ # @return [Hash]
907
+ def update_backend_metric(backend_id, metric_id, attributes)
908
+ response = http_client.put("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}", body: attributes)
909
+ extract(entity: 'metric', from: response)
910
+ end
911
+
912
+ # @api public
913
+ # @param [Fixnum] backend_id Backend ID
914
+ # @param [Fixnum] metric_id Backend Metric ID
915
+ # @return [List]
916
+ def list_backend_methods(backend_id, metric_id)
917
+ response = http_client.get("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}/methods")
918
+ extract(collection: 'methods', entity: 'method', from: response)
919
+ end
920
+
921
+ # @api public
922
+ # @param [Fixnum] backend_id Backend ID
923
+ # @param [Fixnum] metric_id Backend Metric ID
924
+ # @param [Hash] attributes Metric attributes
925
+ # @return [Hash]
926
+ def create_backend_method(backend_id, metric_id, attrs)
927
+ response = http_client.post("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}/methods",
928
+ body: attrs)
929
+ extract(entity: 'method', from: response)
930
+ end
931
+
932
+ # @api public
933
+ # @param [Fixnum] backend_id Backend ID
934
+ # @param [Fixnum] metric_id Backend Metric ID
935
+ # @param [Fixnum] method_id Backend Method ID
936
+ def delete_backend_method(backend_id, metric_id, method_id)
937
+ http_client.delete("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}/methods/#{method_id}")
938
+ true
939
+ end
940
+
941
+ # @api public
942
+ # @param [Fixnum] backend_id Backend ID
943
+ # @param [Fixnum] metric_id Backend Metric ID
944
+ # @param [Fixnum] method_id Backend Method ID
945
+ # @return [Hash]
946
+ def backend_method(backend_id, metric_id, method_id)
947
+ response = http_client.get("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}/methods/#{method_id}")
948
+ extract(entity: 'method', from: response)
949
+ end
950
+
951
+ # @api public
952
+ # @param [Fixnum] backend_id Backend ID
953
+ # @param [Fixnum] metric_id Backend Metric ID
954
+ # @param [Fixnum] method_id Backend Method ID
955
+ # @param [Hash] attributes Backend attributes
956
+ # @return [Hash]
957
+ def update_backend_method(backend_id, metric_id, method_id, attributes)
958
+ response = http_client.put("/admin/api/backend_apis/#{backend_id}/metrics/#{metric_id}/methods/#{method_id}",
959
+ body: attributes)
960
+ extract(entity: 'method', from: response)
961
+ end
962
+
963
+ # @api public
964
+ # @param [Fixnum] backend_id Backend ID
965
+ # @return [List]
966
+ def list_backend_mapping_rules(backend_id)
967
+ response = http_client.get("/admin/api/backend_apis/#{backend_id}/mapping_rules")
968
+ extract(collection: 'mapping_rules', entity: 'mapping_rule', from: response)
969
+ end
970
+
971
+ # @api public
972
+ # @param [Fixnum] backend_id Backend ID
973
+ # @param [Hash] attrs Metric attributes
974
+ # @return [Hash]
975
+ def create_backend_mapping_rule(backend_id, attrs)
976
+ response = http_client.post("/admin/api/backend_apis/#{backend_id}/mapping_rules",
977
+ body: attrs)
978
+ extract(entity: 'mapping_rule', from: response)
979
+ end
980
+
981
+ # @api public
982
+ # @param [Fixnum] backend_id Backend ID
983
+ # @param [Fixnum] mapping_rule_id MappingRule ID
984
+ def delete_backend_mapping_rule(backend_id, mapping_rule_id)
985
+ http_client.delete("/admin/api/backend_apis/#{backend_id}/mapping_rules/#{mapping_rule_id}")
986
+ true
987
+ end
988
+
989
+ # @api public
990
+ # @param [Fixnum] backend_id Backend ID
991
+ # @param [Fixnum] mapping_rule_id MappingRule ID
992
+ # @return [Hash]
993
+ def backend_mapping_rule(backend_id, mapping_rule_id)
994
+ response = http_client.get("/admin/api/backend_apis/#{backend_id}/mapping_rules/#{mapping_rule_id}")
995
+ extract(entity: 'mapping_rule', from: response)
996
+ end
997
+
998
+ # @api public
999
+ # @param [Fixnum] backend_id Backend ID
1000
+ # @param [Fixnum] mapping_rule_id MappingRule ID
1001
+ # @param [Hash] attributes Backend attributes
1002
+ # @return [Hash]
1003
+ def update_backend_mapping_rule(backend_id, mapping_rule_id, attributes)
1004
+ response = http_client.put("/admin/api/backend_apis/#{backend_id}/mapping_rules/#{mapping_rule_id}",
1005
+ body: attributes)
1006
+ extract(entity: 'mapping_rule', from: response)
1007
+ end
1008
+
1009
+ # @api public
1010
+ # @param [Fixnum] product_id Product ID
1011
+ # @return [List]
1012
+ def list_backend_usages(product_id)
1013
+ response = http_client.get("/admin/api/services/#{product_id}/backend_usages")
1014
+ extract(entity: 'backend_usage', from: response)
1015
+ end
1016
+
1017
+ # @api public
1018
+ # @param [Fixnum] product_id Product ID
1019
+ # @param [Hash] attrs Backend Usage attributes
1020
+ # @return [Hash]
1021
+ def create_backend_usage(product_id, attrs)
1022
+ response = http_client.post("/admin/api/services/#{product_id}/backend_usages",
1023
+ body: attrs)
1024
+ extract(entity: 'backend_usage', from: response)
1025
+ end
1026
+
1027
+ # @api public
1028
+ # @param [Fixnum] product_id Product ID
1029
+ # @param [Fixnum] id Backend Usage ID
1030
+ def delete_backend_usage(product_id, id)
1031
+ http_client.delete("/admin/api/services/#{product_id}/backend_usages/#{id}")
1032
+ true
1033
+ end
1034
+
1035
+ # @api public
1036
+ # @param [Fixnum] product_id Product ID
1037
+ # @param [Fixnum] id Backend Usage ID
1038
+ # @return [Hash]
1039
+ def backend_usage(product_id, id)
1040
+ response = http_client.get("/admin/api/services/#{product_id}/backend_usages/#{id}")
1041
+ extract(entity: 'backend_usage', from: response)
1042
+ end
1043
+
1044
+ # @api public
1045
+ # @param [Fixnum] product_id Product ID
1046
+ # @param [Fixnum] id Backend Usage ID
1047
+ # @param [Hash] attrs Backend Usage attributes
1048
+ # @return [Hash]
1049
+ def update_backend_usage(product_id, id, attrs)
1050
+ response = http_client.put("/admin/api/services/#{product_id}/backend_usages/#{id}",
1051
+ body: attrs)
1052
+ extract(entity: 'backend_usage', from: response)
1053
+ end
1054
+
626
1055
  protected
627
1056
 
628
1057
  def extract(collection: nil, entity:, from:)
@@ -0,0 +1,12 @@
1
+ module ThreeScale
2
+ module API
3
+ class ResponseError < StandardError
4
+ attr_reader :response
5
+
6
+ def initialize(response, message = response.to_s)
7
+ super(message)
8
+ @response = response
9
+ end
10
+ end
11
+ end
12
+ end
@@ -58,26 +58,32 @@ module ThreeScale
58
58
  when Net::HTTPUnprocessableEntity, Net::HTTPSuccess then parser.decode(response.body)
59
59
  when Net::HTTPForbidden then forbidden!(response)
60
60
  when Net::HTTPNotFound then notfound!(response)
61
- else unexpected!(response.inspect)
61
+ else unexpected!(response)
62
62
  end
63
63
  end
64
64
 
65
- class ForbiddenError < StandardError; end
65
+ class ForbiddenError < ResponseError; end
66
66
 
67
- class UnexpectedResponseError < StandardError; end
67
+ class UnexpectedResponseError < ResponseError; end
68
68
 
69
- class NotFoundError < StandardError; end
69
+ class NotFoundError < ResponseError; end
70
+
71
+ class UnknownFormatError < StandardError; end
70
72
 
71
73
  def forbidden!(response)
72
- raise ForbiddenError, response
74
+ raise ForbiddenError.new(response, format_response(response))
73
75
  end
74
76
 
75
77
  def notfound!(response)
76
- raise NotFoundError, response
78
+ raise NotFoundError.new(response, format_response(response))
77
79
  end
78
80
 
79
81
  def unexpected!(response)
80
- raise UnexpectedResponseError, response
82
+ raise UnexpectedResponseError.new(response, format_response(response))
83
+ end
84
+
85
+ def unknownformat!
86
+ raise UnknownFormatError, "unknown format #{format}"
81
87
  end
82
88
 
83
89
  def serialize(body)
@@ -91,7 +97,7 @@ module ThreeScale
91
97
  def parser
92
98
  case format
93
99
  when :json then JSONParser
94
- else "unknown format #{format}"
100
+ else unknownformat!
95
101
  end
96
102
  end
97
103
 
@@ -108,6 +114,16 @@ module ThreeScale
108
114
  path
109
115
  end
110
116
 
117
+ def format_response(response)
118
+ body = response.body if text_based?(response)
119
+ "#{response.inspect} body=#{body}"
120
+ end
121
+
122
+ def text_based?(response)
123
+ response.content_type =~ /^text/ ||
124
+ response.content_type =~ /^application/ && !['application/octet-stream', 'application/pdf'].include?(response.content_type)
125
+ end
126
+
111
127
  module JSONParser
112
128
  module_function
113
129
 
@@ -1,5 +1,5 @@
1
1
  module ThreeScale
2
2
  module API
3
- VERSION = '0.4.0'.freeze
3
+ VERSION = '1.2.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: 3scale-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michal Cichra
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2019-05-13 00:00:00.000000000 Z
12
+ date: 2020-11-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '10.0'
34
+ version: '13.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '10.0'
41
+ version: '13.0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +78,7 @@ files:
78
78
  - README.md
79
79
  - lib/3scale/api.rb
80
80
  - lib/3scale/api/client.rb
81
+ - lib/3scale/api/errors.rb
81
82
  - lib/3scale/api/http_client.rb
82
83
  - lib/3scale/api/version.rb
83
84
  - lib/three_scale/api.rb
@@ -100,8 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
101
  - !ruby/object:Gem::Version
101
102
  version: '0'
102
103
  requirements: []
103
- rubyforge_project:
104
- rubygems_version: 2.7.6
104
+ rubygems_version: 3.1.2
105
105
  signing_key:
106
106
  specification_version: 4
107
107
  summary: API Client for 3scale APIs