in reply to Re^2: Perl Database Entries
in thread Perl Database Entries

If i were doing it, i'd skip curl and use LWP, then JSON

As that may turn out to be too much for you you might want to skip jg. at least. Something like

$api_results=`curl -H "Authorization: token 5FEFAQ1W4" https://www.b +om/api/v2/organizations/company/admin/groups/"$groid"/installations?p +age=1`; use JSON; my $json=new JSON; my $unjson=$json->allow_nonref->decode($api_results); $app_insert = $dbh->prepare("INSERT IGNORE INTO apps(id, app_slug, a +pp_Name, provider_id, provider_slug, provider_saml, config_saml, conf +ig_login, config_url, created_date, status, key_vault, mfa_code) VALU +ES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?") or die $dbh->errstr; for my $row (@$unjson) { my @insert; for my $var (qw/.id .slug .name .provider.id .provider.name .provider.capabilities.has_saml .configuration.sam +l .configuration.login .configuration.install_type .created .keyvault .requires_mfa_code /){ push @insert,$row->{$var}; } # var $app_insert->execute(@api) or die $app_insert->errstr; } # row

Replies are listed 'Best First'.
Re^4: Perl Database Entries
by cbtshare (Monk) on Jul 16, 2017 at 05:23 UTC

    $api_results contents are below 100442,"spredfast-tim-hortons","Spredfast - Tim Hortons",5561,"Spredfa +st",false,false,"timhortons@icuc.social","https://www.spredfast.com", +"2017-03-03T09:52:30.440-08:00","active",false,false,"shared"

    My new code is below

    use JSON; my $json=new JSON; my @unjson=$json->allow_nonref->decode($api_results); $app_insert = $dbh->prepare("INSERT INTO bitium_apps(id, app_slug, ap +p_Name, team_id, provider_id, provider_slug, provider_saml, config_saml, confi +g_login, config_url, created_date, status, key_vault, mfa_code, configuration_i +nstall) VALUES (?, ?, ?, \"$response\", ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?") o +r die $dbh->errst$ for my $row (@unjson) { my @insert; for my $var (qw/.id, .slug, .name, .provider.id, .provider.name, .provider.capabilities.has_saml, .configuration.sa +ml, .configuration.login, .configuration.url, .created +_at, .status, .key_vault, .requires_mfa_code, .configur +ation.install_type /){ push @insert,$row->{$var}; } # var $app_insert->execute(@insert[0,1,2,4 .. 15]) or die $app_insert->e +rrstr; } # row

    But I get the following error: garbage after JSON object, at character offset 7 (before ""spredfast-tim-horto...") at bitium.pl line 69. line 69 is my @unjson=$json->allow_nonref->decode($api_results);

      what did you assign to $api_results? Remember my line dropped the pipe into jg, what you showed us above is not json

        Yes sorry about that, my api_results variable has
        {"id":1084,"slug":"twitter-sportchek","name":"Twitter - SportChek","pr +ovider":{"id":44,"slug":"twitter","name":"Twitter - Shared","access_t +ype_cd":null,"login_method":"spider","launch_timeout":45,"capabilitie +s":{"has_import":false,"has_password_reset":true,"has_provision":fals +e,"has_saml":false,"has_sync":false,"unsupported_browsers":[],"servic +es":"authenticatable","auth_or_directory":false,"has_ou":false},"icon +s":{"small":"https://am.com/a/images/apps/twitter_sm.png","large":"ht +tps://assets.bitium.com/a/images/apps/twitter_lg.png","color_code":"7 +c8d95","first_letter":"t"}},"configuration":{"saml":false,"login":rtc +hek","url":"https://twier.com","extra":null,"install_type":"shared"," +authentication_type":"browser","launch_method":"get","namespace":["tw +itter.com"]},"labels":[],"created_at":"2017-06-09T23:22:15.571-07:00" +,"status":"active","key_vault":false,"requires_mfa_code":false},{"id" +:109291,"slug":"rei-spredfast","name":"REI - Spredfast","provider":{" +id":5561,"slug":"spredfast","name":"Spredfast","access_type_cd":null, +"login_method":"spider","launch_timeout":45,"capabilities":{"has_impo +rt":false,"has_password_reset":false,"has_provision":false,"has_saml" +:false,"has_sync":false,"unsupported_browsers":[],"services":"authent +icatable","auth_or_directory":false,"has_ou":false},"icons":{"small": +"https://assom/a/images/apps/spredfast_sm.png","large":"https://asset +s.bitium.com/a/images/apps/spredfast_lg.png","color_code":"65c6bb","f +irst_letter":"s"}},"configuration":{"saml":false,"login":"reiteamocia +l","url":"https://www.spredfast.com","extra":null,"install_type":"sha +red","authentication_type":"browser","launch_method":"get","namespace +":["www.spredfast.com"]},"labels":[],"created_at":"2017-06-19T12:33:3 +3.561-07:00","status":"active","key_vault":false,"requires_mfa_code": +false}]

        But after running the code I am getting the error Not a HASH reference at line 79, <> line 2. line 79 is push @insert,$row->{$var};

Re^4: Perl Database Entries
by cbtshare (Monk) on Jul 15, 2017 at 14:45 UTC
    ok thank you, just from the reading of your code I presume the last line is meant to be (untested)
    $app_insert->execute(@insert) or die $app_insert->errstr; } # row
    I will try this solution as well